diff --git a/hash/ekara.xml b/hash/ekara.xml index 8f93981e6b4..8cd9c5e4f55 100644 --- a/hash/ekara.xml +++ b/hash/ekara.xml @@ -12,175 +12,219 @@ The genres in the Japanese games are represented by the code after the EC number ECxxxx-JPM = J-Pop Mix ECxxxx-ATS = Artist Selection (all songs by a single artist) - ECxxxx-KID = Kid's Mix? (guess) + ECxxxx-KID = Kid's Mix ECxxxx-ENK = unknown ECxxxx-BSC = Graduation Encouragement - ECxxxx-G79 = unknown + ECxxxx-G79 = 1979-1981 collection - Some Japanese carts have a number starting with BC - BCxxxx-BHT = unknown + Some Japanese carts have a number starting with DC (D-x on case) + DCxxxx-BHT = unknown (best artists?) - Some Japanese carts have a number starting with GC - GCxxxx-BHT = unknown + Some Japanese carts have a number starting with GC (G-x on case) + GCxxxx-BHT = unknown (best artists?) - Some Japanese carts have a number starting with SC + Some Japanese carts have a number starting with SC (S-x on case) SCxxxx-SAI = unknown SCxxxx-HKW = unknown + + (there are more codes, see lists below) + *********************************************************************************** Japanese cart listing (by EC code) - the EC number is printed on the left side of the cart label, as well as in the serial code - * = dumped, # = identified, but not dumped. Titles in parenthesis are guessed - - EC0001- (J-Pop Mix Volume 1?) - *EC0002- (J-Pop Mix Volume 2?) - *EC0003- J-Pop Mix Volume 3 - EC0004- - EC0005- - *EC0006- ENK Volume 1 - EC0007- - *EC0008- G79? - EC0009- - - *EC0010- Kid's Mix Volume 1 - EC0011- - *EC0012- J-Pop Mix Volume 7 - *EC0013- J-Pop Mix Volume 8 - *EC0014- Artist Selection Volume 1 - unknown artist - *EC0015- Artist Selection Volume 2 - unknown artist - EC0016- - EC0017- - EC0018- - EC0019- - - #EC0020- Kid's Mix Volume 2 - EC0021- - *EC0022- J-Pop Mix Volume 10 - *EC0023- J-Pop Mix Volume 11 - EC0024- (J-Pop Mix Volume 12?) - *EC0025- J-Pop Mix Volume 13 - *EC0026- J-Pop Mix Volume 14 - *EC0027- J-Pop Mix Volume 15 - EC0028- - *EC0029- Artist Selection Volume 3 - Dreams Come True - - EC0030- - *EC0031- Artist Selection Volume 4 - unknown artist - EC0032- - EC0033- - *EC0034- Kid's Mix Volume 3 - *EC0035- Artist Selection Volume 5 - Matsuda Seiko - *EC0036- Artist Selection Volume 6 - KinKi Kids - EC0037- - #EC0038- Graduation Encouragement Volume 2 - EC0039- - - EC0040- - *EC0041- Artist Selection Volume ? - unknown artist - *EC0042- J-Pop Mix Volume 19 - EC0043- - *EC0044- Artist Selection Volume 9 - Every Little Thing - *EC0045- Artist Selection Volume 10 - Mr. Children - EC0046- - EC0047- - *EC0048- ENK Volume 6 - *EC0049- Artist Selection Volume 11 - Judy and Mary - - EC0050- - #EC0051- J-Pop Mix Volume 21 - EC0052- - EC0053- - *EC0054- J-Pop Mix Volume 23 - EC0055 - EC0056- - EC0057- - EC0058- - EC0059- + early carts don't have a number printed on the box, only the title, after a certain point a number was added (when?) - EC0060- - EC0061- - EC0062- - #EC0063- J-Pop Mix Volume 29 - EC0064- - EC0065 - EC0066- - EC0067- - *EC0068- J-Pop Mix Volume ? - EC0069- - - *EC0070- (J-Pop Mix Volume Vol ?) - EC0071- - *EC0072- (J-Pop Mix Volume Vol ?) - EC0073- - EC0074- - EC0075 - *EC0076- (J-Pop Mix Volume Vol ?) + * = dumped + + .. EC0001-JPM J-Pop Mix Volume 1 + .. *EC0002-JPM J-Pop Mix Volume 2 + .. *EC0003-JPM J-Pop Mix Volume 3 + .. EC0004-JPM J-Pop Mix Volume 4 + .. EC0005-JPM J-Pop Mix Volume 5 + .. *EC0006-ENK ENK Volume 1 + .. EC0007-G76 1976-78 Volume 1 + .. *EC0008-G79 1979-81 Volume 1 + .. EC0009- untranslated Volume 1 + .. *EC0010-KID Kid's Mix Volume 1 + .. EC0011-JPM J-Pop Mix Volume 6 + .. *EC0012-JPM J-Pop Mix Volume 7 + .. *EC0013-JPM J-Pop Mix Volume 8 + .. *EC0014-ATS Artist Selection Volume 1 - untranslated artist + .. *EC0015-ATS Artist Selection Volume 2 - untranslated artist + .. EC0016-ENK ENK Volume 2 + .. EC0017-G73 1973-75 Volume 1 + .. EC0018-G82 1982-84 Volume 1 + .. EC0019-BSC Graduation Encouragement Volume 1 + .. EC0020-KID Kid's Mix Volume 2 + .. EC0021-JPM J-Pop Mix Volume 9 + .. *EC0022-JPM J-Pop Mix Volume 10 + 23 *EC0023-JPM J-Pop Mix Volume 11 + 24 EC0024-JPM J-Pop Mix Volume 12 + 25 *EC0025-JPM J-Pop Mix Volume 13 + 26 *EC0026-JPM J-Pop Mix Volume 14 + 27 *EC0027-JPM J-Pop Mix Volume 15 + 28 EC0028-JPM J-Pop Mix Volume 16 + 29 *EC0029-ATS Artist Selection Volume 3 - Dreams Come True + + 30 EC0030-ENK ENK Volume 3 + 31 *EC0031-ATS Artist Selection Volume 4 - untranslated artist + 32 EC0032- untranslated Volume 2 (sequel to EC0009) + 33 EC0033-JPM J-Pop Mix Volume 17 + 34 *EC0034-KID Kid's Mix Volume 3 + 35 *EC0035-ATS Artist Selection Volume 5 - Matsuda Seiko + 36 *EC0036-ATS Artist Selection Volume 6 - KinKi Kids + 37 EC0037-ENK ENK Volume 4 + 38 EC0038-BSC Graduation Encouragement Volume 2 + 39 EC0039-ATS Artist Selection Volume 7 - B'z + + 40 EC0040-JPM J-Pop Mix Volume 18 + 41 *EC0041-ATS Artist Selection Volume 8 - untranslated artist + 42 *EC0042-JPM J-Pop Mix Volume 19 + 43 EC0043-ENK ENK Volume 5 + 44 *EC0044-ATS Artist Selection Volume 9 - Every Little Thing + 45 *EC0045-ATS Artist Selection Volume 10 - Mr. Children + 46 EC0046-JPM J-Pop Mix Volume 20 + 47 EC0047- untranslated Volume 1 + 48 *EC0048-ENK ENK Volume 6 + 49 *EC0049-ATS Artist Selection Volume 11 - Judy and Mary + + 50 EC0050-ATS Artist Selection Volume 12 - The Beatles + 51 EC0051-JPM J-Pop Mix Volume 21 + 52 EC0052-ENK ENK Volume 7 + 53 EC0053-JPM J-Pop Mix Volume 22 + 54 *EC0054-JPM J-Pop Mix Volume 23 + 55 EC0055-ATS Artist Selection Volume 13 - Tube + 56 EC0056-JPM J-Pop Mix Volume 24 + 57 EC0057-ATS Artist Selection Volume 14 - SMAP (should be Vol 14? sales sheet still lists 13 tho) + 58 EC0058-ENK ENK Volume 8 + 59 EC0059-JPM J-Pop Mix Volume 25 + + 60 EC0060-JPM J-Pop Mix Volume 26 + 61 EC0061-JPM J-Pop Mix Volume 27 + 62 EC0062-JPM J-Pop Mix Volume 28 + 63 EC0063-JPM J-Pop Mix Volume 29 + 64 EC0064-ENK ENK Volume 9 + 65 EC0065-JPM J-Pop Mix Volume 30 + 66 EC0066-JPM J-Pop Mix Volume 31 + 67 EC0067-JPM J-Pop Mix Volume 32 + 68 *EC0068-JPM J-Pop Mix Volume 33 + 69 EC0069- untranslated + + 70 *EC0070-JPM J-Pop Mix Volume 34 + 71 EC0071-JPM J-Pop Mix Volume 35 + 72 *EC0072-JPM J-Pop Mix Volume 36 + 73 EC0073- untranslated volume 1 + 74 EC0074-JPM J-Pop Mix Volume 37 + 75 EC0075-JPM J-Pop Mix Volume 38 + 76 *EC0076-JPM J-Pop Mix Volume 39 + 77 EC0077-ATS Artist Selection Volume 15 - unknown artist (should be Vol 15? sales sheet lists 5?) + 78 EC0078- (unknown) + 79 EC0079- (unknown) + 80 EC0080- (unknown) + 81 EC0081-JPM J-Pop Mix Volume 42 + (more? what's the EC highest number?) *********************************************************************************** - Japanese cart listing (by GC code) - * = dumped, # = identified, but not dumped. Titles in parenthesis are guessed + Japanese cart listing (by GC code) (G-x on cartridge / box) + * = dumped - GC0001- - *GC0002- BHT Volume 1 - GC0003- - GC0004- - GC0005- - *GC0006- BHT Volume ? + G-1 GC0001- (unknown) + G-2 *GC0002-BHT BHT Volume 1 + G-3 GC0003- (unknown) + G-4 GC0004- (unknown) + G-5 GC0005- (unknown) + G-6 *GC0006-BHT BHT Volume 3 (more? what's the GC highest number?) *********************************************************************************** - Japanese cart listing (by MC code) - * = dumped, # = identified, but not dumped. Titles in parenthesis are guessed + Japanese cart listing (by MC code) (M-x on cartridge / box) + * = dumped - *MC0001- Mini Volume 1 + M-1 *MC0001-ATM Mini Volume 1 (more? what's the MC highest number?) *********************************************************************************** - Japanese cart listing (by DC code) (the numbering on these doesn't make much sense) - * = dumped, # = identified, but not dumped. Titles in parenthesis are guessed + Japanese cart listing (by DC code) (D-x on cartridge / box) + (the numbering on these doesn't make much sense are these re-releases?) + * = dumped - #(cartridge marked D-2) DC0002-BAT Best Artist Volume 6 - #(cartridge marked D-3) DC0003-BHT Best Artist Volume 9 + D-2 DC0002-BAT Best Artist Volume 6? + D-3 DC0003-BHT Best Artist Volume 9? (more? what's the DC highest number?) *********************************************************************************** - Japanese cart listing (by S-* label, SCxxxx- code) - #SC0001- Hello Kitty Special - SC0002- - SC0003- - SC0004- - *SC0005- unknown - *SC0006- unknown - SC0007- - SC0008- - *SC0009- unknown - *SC0010- unknown - SC0011- - SC0012- - SC0013- - SC0014- - SC0015- - SC0016- - SC0017- - SC0018- - *SC0019- unknown - SC0020- - *SC0021- unknown - *SC0022- unknown - SC0023- - - (not seen above S-23) + Japanese cart listing (by SC code) (S-x on cartridge / box) + TODO: what are the full titles for SAI and HWK + S-1 SC0001- Hello Kitty Special + S-2 SC0002- (unknown) + S-3 SC0003- (unknown) + S-4 SC0004- (unknown) + S-5 *SC0005-SAI SAI Volume 1 + S-6 *SC0006-SAI SAI Volume 2 + S-7 SC0007- (unknown) + S-8 SC0008- (unknown) + S-9 *SC0009-SAI SAI Volume 3 + S-10 *SC0010-HWK HWK (untranslated) + S-11 SC0011- (unknown) + S-12 SC0012- (unknown) + S-13 SC0013- (unknown) + S-14 SC0014- (unknown) + S-15 SC0015- (unknown) + S-16 SC0016- (unknown) + S-17 SC0017- (unknown) + S-18 SC0018- (unknown) + S-19 *SC0019-SAI SAI Volume 6 + S-20 SC0020- (unknown) + S-21 *SC0021-SAI SAI Volume 7 + S-22 *SC0022-SAI SAI Volume 8 + S-23 SC0023- (unknown) + + (more? what's the SC highest number?) + + *********************************************************************************** + + Japanese cart listing (by G code) (for use on multiple devices?) + + G-1 untranslated volume 1 (Artist Selection?) + G-2 untranslated volume 1 (B) + G-3 untranslated volume 2 (Artist Selection?) + G-4 untranslated volume 2 (B) + G-5 TV Pop Volume 1 + G-6 untranslated volume 3 (B) + G-7 untranslated Volume 3 (Artist Selection?) + G-8 untranslated (no volume) + G-9 TV Pop Volume 3 (Volume 2 is 'P-2' in 'P' series) + G-10 untranslated Volume 4 (Artist Selection?) + G-11 TV Pop Volume 4 + G-12 untranslated volume 5 (B) (Volume 4 is 'P-1' in 'P' series) + + (more? what's the G highest number?) + + *********************************************************************************** + + Japanese cart listing (by P code) (for use on multiple devices, including DDR) + + P-1 untranslated Volume 4 (1,2,3, 5 in G series) + P-2 TV Pop Volume 2 (1,3,4 in G series) + P-3 untranslated Volume 1 + P-4 untranslated Volume 7 + + (more? what's the P highest number?) + + *********************************************************************************** + --> @@ -517,7 +561,7 @@ - unknown (Japan) (EC0008-G79) + 1979-81 Volume 1 (Japan) (EC0008-G79) 2000 Takara @@ -693,7 +737,7 @@ - Artist Selection Volume ? (unknown) (Japan) (EC0041-ATS) + Artist Selection Volume 8 (unknown) (Japan) (EC0041-ATS) 2000 Takara @@ -770,7 +814,7 @@ - J-Pop Mix Volume ? (Japan) (EC0068-JPM) + J-Pop Mix Volume 33 (Japan) (EC0068-JPM) 2000 Takara @@ -781,7 +825,7 @@ - J-Pop Mix Volume ? (Japan) (EC0070-JPM) + J-Pop Mix Volume 34 (Japan) (EC0070-JPM) 2000 Takara @@ -792,7 +836,7 @@ - J-Pop Mix Volume ? (Japan) (EC0072-JPM) + J-Pop Mix Volume 36 (Japan) (EC0072-JPM) 2000 Takara @@ -803,7 +847,7 @@ - J-Pop Mix Volume ? (Japan) (EC0076-JPM) + J-Pop Mix Volume 39 (Japan) (EC0076-JPM) 2000 Takara @@ -827,7 +871,7 @@ - BHT Volume ? (Japan) (GC0006-BHT) + BHT Volume 3 (Japan) (GC0006-BHT) 2000 Takara @@ -855,7 +899,7 @@ - unknown (Japan) (SC0005-SAI) + SAI Volume 1 (Japan) (SC0005-SAI) 2001 Takara @@ -866,7 +910,7 @@ - unknown (Japan) (SC0006-SAI) + SAI Volume 2 (Japan) (SC0006-SAI) 2001 Takara @@ -877,7 +921,7 @@ - unknown (Japan) (SC0009-SAI) + SAI Volume 3 (Japan) (SC0009-SAI) 2001 Takara @@ -888,7 +932,7 @@ - unknown (Japan) (SC0010-HKW) + HWK (Japan) (SC0010-HKW) 2001 Takara @@ -899,7 +943,7 @@ - unknown (Japan) (SC0019-SAI) + SAI Volume 6 (Japan) (SC0019-SAI) 2001 Takara @@ -910,7 +954,7 @@ - unknown (Japan) (SC0021-SAI) + SAI Volume 7 (Japan) (SC0021-SAI) 2001 Takara @@ -921,7 +965,7 @@ - unknown (Japan) (SC0022-SAI) + SAI Volume 8 (Japan) (SC0022-SAI) 2001 Takara diff --git a/src/mame/includes/xavix.h b/src/mame/includes/xavix.h index 0349b892458..fd112a95455 100644 --- a/src/mame/includes/xavix.h +++ b/src/mame/includes/xavix.h @@ -484,6 +484,7 @@ private: void draw_tilemap_line(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int line); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites_line(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int line); + void decode_inline_header(int &flipx, int &flipy, int &test, int& pal, int debug_packets); bitmap_ind16 m_zbuffer; diff --git a/src/mame/video/xavix.cpp b/src/mame/video/xavix.cpp index 2cee99ef106..05b4a926e77 100644 --- a/src/mame/video/xavix.cpp +++ b/src/mame/video/xavix.cpp @@ -175,6 +175,78 @@ void xavix_state::draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, cons } } +void xavix_state::decode_inline_header(int &flipx, int &flipy, int &test, int &pal, int debug_packets) +{ + uint8_t byte1 = 0; + int done = 0; + + flipx = 0; + flipy = 0; + test = 0; + + int first = 1; + + do + { + byte1 = get_next_byte(); + + // only the first byte matters when it comes to setting palette / flips, the rest are just ignored until we reach a 0x6 command, after which there is the tile data + if (first == 1) + { + pal = (byte1 & 0xf0) >> 4; + int cmd = (byte1 & 0x0f); + + switch (cmd) + { + // these cases haven't been seen + case 0x0: + case 0x2: + case 0x4: + case 0x8: + case 0xa: + case 0xc: + case 0xe: + + // this is just the end command, changes nothing, can be pointed at directly tho + case 0x6: + break; + + // flip cases + // does bit 0x02 have a meaning here, we have 2 values for each case + + case 0x1: + case 0x3: + flipx = 0; flipy = 0; + break; + + case 0x5: + case 0x7: + flipx = 1; flipy = 0; + break; + + case 0x9: + case 0xb: + flipx = 0; flipy = 1; + break; + + case 0xd: + case 0xf: + flipx = 1; flipy = 1; + break; + } + + first = 0; + } + + if ((byte1 & 0x0f) == 0x06) + { + // tile data will follow after this, always? + done = 1; + //if (debug_packets) LOG(" (setting palette)"); + } + } while (done == 0); + //if (debug_packets) LOG("\n"); +} void xavix_state::draw_tilemap_line(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int line) { @@ -309,7 +381,10 @@ void xavix_state::draw_tilemap_line(screen_device &screen, bitmap_ind16 &bitmap, continue; } - const int debug_packets = 0; + int debug_packets = 1; + //if (line==128) debug_packets = 1; + //else debug_packets = 0; + int test = 0; if (!alt_tileaddressing) @@ -350,8 +425,7 @@ void xavix_state::draw_tilemap_line(screen_device &screen, bitmap_ind16 &bitmap, { // Addressing Mode 2 (plus Inline Header) - if (debug_packets) LOG("for tile %04x (at %d %d): ", tile, (((x * 16) + scrollx) & 0xff), (((y * 16) + scrolly) & 0xff)); - + //if (debug_packets) LOG("for tile %04x (at %d %d): ", tile, (((x * 16) + scrollx) & 0xff), (((y * 16) + scrolly) & 0xff)); basereg = (tile & 0xf000) >> 12; tile &= 0x0fff; @@ -359,84 +433,16 @@ void xavix_state::draw_tilemap_line(screen_device &screen, bitmap_ind16 &bitmap, tile += gfxbase; set_data_address(tile, 0); - - // there seems to be a packet stored before the tile?! - // the offset used for flipped sprites seems to specifically be changed so that it picks up an extra byte which presumably triggers the flipping - uint8_t byte1 = 0; - int done = 0; - int skip = 0; - - do - { - byte1 = get_next_byte(); - - if (debug_packets) LOG(" %02x, ", byte1); - - if (skip == 1) - { - skip = 0; - //test = 1; - } - else if ((byte1 & 0x0f) == 0x01) - { - // used - } - else if ((byte1 & 0x0f) == 0x03) - { - // causes next byte to be skipped?? - skip = 1; - } - else if ((byte1 & 0x0f) == 0x05) - { - // the upper bits are often 0x00, 0x10, 0x20, 0x30, why? - flipx = 1; - } - else if ((byte1 & 0x0f) == 0x06) // there must be other finish conditions too because sometimes this fails.. - { - // tile data will follow after this, always? - pal = (byte1 & 0xf0) >> 4; - done = 1; - } - else if ((byte1 & 0x0f) == 0x07) - { - // causes next byte to be skipped?? - skip = 1; - } - else if ((byte1 & 0x0f) == 0x09) - { - // used - } - else if ((byte1 & 0x0f) == 0x0a) - { - // not seen - } - else if ((byte1 & 0x0f) == 0x0b) - { - // used - } - else if ((byte1 & 0x0f) == 0x0c) - { - // not seen - } - else if ((byte1 & 0x0f) == 0x0d) - { - // used - } - else if ((byte1 & 0x0f) == 0x0e) - { - // not seen - } - else if ((byte1 & 0x0f) == 0x0f) - { - // used - } - - } while (done == 0); - if (debug_packets) LOG("\n"); + + decode_inline_header(flipx, flipy, test, pal, debug_packets); + tile = get_current_address_byte(); } - if (test == 1) pal = machine().rand() & 0xf; + if (test == 1) + { + pal = machine().rand() & 0xf; + } draw_tile_line(screen, bitmap, cliprect, tile, bpp, (x * xtilesize) + scrollx, line, ytilesize, xtilesize, flipx, flipy, pal, zval, yyline); draw_tile_line(screen, bitmap, cliprect, tile, bpp, ((x * xtilesize) + scrollx) - 256, line, ytilesize, xtilesize, flipx, flipy, pal, zval, yyline); // wrap-x