mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 03:31:49 +01:00
80 lines
3.1 KiB
Plaintext
80 lines
3.1 KiB
Plaintext
|
|
Here are some technical details about things that need to be fixed or
|
|
added to Genesis Plus.
|
|
|
|
Missing features:
|
|
|
|
- Support for 6-button controllers
|
|
- SRAM management
|
|
- Game Genie / PAR patch codes
|
|
|
|
The VDP code could use a lot of cleaning up.
|
|
|
|
The rendering code is missing a few bits:
|
|
|
|
- Sprite collision
|
|
- Window bug
|
|
|
|
I think the "C" 68000 emulator either has some bugs or I'm not using it
|
|
correctly. Older DOS-only versions used Turbo68K, which had ran games
|
|
much better, especially with regards to interrupt handling.
|
|
|
|
Things that need to be fixed:
|
|
|
|
- Raster garbage on third road in Thunder Blade.
|
|
|
|
- Added country codes for Dragon Slayer, but game locks up after
|
|
passing country check.
|
|
|
|
- No inputs in Samurai Shodown.
|
|
(This game doesn't initialize the port direction registers, at least not
|
|
directly. Emulation bug or problem with the game?)
|
|
|
|
- Palette and raster problems in Mortal Kombat.
|
|
|
|
- Bad raster effects and VRAM corruption in Super Skidmarks.
|
|
(Needs PAL timing)
|
|
|
|
- Palette problems in Sonic 2 title screen.
|
|
|
|
- Masked half of Sonic sprite visible on Sonic title screen.
|
|
|
|
- Sprite masking doesn't work in Micro Machines subscreen.
|
|
|
|
- Music has slow tempo in Batman & Robin. (doesn't seem to be a problem
|
|
with the YM2612 timers - Wonderboy 3 is normal)
|
|
|
|
- Music has jerky playback in Sonic 2, 3, 3D Blast. If you run the Z80
|
|
emulation for one scanline after requesting an interrupt, it runs fine.
|
|
|
|
- DAC and PSG output are too loud, both are divided by two for now
|
|
(though the PSG should be a bit quieter and the DAC a bit louder)
|
|
|
|
- Undead Line locks after selecting a stage, also the Z80 sound halts
|
|
after the first note is played.
|
|
|
|
This game single steps the Z80 with the following code:
|
|
|
|
MOVEM.L D0,-(A7) ; 009C7C 48 E7 80 00
|
|
ORI #$0200,SR ; 009C80 00 7C 02 00
|
|
; Get control of the Z-bus
|
|
MOVE.W #$0100,$00A11100 ; 009C84 33 FC 01 00 00 A1 11 00
|
|
BTST #$00,$00A11100 ; 009C8C 08 39 00 00 00 A1 11 00
|
|
BNE.S *-$08 [00009C8C] ; 009C94 66 F6
|
|
; Check driver status byte. If zero, release bus and exit.
|
|
TST.B $00A00008 ; 009C96 4A 39 00 A0 00 08
|
|
BEQ *+$0016 [00009CB2] ; 009C9C 67 00 00 14
|
|
; Release bus and wait for Z80 to resume control. Then restart the loop
|
|
; and immediately get the bus back again, assuming the Z80 ran at least
|
|
; one instruction in the meantime.
|
|
CLR.W $00A11100 ; 009CA0 42 79 00 A1 11 00
|
|
BTST #$00,$00A11100 ; 009CA6 08 39 00 00 00 A1 11 00
|
|
BEQ.S *-$08 [00009CA6] ; 009CAE 67 F6
|
|
BRA.S *-$2C [00009C84] ; 009CB0 60 D2
|
|
; Release bus and exit.
|
|
CLR.W $00A11100 ; 009CB2 42 79 00 A1 11 00
|
|
ANDI #$FDFF,SR ; 009CB8 02 7C FD FF
|
|
MOVEM.L (A7)+,D0 ; 009CBC 4C DF 00 01
|
|
RTS ; 009CC0 4E 75
|
|
|