the cutting room mirror

Dragon Ball Z: Kyoushuu! Saiya Jin

This article has a talk page!
view on tcrf.net

This page contains notes for the game Dragon Ball Z: Kyoushuu! Saiya Jin.

Version Differences#

PRG Bank 12#

BANDAI'91 D·B-Z PRG2 (CRC32: AE7AADE3) adds the following new routine:

0C/B485: A9 80         lda #$80
0C/B487: 8D 0D 80      sta $800D  ; I2C output port
0C/B48A: A9 00         lda #$00
0C/B48C: 85 4A         sta $4A    ; EEPROM address
0C/B48E: 20 BC B4      jsr $B4BC  ; read one byte from EEPROM
0C/B491: A5 4D         lda $4D    ; EEPROM data
0C/B493: 48            pha
0C/B494: 20 12 B5      jsr $B512  ; write one byte to EEPROM
0C/B497: A9 12         lda #$12
0C/B499: A0 00         ldy #$00
@delay:
0C/B49B: 88            dey
0C/B49C: D0 FD         bne @delay
0C/B49E: 38            sec
0C/B49F: E9 01         sbc #$01
0C/B4A1: D0 F8         bne @delay
0C/B4A3: 20 BC B4      jsr $B4BC  ; read one byte from EEPROM
0C/B4A6: 68            pla
0C/B4A7: C5 4D         cmp $4D    ; EEPROM data
@forever:
0C/B4A9: D0 FE         bne @forever
0C/B4AB: 60            rts

The new routine is called on power-on or reset. It reads the first byte of the EEPROM, writes the same value back, then reads it a second time, and if the two reads don't match then the game locks up. A similar routine is present in some other Bandai games that use an EEPROM to save games, e.g. SD Gundam Gaiden 2. Due the addition of this routine and the call to it, almost all code and data in both bank 12 and bank 15 (the fixed bank) is displaced by some amount.

BANDAI'90 D·B·Z PRG (CRC32: 31CD9903) has a delay loop in the routine that writes a byte to the EEPROM, that was removed in the later revision:

0C/B4E8: A5 4A         lda $4A
0C/B4EA: 29 7F         and #$7F
0C/B4EC: 85 4A         sta $4A
0C/B4EE: 20 0F B5      jsr $B50F  ; write start condition
0C/B4F1: 20 62 B5      jsr $B562  ; write from $4A to EEPROM
0C/B4F4: 20 46 B5      jsr $B546  ; wait for acknowledge
0C/B4F7: A5 4D         lda $4D
0C/B4F9: 20 64 B5      jsr $B564  ; write accumulator to EEPROM
0C/B4FC: 20 46 B5      jsr $B546  ; wait for acknowledge
0C/B4FF: 20 C5 B4      jsr $B4C5  ; write stop condition
0C/B502: A9 08         lda #$08   ; \
0C/B504: A0 00         ldy #$00   ; |
@delay:                           ; |
0C/B506: 88            dey        ; | removed in D·B-Z PRG2 (CRC32: AE7AADE3)
0C/B507: D0 FD         bne @delay ; |
0C/B509: 38            sec        ; |
0C/B50A: E9 01         sbc #$01   ; |
0C/B50C: D0 F8         bne @delay ; /
0C/B50E: 60            rts

PRG Bank 14#

0E/AE28: BD 06 02      lda $0206,x
0E/AE2B: 29 02         and #$02
0E/AE2D: D0 2B         bne $AE5A
0E/AE2F: 88            dey          ; \
0E/AE30: B1 02         lda ($02),y  ; |
0E/AE32: 85 04         sta $04      ; | added in D·B-Z PRG2 (CRC32: AE7AADE3)
0E/AE34: C8            iny          ; |
0E/AE35: B1 02         lda ($02),y  ; |
0E/AE37: 85 05         sta $05      ; /
0E/AE39: 8A            txa
0E/AE3A: 48            pha
0E/AE3B: A9 0B         lda #$0B
0E/AE3D: A2 04         ldx #$04
0E/AE3F: 20 0C C1      jsr $C10C