If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:Viewpoint (Genesis)

From The Cutting Room Floor
Jump to navigation Jump to search

This page contains notes for the game Viewpoint (Genesis).

Controller Test?

When controller buttons are pressed, the corresponding bits are set in RAM address $FF1154. This memory address gets cleared when the game is paused (see $00F4B0 in the pause debug section) but otherwise appears unused.

...
00:0FB2  33 C0  MOVE.w  D0,($00FF1152)
00:0FB8  81 79  OR.W    D0;($00FF1154)
00:0FBE  4E 75  RTS

Pause Debug

The debug programming is located at offset $00F4D0-00F527.

...
00:F4A8  3F 3C  MOVE.w  #$0001,-(A7)
00:F4AC  4E 4F  TRAP    #$F
00:F4B0  42 79  CLR.W   ($00FF1154)              //why?
00:F4B6  08 39  BTST    #7,($00FF1152)           //P1 controller Start
00:F4BE  66 00  BNE     #$0068 [00:F528]         //branch to $00F528 if P1 Start was pressed
00:F4C2  08 39  BTST    #7,($00FF1153)           //P2 controller Start
00:F4CA  66 00  BNE     #$005C [00:F528]         //branch to $00F528 if P2 Start was pressed
00:F4CE  60 D8  BRA     #$D8 [00:F4A8]           //pause loop (NOP this operation to access debug)
debug programming
00:F4D0  30 39  MOVE.w  ($00FF1150),D0           //controller presses
00:F4D6  02 40  ANDI.W  #$4040,D0                //A button
00:F4DA  67 CC  BEQ     #$CC [00:F4A8]           //branch to $00F4A8 if A button not pressed on P1 or P2 controller

00:F4DC  30 39  MOVE.w  ($00FF1152),D0           //controller presses
00:F4E2  02 40  ANDI.W  #$1010,D0                //B button
00:F4E6  67 00  BEQ     #$002E [00:F516]         //branch to $00F516 if B button not pressed on P1 or P2 controller

00:F4EA  08 2E  BTST    #0,$0253(A6)             //check if player 1 or player 2 is currently playing (RAM $FF4115: 01=player 1 playing, 02=player 2 playing)
00:F4F0  67 00  BEQ     #$000A [00:F4FC]         //branch to $00F4FC if player 2 is playing
player 1
00:F4F4  30 3C  MOVE.w  #$0001,D0
00:F4F8  60 00  BRA     #$0006 [00:F500]
player 2
00:F4FC  30 3C  MOVE.w  #$FFFF,D0

00:F500  48 E7  MOVEM.L {d0-a7}[80 00],-(A7)
00:F504  4E B9  JSR     ($000E2BF0)
00:F50A  4C DF  MOVEM.L (A7)+,{a7-d0}[00 01]
00:F50E  4E B9  JSR     ($000E32F6)
00:F514  60 92  BRA     #$92 [00:F4A8]           //end of A+B debug

00:F516  30 39  MOVE.w  ($00FF1152),D0           //controller presses
00:F51C  02 40  ANDI.W  #$2020,D0                //C button
00:F520  67 86  BEQ     #$86 [00:F4A8]           //branch to $00F4A8 (ie, exit debug) if C button not pressed on P1 or P2 controller

00:F522  42 2E  CLR.B   $0005(A6)                //changes RAM address $FF3EC7 from $01 to $00 to clear stage
00:F526  60 80  BRA     #$80 [00:F4A8]           //end of A+C debug
resume game
00:F528  33 FC  MOVE.w  #$0100,($00A11100)
00:F530  08 39  BTST    #0,($00A11100)
00:F538  66 F6  BNE     #$F6 [00:F530]
00:F53A  13 FC  MOVE.b  #$80,($00A01C10)
00:F542  33 FC  MOVE.w  #$0000,($00A11100)
00:F54A  3F 3C  MOVE.w  #$0001,-(A7)
00:F54E  4E 4F  TRAP    #$F
00:F550  54 8F  ADDQ.L  #2,A7
00:F552  33 FC  MOVE.w  #$0000,($00FF0D6A)
00:F55A  4E 75  RTS