don't click here

Panzer Dragoon Saga Prototype (9/16/97) Title Debug Menus Enabled

Discussion in 'Technical Discussion' started by evilhamwizard, Jul 7, 2015.

  1. evilhamwizard

    evilhamwizard

    Researcher
    1,392
    455
    63
    [​IMG]

    About 7 years a go, drx released a few prototypes for Panzer Dragoon Saga. The earliest one (9/16/97) is the most interesting of the bunch. While it does have a debugger activated by default on the second controller while in game, the prototype only has that much enabled which left a lot of the game unexplored. It was reported that the game had a sound test but as far as I know no one has figured out how to access it until now. It turns out that the game has two sets of title screen selections, one for retail release and one for development (the former is activated by default in this prototype). The two arrays contain the string for the entry on the title screen, some padding data (although it might be data relating to where it's printed on the screen?), and a loading subroutine for that option. See the code below:

    Code (ASM):
    1. ROM:0603E4D0 title_select_list:.data.l h'1FFFB       ; DATA XREF: ROM:loc_6023174o
    2. ROM:0603E4D0                                         ; ROM:off_60231E0o
    3. ROM:0603E4D4                 .data.l aNewGame        ; "NEW GAME"
    4. ROM:0603E4D8                 .data.l loc_60235D6
    5. ROM:0603E4DC                 .data.l h'1FFFC
    6. ROM:0603E4E0                 .data.l aContinue       ; "CONTINUE"
    7. ROM:0603E4E4                 .data.l loc_60235E0
    8. ROM:0603E4E8 title_select_list_debug:.data.l h'1FFF8 ; DATA XREF: ROM:0602316Co
    9. ROM:0603E4E8                                         ; ROM:off_60231DCo
    10. ROM:0603E4EC                 .data.l aNewGame        ; "NEW GAME"
    11. ROM:0603E4F0                 .data.l loc_60235D6
    12. ROM:0603E4F4                 .data.l h'1FFF9
    13. ROM:0603E4F8                 .data.l aContinue       ; "CONTINUE"
    14. ROM:0603E4FC                 .data.l loc_60235E0
    15. ROM:0603E500                 .data.l h'1FFFA
    16. ROM:0603E504                 .data.l aTown           ; "TOWN"
    17. ROM:0603E508                 .data.l loc_60235EA
    18. ROM:0603E50C                 .data.l h'1FFFB
    19. ROM:0603E510                 .data.l aField          ; "FIELD"
    20. ROM:0603E514                 .data.l loc_60235F2
    21. ROM:0603E518                 .data.l h'1FFFC
    22. ROM:0603E51C                 .data.l aBattle         ; "BATTLE"
    23. ROM:0603E520                 .data.l loc_60235FA
    24. ROM:0603E524                 .data.l h'1FFFD
    25. ROM:0603E528                 .data.l aSound          ; "SOUND"
    26. ROM:0603E52C                 .data.l loc_6023602
    27. ROM:0603E530                 .data.l h'1FFFE
    28. ROM:0603E534                 .data.l aMovie          ; "MOVIE"
    29. ROM:0603E538                 .data.l loc_602361C
    In 1ST_READ.PRG, the game will do the following to determine which list to load:

    Code (ASM):
    1. ROM:06023160 loc_6023160:                            ; CODE XREF: ROM:06023154j
    2. ROM:06023160                 mov.w   #h'F6, r4       ; Move Immediate Word Data
    3. ROM:06023162                 mov.l   #sub_601DC88, r3 ; Move Immediate Long Data
    4. ROM:06023164                 jsr     @r3 ; sub_601DC88 ; Jump to Subroutine
    5. ROM:06023166                 nop                     ; No Operation
    6. ROM:06023168                 tst     r0, r0          ; Test Logical
    7. ROM:0602316A                 bt      loc_6023174     ; Branch if True
    8. ROM:0602316C                 mov.l   #title_select_list_debug, r3 ; Move Immediate Long Data
    9. ROM:0602316E                 mov.l   r3, @(8,r14)    ; Move Structure Long Data
    10. ROM:06023170                 bra     loc_602317A     ; Branch
    11. ROM:06023172                 mov     #7, r0          ; Move Immediate Byte Data
    12. ROM:06023174 ; ---------------------------------------------------------------------------
    13. ROM:06023174
    14. ROM:06023174 loc_6023174:                            ; CODE XREF: ROM:0602316Aj
    15. ROM:06023174                 mov.l   #title_select_list, r2 ; Move Immediate Long Data
    16. ROM:06023176                 mov     #2, r0          ; Move Immediate Byte Data
    17. ROM:06023178                 mov.l   r2, @(8,r14)    ; Move Structure Long Data
    To fix this issue, I simply changed the branch if true to a branch if false and it worked just fine. I know I could've released a patch/code for this instead of just uploading the game again, but I wasn't sure if the release was still floating around or not so I figured I should put it up again just in case. I'm sure that this still exists in all release of Saga, so I could potentially come up with a patch/code for all the other releases as well.

    Some pictures of the menus:

    [​IMG][​IMG][​IMG][​IMG]

    Enjoy!

    PS: Select Town -> EVENT059 and watch the cutscene. All the voices are using the motion capture actor scratch voices. Pretty neat.

    EDIT: I noticed SSF doesn't want to load the ISO for me. Here's a savestate instead (tested with the latest test version).
     
  2. Meat Miracle

    Meat Miracle

    Researcher
    1,664
    5
    18
    Have you rebuilt the ECC fields in the game image after editing the file?