the cutting room mirror

Viewpoint (Genesis)

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

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