trunk/hash/megadriv.xml
r241354 | r241355 | |
17338 | 17338 | |
17339 | 17339 | <software name="madden98"> |
17340 | 17340 | <description>Madden NFL 98 (USA)</description> |
17341 | | <year>1997</year>
|
17342 | | <publisher>Electronic Arts</publisher>
|
17343 | | <part name="cart" interface="megadriv_cart">
|
17344 | | <feature name="slot" value="rom_sram"/>
|
17345 | | <dataarea name="rom" width="16" endianness="big" size="2097152">
|
17346 | | <rom name="madden nfl 98 (usa).bin" size="2097152" crc="e051ea62" sha1="761e0903798a8d0ad9e7ab72e6d2762fc9d366d2" offset="0x000000"/>
|
17347 | | </dataarea>
|
17348 | | <dataarea name="sram" size="65536"> <!-- Size to be confirmed. It does not work without SRAM. -->
|
17349 | | </dataarea>
|
17350 | | </part>
|
17351 | | </software>
|
17352 | | |
| 17341 | <year>1997</year> |
| 17342 | <publisher>Electronic Arts</publisher> |
| 17343 | <part name="cart" interface="megadriv_cart"> |
| 17344 | <dataarea name="rom" width="16" endianness="big" size="2097152"> |
| 17345 | <rom name="madden nfl 98 (usa).bin" size="2097152" crc="e051ea62" sha1="761e0903798a8d0ad9e7ab72e6d2762fc9d366d2" offset="0x000000"/> |
| 17346 | </dataarea> |
| 17347 | </part> |
| 17348 | </software> |
| 17349 | |
17353 | 17350 | <software name="madoumon"> |
17354 | 17351 | <description>Madou Monogatari I (Jpn)</description> |
17355 | 17352 | <year>1996</year> |
r241354 | r241355 | |
19663 | 19660 | |
19664 | 19661 | <software name="nhl98"> |
19665 | 19662 | <description>NHL 98 (USA)</description> |
19666 | | <year>1997</year>
|
19667 | | <publisher>Electronic Arts</publisher>
|
19668 | | <part name="cart" interface="megadriv_cart">
|
19669 | | <feature name="slot" value="rom_sram"/>
|
19670 | | <dataarea name="rom" width="16" endianness="big" size="2097152">
|
19671 | | <rom name="nhl 98 (usa).bin" size="2097152" crc="7b64cd98" sha1="6771e9b660bde010cf28656cafb70f69249a3591" offset="0x000000"/>
|
19672 | | </dataarea>
|
19673 | | <dataarea name="sram" size="65536"> <!-- Size to be confirmed. It does not work without SRAM. -->
|
19674 | | </dataarea>
|
19675 | | </part>
|
19676 | | </software>
|
19677 | | |
| 19663 | <year>1997</year> |
| 19664 | <publisher>Electronic Arts</publisher> |
| 19665 | <part name="cart" interface="megadriv_cart"> |
| 19666 | <dataarea name="rom" width="16" endianness="big" size="2097152"> |
| 19667 | <rom name="nhl 98 (usa).bin" size="2097152" crc="7b64cd98" sha1="6771e9b660bde010cf28656cafb70f69249a3591" offset="0x000000"/> |
| 19668 | </dataarea> |
| 19669 | </part> |
| 19670 | </software> |
| 19671 | |
19678 | 19672 | <software name="nhlasp03" cloneof="nhlas"> |
19679 | 19673 | <description>NHL All-Star Hockey '95 (Prototype, 19941201-B)</description> |
19680 | 19674 | <year>1994</year> |
r241354 | r241355 | |
30698 | 30692 | |
30699 | 30693 | <software name="nhlpa2k3" cloneof="nhl98"> |
30700 | 30694 | <description>NHLPA 2003 (Rus)</description> |
30701 | | <year>199?</year>
|
30702 | | <publisher><unknown></publisher>
|
30703 | | <part name="cart" interface="megadriv_cart">
|
30704 | | <feature name="slot" value="rom_sram"/>
|
30705 | | <dataarea name="rom" width="16" endianness="big" size="2097152">
|
30706 | | <rom name="nhlpa 2003 (unl).bin" size="2097152" crc="4591571b" sha1="4e6dd50d0f671b89c4ce3f7d1a63ecb68208dc8e" offset="0x000000"/>
|
30707 | | </dataarea>
|
30708 | | <dataarea name="sram" size="65536"> <!-- Size to be confirmed. It does not work without SRAM. -->
|
30709 | | </dataarea>
|
30710 | | </part>
|
30711 | | </software>
|
30712 | | |
| 30695 | <year>199?</year> |
| 30696 | <publisher><unknown></publisher> |
| 30697 | <part name="cart" interface="megadriv_cart"> |
| 30698 | <dataarea name="rom" width="16" endianness="big" size="2097152"> |
| 30699 | <rom name="nhlpa 2003 (unl).bin" size="2097152" crc="4591571b" sha1="4e6dd50d0f671b89c4ce3f7d1a63ecb68208dc8e" offset="0x000000"/> |
| 30700 | </dataarea> |
| 30701 | </part> |
| 30702 | </software> |
| 30703 | |
30713 | 30704 | <software name="pcarib" cloneof="unchartd"> |
30714 | 30705 | <description>Pirates of the Caribbean (Rus)</description> |
30715 | 30706 | <year>199?</year> |
trunk/hash/vsmile_cart.xml
r241354 | r241355 | |
11 | 11 | |
12 | 12 | |
13 | 13 | V.Reader: 80-28**** |
14 | | V.Smile Motion: 80-08**** (Smartridges are orange) |
15 | | V.Smile Smartbook Software: 80-089*** (Smartridges are red) |
16 | | V.Smile: 80-092*** (Smartridges are purple, some are gray because of plastic defects) |
17 | | |
18 | | Addons (w/ yellow Smartridges) |
19 | | V.Smile Smart Keyboard 80-091440 |
20 | | V.Smile PC Pal 80-03600 |
21 | | V.Smile Art Studio 80-67000 |
22 | | V.Smile Jamming Gym Class 80-91320 |
23 | | |
24 | | - Not compatible with V.Smile games, left as documentation |
| 14 | V.Smile Motion: 80-08**** |
| 15 | V.Smile Smartbook Software: 80-089*** |
| 16 | V.Smile: 80-092*** |
25 | 17 | V.Flash (V.Smile Pro): 80-093*** |
26 | 18 | |
27 | 19 | |
r241354 | r241355 | |
93 | 85 | 80-084604(GER) | Cinderella - Lernen im Märchenland |
94 | 86 | 80-084624(GER) | Findet Nemo - Nemos Unterwasserabenteuer |
95 | 87 | |
96 | | |
97 | 88 | 80-089000(US) | Spider-Man & Friends Where is Hulk? |
98 | 89 | 80-089020(US) | Toy Story 2 |
99 | | 80-089040(US) | Dora's Fix It Adventure |
100 | | 80-089060(US) | Scooby-Doo! - A Night of Fright is no Delight |
| 90 | 80-089040(US) | Dora the Explorer |
101 | 91 | |
102 | 92 | 80-090000(US) | Up |
103 | 93 | 80-090000(GER) | Oben |
r241354 | r241355 | |
115 | 105 | 80-092004(GER) | Abenteuer im ABC Park |
116 | 106 | 80-092020(US) | The Adventures of Little Red Riding Hood |
117 | 107 | 80-092024(GER) | Entdecke die Welt von Rotkäppchen |
118 | | 80-092060(US) | Winnie The Pooh: The Honey Hunt |
| 108 | 80-092060(US) | Winnie The Pooh: Honey Hunt |
119 | 109 | 80-092064(GER) | Winnie Puuh - Die Honigjagd |
120 | 110 | 80-092080(US) | Mickey Mouse - Mickey's Magical Adventures |
121 | 111 | 80-092087(SPA) | Mickey - La Aventura Magica de Mickey |
122 | 112 | 80-092084(GER) | Micky - Mickys magisches Abenteuer |
123 | 113 | 80-092100(US) | The Lion King: Simba's Big Adventure |
124 | 114 | 80-092104(GER) | Der König der Löwen - Simbas großes Abenteuer |
125 | | 80-092120(US) | The Little Mermaid - Ariel's Majestic Journey |
| 115 | 80-092120(US) | The Little Mermaid |
126 | 116 | 80-092124(GER) | Arielle die Meerjungfrau - Arielles aufregendes Abenteuer |
127 | 117 | 80-092127(SPA) | La Sirenita - El Vieje Fantástico de Ariel |
128 | 118 | 80-092140(US) | Spider-Man & Friends - Secret Missions |
r241354 | r241355 | |
139 | 129 | 80-092264(GER) | Elmo's großes Abenteuer |
140 | 130 | 80-092265(FRA) | Le Monde d'ELMO - Les Grandes Decouvertes D'Elmo |
141 | 131 | 80-092280(US) | Dora The Explorer |
142 | | 80-092300(US) | Bob the Builder: Bob's Busy Day |
| 132 | 80-092300(US) | Bob the Builder: Bob's busy day |
143 | 133 | 80-092304(GER) | Bob der Baumeister - Achtung Baustelle |
144 | 134 | 80-092320(US) | The Wiggles - It's Wiggle Time! |
145 | 135 | 80-092340(US) | Thomas The Tank: Engines Working Together |
146 | | 80-092340-101(US) | Thomas The Tank: Engines Working Together (ALT) |
147 | 136 | 80-092360(US) | Zayzoo My Alien Classmate |
148 | | 80-092360-101(US) | Zayzoo - An Earth Adventure |
149 | | 80-092380(US) | Barney - The Land of Make Believe |
150 | 137 | 80-092384(GER) | Barney - Erlebnis-Reise |
151 | 138 | 80-092400(US) | Blue's Clues Collection Day |
152 | 139 | 80-092420(US) | Finding Nemo |
r241354 | r241355 | |
156 | 143 | 80-092480(US) | Batman: Gotham City Rescue |
157 | 144 | 80-092500(US) | Whiz Kid Wheels |
158 | 145 | 80-092520(US) | Spider-Man & Friends Doc Ock's Challenge |
159 | | 80-092540(US) | Noddy - Detective for a Day |
| 146 | 80-092540(US) | Noddy |
160 | 147 | 80-092544(GER) | Noddy |
161 | 148 | 80-092564(GER) | 101 Dalmatiner |
162 | | 80-092580(US) | Backyardigans - Viking Voyage |
163 | | 80-092600(US) | Shrek - Dragon's Tale |
| 149 | 80-092580(US) | Backyardigans |
| 150 | 80-092600(US) | Shrek 2 |
164 | 151 | 80-092620(US) | Lil' Bratz - Friends, Fashion and Fun |
165 | | 80-092640(US) | Superman - The Greatest Hero |
| 152 | 80-092640(US) | Superman |
166 | 153 | 80-092660(US) | Cars: Rev It Up In Radiator Springs |
167 | 154 | 80-092662(NL) | Cars - Spektakel in Radiator Springs |
168 | | 80-092666(SPA) | Cars: Acelera El Motor En Radiador Springs |
169 | 155 | 80-092664(GER) | Cars |
170 | 156 | 80-092820(US) | Soccer |
171 | 157 | 80-092824(GER) | Fußball Schule |
r241354 | r241355 | |
175 | 161 | 80-092882(NL) | Ratatouille |
176 | 162 | 80-092884(GER) | Ratatouille - Remys neue Rezepte |
177 | 163 | 80-092885(FRA) | Ratatouille - Les nouvelles recettes de Rémy |
178 | | 80-092900(US) | Go Diego Go - Save the Animal Familes! |
| 164 | 80-092900(US) | Go Diego Go |
179 | 165 | 80-092920(US) | Cranium - Partyland Park |
180 | | 80-092960(US) | Kung Fu Panda - Path of the Panda |
| 166 | 80-092960(US) | Kung Fu Panda |
181 | 167 | 80-092980(US) | Little Einsteins |
182 | 168 | |
183 | 169 | 80-093000(US) | The Crystal Ball Adventure |
trunk/src/emu/video/upd7220.c
r241354 | r241355 | |
33 | 33 | - honor visible area |
34 | 34 | - wide mode (32-bit access) |
35 | 35 | - light pen |
36 | | - dad and mask are the same, in figd dad is shifted every step and when msb or lsb are 1 ead is advanced in x dir |
37 | 36 | |
38 | 37 | */ |
39 | 38 | |
r241354 | r241355 | |
121 | 120 | #define UPD7220_SR_HBLANK_ACTIVE 0x40 |
122 | 121 | #define UPD7220_SR_LIGHT_PEN_DETECT 0x80 |
123 | 122 | |
| 123 | #define UPD7220_MODE_S 0x01 |
124 | 124 | #define UPD7220_MODE_REFRESH_RAM 0x04 |
| 125 | #define UPD7220_MODE_I 0x08 |
125 | 126 | #define UPD7220_MODE_DRAW_ON_RETRACE 0x10 |
126 | 127 | #define UPD7220_MODE_DISPLAY_MASK 0x22 |
127 | 128 | #define UPD7220_MODE_DISPLAY_MIXED 0x00 |
128 | 129 | #define UPD7220_MODE_DISPLAY_GRAPHICS 0x02 |
129 | 130 | #define UPD7220_MODE_DISPLAY_CHARACTER 0x20 |
130 | 131 | #define UPD7220_MODE_DISPLAY_INVALID 0x22 |
131 | | #define UPD7220_MODE_INTERLACE_MASK 0x09 |
132 | | #define UPD7220_MODE_INTERLACE_NONE 0x00 |
133 | | #define UPD7220_MODE_INTERLACE_INVALID 0x01 |
134 | | #define UPD7220_MODE_INTERLACE_REPEAT 0x08 |
135 | | #define UPD7220_MODE_INTERLACE_ON 0x09 |
136 | 132 | |
137 | | |
138 | 133 | static const int x_dir[8] = { 0, 1, 1, 1, 0,-1,-1,-1}; |
139 | 134 | static const int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1}; |
140 | 135 | |
r241354 | r241355 | |
371 | 366 | |
372 | 367 | inline void upd7220_device::recompute_parameters() |
373 | 368 | { |
374 | | int horiz_mult; |
375 | 369 | /* TODO: assume that the pitch also controls number of horizontal pixels in a single cell */ |
376 | | // horiz_mult = 4 if both mixed and interlace? |
377 | | if(((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED) || |
378 | | ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON)) |
379 | | horiz_mult = 8; |
380 | | else |
381 | | horiz_mult = 16; |
382 | | |
383 | | int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult; |
| 370 | int horiz_mult = ((m_pitch == 40) ? 16 : 8); |
| 371 | int horiz_pix_total = (m_hs + m_hbp + m_aw + m_hfp) * horiz_mult; |
384 | 372 | int vert_pix_total = m_vs + m_vbp + m_al + m_vfp; |
385 | 373 | |
386 | 374 | //printf("%d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp); |
r241354 | r241355 | |
389 | 377 | if (horiz_pix_total == 0 || vert_pix_total == 0) //bail out if screen params aren't valid |
390 | 378 | return; |
391 | 379 | |
392 | | attoseconds_t refresh = HZ_TO_ATTOSECONDS(clock() * 8) * horiz_pix_total * vert_pix_total; |
| 380 | attoseconds_t refresh = HZ_TO_ATTOSECONDS(clock() * horiz_mult) * horiz_pix_total * vert_pix_total; |
393 | 381 | |
394 | 382 | rectangle visarea; |
395 | 383 | |
r241354 | r241355 | |
431 | 419 | m_figs.m_d1 = 0x0008; |
432 | 420 | m_figs.m_d2 = 0x0000; |
433 | 421 | m_figs.m_dm = 0x0000; |
434 | | m_figs.m_gd = 0; |
435 | 422 | } |
436 | 423 | |
437 | 424 | |
r241354 | r241355 | |
492 | 479 | |
493 | 480 | result = 0; |
494 | 481 | |
495 | | if(((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_GRAPHICS) || m_figs.m_gd) |
496 | | result = BITSWAP8(m_pr[1],0,1,2,3,4,5,6,7) | (BITSWAP8(m_pr[2],0,1,2,3,4,5,6,7) << 8); |
497 | | else |
498 | | result = m_pr[1] | (m_pr[2] << 8); |
499 | | |
500 | 482 | switch(type) |
501 | 483 | { |
502 | 484 | case 0: |
| 485 | result = (m_pr[1] & 0xff); |
| 486 | result |= (m_pr[2] << 8); |
503 | 487 | result &= m_mask; |
504 | 488 | break; |
505 | 489 | case 2: |
| 490 | result = (m_pr[1] & 0xff); |
506 | 491 | result &= (m_mask & 0xff); |
507 | 492 | break; |
508 | 493 | case 3: |
509 | | result <<= 8; |
| 494 | result = (m_pr[1] << 8); |
510 | 495 | result &= (m_mask & 0xff00); |
511 | 496 | break; |
512 | 497 | } |
r241354 | r241355 | |
775 | 760 | |
776 | 761 | void upd7220_device::draw_pixel(int x, int y, int xi, UINT16 tile_data) |
777 | 762 | { |
778 | | UINT32 addr = ((y * m_pitch * 2) + (x >> 3)) & 0x3ffff; |
| 763 | UINT32 addr = (y * m_pitch * 2 + (x >> 3)) & 0x3ffff; |
779 | 764 | UINT8 data = readbyte(addr); |
780 | 765 | UINT8 new_pixel = (xi & 8 ? tile_data >> 8 : tile_data & 0xff) & (0x80 >> (xi & 7)); |
781 | 766 | new_pixel = new_pixel ? (0xff & (0x80 >> (x & 7))) : 0; |
r241354 | r241355 | |
812 | 797 | UINT16 pattern = (m_ra[8]) | (m_ra[9]<<8); |
813 | 798 | int line_step = 0; |
814 | 799 | |
815 | | LOG(("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d1,m_figs.m_dc,m_bitmap_mod)); |
| 800 | LOG(("uPD7220 line check: %d %d %02x %08x %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d1,m_figs.m_dc)); |
816 | 801 | |
817 | 802 | line_size = m_figs.m_dc; |
818 | 803 | |
r241354 | r241355 | |
830 | 815 | x += (line_step*line_x_step[m_figs.m_dir]); |
831 | 816 | y += (line_step*line_y_step[m_figs.m_dir]); |
832 | 817 | |
833 | | m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd)); |
| 818 | m_ead = (x >> 4) + (y * m_pitch); |
834 | 819 | m_dad = x & 0x0f; |
835 | 820 | } |
836 | 821 | |
r241354 | r241355 | |
895 | 880 | break; |
896 | 881 | } |
897 | 882 | |
898 | | m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd)); |
| 883 | m_ead = (x >> 4) + (y * m_pitch); |
899 | 884 | m_dad = x & 0x0f; |
900 | 885 | } |
901 | 886 | |
r241354 | r241355 | |
950 | 935 | y+=rect_y_dir[rect_dir]; |
951 | 936 | } |
952 | 937 | |
953 | | m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd)); |
| 938 | m_ead = (x >> 4) + (y * m_pitch); |
954 | 939 | m_dad = x & 0x0f; |
955 | 940 | |
956 | 941 | } |
r241354 | r241355 | |
990 | 975 | } |
991 | 976 | } |
992 | 977 | |
993 | | m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd)); |
| 978 | m_ead = (x >> 4) + (y * m_pitch); |
994 | 979 | m_dad = (x & 0xf); |
995 | 980 | } |
996 | 981 | |
r241354 | r241355 | |
1052 | 1037 | { |
1053 | 1038 | UINT8 data; |
1054 | 1039 | int flag; |
1055 | | UINT16 eff_pitch = m_pitch >> m_figs.m_gd; |
1056 | 1040 | |
1057 | 1041 | dequeue(&data, &flag); |
1058 | 1042 | |
r241354 | r241355 | |
1219 | 1203 | |
1220 | 1204 | m_ead = (upper_addr << 16) | (m_pr[2] << 8) | m_pr[1]; |
1221 | 1205 | |
1222 | | LOG(("uPD7220 '%s' EAD: %06x\n", tag(), m_ead)); |
| 1206 | //LOG(("uPD7220 '%s' EAD: %06x\n", tag(), m_ead)); |
1223 | 1207 | |
1224 | 1208 | if(m_param_ptr == 4) |
1225 | 1209 | { |
1226 | 1210 | m_dad = m_pr[3] >> 4; |
1227 | | LOG(("uPD7220 '%s' DAD: %01x\n", tag(), m_dad)); |
| 1211 | //LOG(("uPD7220 '%s' DAD: %01x\n", tag(), m_dad)); |
1228 | 1212 | } |
1229 | 1213 | } |
1230 | 1214 | break; |
r241354 | r241355 | |
1262 | 1246 | |
1263 | 1247 | if (m_param_ptr == 3 || (m_param_ptr == 2 && m_cr & 0x10)) |
1264 | 1248 | { |
1265 | | LOG(("%02x = %02x %02x (%c) %06x %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1]?m_pr[1]:' ',m_ead,m_figs.m_dc)); |
| 1249 | //printf("%02x = %02x %02x (%c) %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1],EAD); |
1266 | 1250 | fifo_set_direction(FIFO_WRITE); |
1267 | 1251 | |
1268 | 1252 | write_vram((m_cr & 0x18) >> 3,m_cr & 3); |
r241354 | r241355 | |
1296 | 1280 | m_figs.m_dc = (m_pr[2]) | (m_figs.m_dc & 0x3f00); |
1297 | 1281 | |
1298 | 1282 | if (m_param_ptr == 4) |
1299 | | { |
1300 | 1283 | m_figs.m_dc = (m_pr[2]) | ((m_pr[3] & 0x3f) << 8); |
1301 | | m_figs.m_gd = (m_pr[3] & 0x40) && ((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED); |
1302 | | } |
1303 | 1284 | |
1304 | 1285 | if (m_param_ptr == 6) |
1305 | 1286 | m_figs.m_d = (m_pr[4]) | ((m_pr[5] & 0x3f) << 8); |
r241354 | r241355 | |
1317 | 1298 | |
1318 | 1299 | case COMMAND_FIGD: /* figure draw start */ |
1319 | 1300 | if(m_figs.m_figure_type == 0) |
1320 | | draw_pixel(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch),m_dad,(m_ra[8]) | (m_ra[9]<<8)); |
| 1301 | draw_pixel(((m_ead % m_pitch) << 4) | (m_dad & 0xf),(m_ead / m_pitch),m_dad,(m_ra[8]) | (m_ra[9]<<8)); |
1321 | 1302 | else if(m_figs.m_figure_type == 1) |
1322 | | draw_line(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); |
| 1303 | draw_line(((m_ead % m_pitch) << 4) | (m_dad & 0xf),(m_ead / m_pitch)); |
1323 | 1304 | else if(m_figs.m_figure_type == 4) |
1324 | | draw_arc(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); |
| 1305 | draw_arc(((m_ead % m_pitch) << 4) | (m_dad & 0xf),(m_ead / m_pitch)); |
1325 | 1306 | else if(m_figs.m_figure_type == 8) |
1326 | | draw_rectangle(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); |
| 1307 | draw_rectangle(((m_ead % m_pitch) << 4) | (m_dad & 0xf),(m_ead / m_pitch)); |
1327 | 1308 | else |
1328 | 1309 | logerror("uPD7220 '%s' Unimplemented command FIGD %02x\n", tag(),m_figs.m_figure_type); |
1329 | 1310 | |
r241354 | r241355 | |
1333 | 1314 | |
1334 | 1315 | case COMMAND_GCHRD: /* graphics character draw and area filling start */ |
1335 | 1316 | if(m_figs.m_figure_type == 2) |
1336 | | draw_char(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); |
| 1317 | draw_char(((m_ead % m_pitch) << 4) | (m_dad & 0xf),(m_ead / m_pitch)); |
1337 | 1318 | else |
1338 | 1319 | logerror("uPD7220 '%s' Unimplemented command GCHRD %02x\n", tag(),m_figs.m_figure_type); |
1339 | 1320 | |
r241354 | r241355 | |
1587 | 1568 | addr = ((sad << 1) & 0x3ffff) + (y * m_pitch * 2); |
1588 | 1569 | |
1589 | 1570 | if (!m_display_cb.isnull()) |
1590 | | draw_graphics_line(bitmap, addr, y + (bsy >> !im), wd); |
| 1571 | draw_graphics_line(bitmap, addr, y + bsy/((m_pitch == 40)+1), wd); |
1591 | 1572 | } |
1592 | 1573 | } |
1593 | 1574 | else |
trunk/src/mess/drivers/compis.c
r241354 | r241355 | |
100 | 100 | if (offset < 2) |
101 | 101 | return m_crtc->read(space, offset & 0x01); |
102 | 102 | else |
103 | | // monochrome only, hblank? vblank? |
104 | | if(offset == 2) |
105 | | { |
106 | | switch(m_unk_video) |
107 | | { |
108 | | case 0x04: |
109 | | m_unk_video = 0x44; |
110 | | break; |
111 | | case 0x44: |
112 | | m_unk_video = 0x64; |
113 | | break; |
114 | | default: |
115 | | m_unk_video = 0x04; |
116 | | break; |
117 | | } |
118 | | return m_unk_video; |
119 | | } |
120 | | else |
121 | 103 | return 0; |
122 | 104 | } |
123 | 105 | else |
r241354 | r241355 | |
133 | 115 | { |
134 | 116 | if (ACCESSING_BITS_0_7) |
135 | 117 | { |
136 | | // 0x336 is likely the color plane register |
137 | 118 | if (offset < 2) m_crtc->write(space, offset & 0x01, data); |
138 | | |
139 | 119 | } |
140 | 120 | else |
141 | 121 | { |
r241354 | r241355 | |
241 | 221 | } |
242 | 222 | |
243 | 223 | |
| 224 | //------------------------------------------------- |
| 225 | // vram_r - |
| 226 | //------------------------------------------------- |
| 227 | |
| 228 | READ8_MEMBER( compis_state::vram_r ) |
| 229 | { |
| 230 | return m_video_ram[offset]; |
| 231 | } |
| 232 | |
| 233 | |
| 234 | //------------------------------------------------- |
| 235 | // vram_w - |
| 236 | //------------------------------------------------- |
| 237 | |
| 238 | WRITE8_MEMBER( compis_state::vram_w ) |
| 239 | { |
| 240 | m_video_ram[offset] = data; |
| 241 | } |
| 242 | |
| 243 | |
| 244 | |
244 | 245 | //************************************************************************** |
245 | 246 | // ADDRESS MAPS |
246 | 247 | //************************************************************************** |
r241354 | r241355 | |
252 | 253 | static ADDRESS_MAP_START( compis_mem, AS_PROGRAM, 16, compis_state ) |
253 | 254 | ADDRESS_MAP_UNMAP_HIGH |
254 | 255 | AM_RANGE(0x00000, 0x1ffff) AM_RAM |
| 256 | AM_RANGE(0x40000, 0x5ffff) AM_READWRITE8(vram_r, vram_w, 0xffff) |
255 | 257 | AM_RANGE(0x60000, 0x63fff) AM_MIRROR(0x1c000) AM_DEVICE(I80130_TAG, i80130_device, rom_map) |
256 | 258 | AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0) |
257 | 259 | ADDRESS_MAP_END |
r241354 | r241355 | |
263 | 265 | |
264 | 266 | static ADDRESS_MAP_START( compis2_mem, AS_PROGRAM, 16, compis_state ) |
265 | 267 | ADDRESS_MAP_UNMAP_HIGH |
266 | | AM_RANGE(0x00000, 0xbffff) AM_RAM |
| 268 | AM_RANGE(0x00000, 0x3ffff) AM_RAM |
| 269 | AM_RANGE(0x40000, 0x5ffff) AM_READWRITE8(vram_r, vram_w, 0xffff) |
| 270 | AM_RANGE(0x60000, 0xbffff) AM_RAM |
267 | 271 | AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0) |
268 | 272 | ADDRESS_MAP_END |
269 | 273 | |
r241354 | r241355 | |
313 | 317 | //------------------------------------------------- |
314 | 318 | |
315 | 319 | static ADDRESS_MAP_START( upd7220_map, AS_0, 8, compis_state ) |
316 | | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
317 | | AM_RANGE(0x00000, 0x7fff) AM_RAM AM_SHARE("video_ram") |
| 320 | ADDRESS_MAP_GLOBAL_MASK(0x1ffff) |
| 321 | AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") |
318 | 322 | ADDRESS_MAP_END |
319 | 323 | |
320 | 324 | |
r241354 | r241355 | |
451 | 455 | |
452 | 456 | UPD7220_DISPLAY_PIXELS_MEMBER( compis_state::hgdc_display_pixels ) |
453 | 457 | { |
454 | | UINT8 i,gfx = m_video_ram[(address & 0x7fff)]; |
| 458 | UINT8 i,gfx = m_video_ram[address]; |
455 | 459 | const pen_t *pen = m_palette->pens(); |
456 | 460 | |
457 | 461 | for(i=0; i<8; i++) |
458 | | bitmap.pix32(y, x + i) = pen[BIT(gfx, 7 - i)]; |
| 462 | bitmap.pix32(y, x + i) = pen[BIT(gfx, i)]; |
459 | 463 | } |
460 | 464 | |
461 | 465 | |
trunk/src/mess/drivers/msx.c
r241354 | r241355 | |
63 | 63 | ** - perfect1: Firmware broken |
64 | 64 | ** - mpc2500f: Fix keyboard layout? |
65 | 65 | ** - nms8260: HDD not emulated |
66 | | ** - nms8270: MSX-Audio not emulated |
67 | 66 | ** - mpc27: Light pen not emulated |
68 | 67 | ** - phc77: firmware not emulated |
69 | 68 | ** - phc77: printer not emulated |
r241354 | r241355 | |
216 | 215 | Philips NMS-8255 - MSX2 - nms8255 |
217 | 216 | Philips NMS-8255F - MSX2 - nms8255f |
218 | 217 | Philips NMS-8260 - MSX2 - nms8260 |
219 | | Philips NMS-8270 - MSX2 - nms8270 |
| 218 | Philips NMS-8270 - MSX2 - nms8270 - not confirmed to exist yet |
220 | 219 | Philips NMS-8280 - MSX2 - nms8280 |
221 | 220 | Philips NMS-8280F - MSX2 - nms8280f |
222 | 221 | Philips NMS-8280G - MSX2 - nms8280g |
r241354 | r241355 | |
5741 | 5740 | MCFG_FRAGMENT_ADD( msx2_cartlist ) |
5742 | 5741 | MACHINE_CONFIG_END |
5743 | 5742 | |
5744 | | /* MSX2 - Philips NMS-8270 */ |
| 5743 | /* MSX2 - Philips NMS-8270 - Not confirmed to exist yet */ |
5745 | 5744 | |
5746 | | ROM_START (nms8270) |
5747 | | ROM_REGION (0x18000, "maincpu", 0) |
5748 | | ROM_LOAD ("nms8270bios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e)) |
5749 | | ROM_LOAD ("nms8270ext.rom", 0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02)) |
5750 | | ROM_LOAD ("nms8270disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef)) |
5751 | | ROM_LOAD ("nms8270audio.rom", 0x10000, 0x8000, CRC(d8a17006) SHA1(f081a884505af9a1080b2b57e86b6da93b784301)) |
5752 | | ROM_END |
5753 | | |
5754 | | static MACHINE_CONFIG_DERIVED( nms8270, msx2_pal ) |
5755 | | // YM2149 (in S-3527 MSX Engine) |
5756 | | // FDC: wd2793, 1 3.5" DSDD drives |
5757 | | // 2 Cartridge slots |
5758 | | // S-3527 MSX Engine |
5759 | | // MSX-Audio builtin |
5760 | | |
5761 | | MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) |
5762 | | MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0) |
5763 | | MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0) |
5764 | | MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000) |
5765 | | MCFG_MSX_LAYOUT_ROM("msxaudio", 3, 1, 1, 2, "maincpu", 0x10000) |
5766 | | MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */ |
5767 | | MCFG_MSX_RAMIO_SET_BITS(0xf8) |
5768 | | MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000) |
5769 | | |
5770 | | MCFG_FRAGMENT_ADD( msx_wd2793_force_ready ) |
5771 | | MCFG_FRAGMENT_ADD( msx_1_35_dd_drive ) |
5772 | | MCFG_FRAGMENT_ADD( msx2_floplist ) |
5773 | | |
5774 | | MCFG_FRAGMENT_ADD( msx2_cartlist ) |
5775 | | MACHINE_CONFIG_END |
5776 | | |
5777 | 5745 | /* MSX2 - Philips NMS-8280 - 2 possible sets (/00 /16) */ |
5778 | 5746 | |
5779 | 5747 | ROM_START (nms8280) |
r241354 | r241355 | |
8358 | 8326 | COMP(1986, nms8255, 0, 0, nms8255, msx2, driver_device, 0, "Philips", "NMS-8255 (MSX2)", 0) |
8359 | 8327 | COMP(1986, nms8255f, nms8255, 0, nms8255f, msx2, driver_device, 0, "Philips", "NMS-8255F (MSX2)", 0) // French keyboard |
8360 | 8328 | COMP(1986, nms8260, 0, 0, nms8260, msx2, driver_device, 0, "Philips", "NMS-8260 (Prototype) (MSX2)", GAME_NOT_WORKING) |
8361 | | COMP(198?, nms8270, 0, 0, nms8270, msx2, driver_device, 0, "Philips", "NMS-8270 (Prototype) (MSX2)", GAME_NOT_WORKING) |
8362 | 8329 | COMP(1986, nms8280, 0, 0, nms8280, msx2, driver_device, 0, "Philips", "NMS-8280 (MSX2)", 0) |
8363 | 8330 | COMP(1986, nms8280f, nms8280, 0, nms8280f, msx2, driver_device, 0, "Philips", "NMS-8280F (MSX2)", 0) // French keyboard |
8364 | 8331 | COMP(1986, nms8280g, nms8280, 0, nms8280g, msx2, driver_device, 0, "Philips", "NMS-8280G (MSX2)", 0) |