trunk/src/mess/drivers/pc9801.c
| r19331 | r19332 | |
| 37 | 37 | - Microsoft Windows 1.0 MSDOS.SYS error (can be bypassed by loading MS-DOS first) |
| 38 | 38 | |
| 39 | 39 | List of per-game TODO: |
| 40 | - 4D Boxing: tries to format User Disk; |
| 40 | 41 | - Absolutely Mahjong: Epson splash screen doesn't appear at all, why? |
| 41 | 42 | - Dragon Buster: has lots of gfx artifacts; |
| 42 | 43 | - Far Side Moon: doesn't detect neither mouse nor sound board; |
| r19331 | r19332 | |
| 661 | 662 | tile &= 0x1fff; |
| 662 | 663 | kanji_on = 2; |
| 663 | 664 | } |
| 664 | | else if(tile == 0x56 && knj_tile) |
| 665 | else if((tile == 0x56 || tile == 0x57) && knj_tile) |
| 665 | 666 | { |
| 666 | 667 | pcg_sel = 1; |
| 667 | 668 | tile = knj_tile & 0x7f; |
| r19331 | r19332 | |
| 696 | 697 | if(kanji_on) |
| 697 | 698 | tile_data = (state->m_kanji_rom[tile*0x20+yi*2+(kanji_on & 1)]); |
| 698 | 699 | else if(pcg_sel) |
| 699 | | tile_data = (state->m_pcg_ram[0xac000*2+tile*0x40+yi*2+lr+pcg_lr]); |
| 700 | tile_data = (state->m_pcg_ram[0xac000*2+tile*0x40+yi*2+pcg_lr]); |
| 700 | 701 | else |
| 701 | 702 | tile_data = (state->m_char_rom[tile*char_size+interlace_on*0x800+yi]); |
| 702 | 703 | } |
| r19331 | r19332 | |
| 1142 | 1143 | pcg_offset = m_font_addr << 6; |
| 1143 | 1144 | pcg_offset|= m_font_line; |
| 1144 | 1145 | pcg_offset|= m_font_lr; |
| 1145 | | return m_pcg_ram[pcg_offset]; |
| 1146 | if((m_font_addr & 0xff00) == 0x5600 || (m_font_addr & 0xff00) == 0x5700) |
| 1147 | return m_pcg_ram[pcg_offset]; |
| 1148 | |
| 1149 | return machine().rand(); // TODO, kanji ROM |
| 1146 | 1150 | } |
| 1147 | 1151 | } |
| 1148 | 1152 | |
| r19331 | r19332 | |
| 1213 | 1217 | pcg_offset|= m_font_line; |
| 1214 | 1218 | pcg_offset|= m_font_lr; |
| 1215 | 1219 | //printf("%04x %02x %02x %08x\n",m_font_addr,m_font_line,m_font_lr,pcg_offset); |
| 1216 | | m_pcg_ram[pcg_offset] = data; |
| 1220 | if((m_font_addr & 0xff00) == 0x5600 || (m_font_addr & 0xff00) == 0x5700) |
| 1221 | m_pcg_ram[pcg_offset] = data; |
| 1217 | 1222 | return; |
| 1218 | 1223 | } |
| 1219 | 1224 | } |
| r19331 | r19332 | |
| 1530 | 1535 | /* TODO: having this non-linear makes the system to boot in BASIC for PC-9821. Perhaps it stores settings? How to change these? */ |
| 1531 | 1536 | READ8_MEMBER(pc9801_state::pc9801rs_knjram_r) |
| 1532 | 1537 | { |
| 1533 | | return m_pcg_ram[((m_font_addr & 0x7f7f) << 4) | m_font_lr | ((offset >> 1) & 0x0f)]; |
| 1538 | if((m_font_addr & 0xff00) == 0x5600 || (m_font_addr & 0xff00) == 0x5700) |
| 1539 | return m_pcg_ram[((m_font_addr & 0x7f7f) << 4) | m_font_lr | ((offset >> 1) & 0x0f)]; |
| 1540 | |
| 1541 | return machine().rand(); |
| 1534 | 1542 | } |
| 1535 | 1543 | |
| 1536 | 1544 | WRITE8_MEMBER(pc9801_state::pc9801rs_knjram_w) |
| 1537 | 1545 | { |
| 1538 | | m_pcg_ram[((m_font_addr & 0x7f7f) << 4) | m_font_lr | ((offset >> 1) & 0x0f)] = data; |
| 1546 | if((m_font_addr & 0xff00) == 0x5600 || (m_font_addr & 0xff00) == 0x5700) |
| 1547 | m_pcg_ram[((m_font_addr & 0x7f7f) << 4) | m_font_lr | ((offset >> 1) & 0x0f)] = data; |
| 1539 | 1548 | } |
| 1540 | 1549 | |
| 1541 | 1550 | /* FF-based */ |
| r19331 | r19332 | |
| 3542 | 3551 | ROM_LOAD( "font_rs.rom", 0x00000, 0x46800, BAD_DUMP CRC(da370e7a) SHA1(584d0c7fde8c7eac1f76dc5e242102261a878c5e) ) |
| 3543 | 3552 | |
| 3544 | 3553 | ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF ) |
| 3545 | | //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 ) |
| 3554 | ROM_LOAD16_BYTE( "24256c-x01.bin", 0x00000, 0x8000, BAD_DUMP CRC(28ec1375) SHA1(9d8e98e703ce0f483df17c79f7e841c5c5cd1692) ) |
| 3555 | ROM_LOAD16_BYTE( "24256c-x02.bin", 0x00001, 0x8000, BAD_DUMP CRC(90985158) SHA1(78fb106131a3f4eb054e87e00fe4f41193416d65) ) |
| 3556 | ROM_LOAD16_BYTE( "24256c-x03.bin", 0x10000, 0x8000, BAD_DUMP CRC(d4893543) SHA1(eb8c1bee0f694e1e0c145a24152222d4e444e86f) ) |
| 3557 | ROM_LOAD16_BYTE( "24256c-x04.bin", 0x10001, 0x8000, BAD_DUMP CRC(5dec0fc2) SHA1(41000da14d0805ed0801b31eb60623552e50e41c) ) |
| 3546 | 3558 | ROM_END |
| 3547 | 3559 | |
| 3548 | 3560 | /* |