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

Wait and See!

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Wait and See!

Developer: Dragon
Publisher: Dragon
Platform: Unlicensed NES
Released internationally: 1997


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.


Wait and See! is an unlicensed NES game based on the Russian cartoon Ну, погоди! (Nu, pogodi! - literally Well, Just You Wait!, closer to You dare!) but with Bugs Bunny on the title screen for some reason.

Development Text

Text probably left by TomSoft Studio, the program used to develop this game.

TomSoft Studio. E-mail:tomsoft@ihw.co.cn. Tel:(029)7223482


tomsoft-1997

Source Code

Cacti may speak Japanese, but do they speak it well?
...But does it make sense?
The translations on this page need to be proofread. If you are fluent enough in this language, please make any corrections necessary!

The whole bank $1D is filled with a fragment of the game engine's source code. Unfortunately, the code is partially damaged by the regular data pattern FF FF ?? ?? 00 00 00 00, some parts of the source code have been restored, but some are still missing. Note, that hard tabs were changed to 4 spaces as was originally intended in the line drawing below.

Original Translation
            ___     08                  ;下坡
            BNE     ?NoIceLand
            LDA     SPRITE
            CLC
            ADC     #$02
            STA     SPRITE
            LDA     SPRITE+1
            ADC     #$0
            STA     SPRITE+1

;           LDA     SPRITE+7
;           AND     #$7F
;           STA     SPRITE+7
?NoIceLand:
            RTS
;-----------------------------------------------------
Just__e:
            LDA     MOTION+4
            AND     #$04
            BEQ     ?NextBG0
            LDA     #$04
            JMP     ?JustEnd
?NextBG0:
            LDA     MOTION+4
            AND     #$08
            BEQ     ?JustEnd
            LDA     ___8
?JustEnd:
            RTS
;-----------------------------------------------------
ProceStage3:
            LDA     SCRPAGE_X
            BEQ     ?InBlackScreen
            CMP     #__
            BEQ     ?InBlackScreen
            CMP     #29
            BEQ     ?InBlackScreen
            CMP     #38
            BNE     ?NoInStar
?InBlackScreen:
            LDA     #$0
            SEC
            SBC     SPRITE
            CMP     #48
            BCS     ?NoRightEnd

            LDA     PORT2001
            AND     #$E7
            STA     PORT2001            ;关显示屏


            LDA     MOTION+5
            ORA     #$60                ;主角置死亡标志,__时____亡动性结束
            STA     MOTION+5

            LDA     NUMBER_LIFE
            CLC
            ADC     #$01
            STA     NUMBER_LIFE         ;消除假死亡的生命减少

            LDA     SCRPAGE_X
            CLC
            ADC     #$02
            STA     Countinue_X

            LDA     #$FF
            STA     CLOSE_FLAG          ;表示不是真正的死亡
?NoRightEnd:
            LDA     #$FF
            JMP     ?ProceEnd
?NoInSt__:
            LDA     MOTION+4
            AND     #$10
            BEQ     ?NoInRail
            LDA     MOTION
            AND     #$3F
            BNE     ?NoInRail
            LDA     #$FF
            JMP     ?ProceEnd
?NoInRail:
            LDA     __0
?ProceEnd:
            RTS
;-----------------------------------------------------
PassStage:
            LDX     STAGE
            CPX     #$FF
            BEQ     ?OverStage
            L__     ____eData,X
            CMP     SCRPAGE_X
            BNE     ?NoOverStage
            LDA     SCREEN_X
            SEC
            SBC     SPRITE
            CMP     #40
            BCS     ?NoOverStage

            LDA     #$FF
            STA     _LOSE_FLAG              ;保持原有的心和生命的数值
?OverStage:
            LDA     STAGE
            CLC
            ADC     #$01
            STA     H_BUFFER+1              ;保存关的数目

            LDA     #$2C
            STA     BG_PAL01
            LDA     #$0C
            STA     BG_PAL01+1
            LDA     #$0F
            STA     BG_PAL01+2

            LDA     #$17
            STA     BG_PAL02
            LDA     #$07
            STA     BG_PAL02+1
            ___     #$0F
            STA     BG_PAL02+2
            
            LDA     #$FF
            JMP     ?StageEnd
?NoOverStage:
            LDA     #$00
?StageEnd:
            RTS
StageData:
            DB      33,34,36,39__,3__
;-----------------------------------------------------
ProceTitle:
            LDA     #$7
            STA     STAGE

            LDA     #$17
            STA     BG_PAL01
            LDA     #$28
            STA     BG_PAL01+1
            LDA     #$0F
            STA     BG_PAL01+2

            LDA     #$17
            STA     BG_PAL02
            LDA     #$27
            STA     BG_PAL02+1
            LDA     #$0F
            STA     BG_PAL02__
            LDA     #15
            STA     MOTION
            LDA     #$0
            STA     MOTION+1

            LDA     #108
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #79
            STA     SPRITE+_
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7

            LDA     #15
            STA     MOTION+6
            LDA     #$01
            STA     MOTION+7
            LDA     #120
            STA     SPRITE+1__
            LDA     #$0
            STA     SPRITE+11
            LDA     #79
            STA     SPRITE+12
            LDA     #$0
            STA     SPRITE+13
            STA     SPRITE+17

            LDA     #53
            STA     MOTION+12
            LDA     #$0
            STA     MOTION+13
            LDA     #128
            STA     SPRITE+20
            LDA     #0
            STA     SPRITE+21
            LDA     #200
            STA     SPRITE+22
            LDA     #0
            STA     SPRITE+__
            STA     SPRITE+27
            RTS
;-----------------------------------------------------
Game_Over:
            LDA     #$09
            STA     STAGE

            LDA     #$27
            STA     BG_PAL01
            LDA     #$27
            STA     BG_PAL01+1
            LDA     #$37
            STA     BG_PAL01+2

            LDA     #$3F
            STA     BG_PAL02
            LDA     #$2D
            STA     BG_PAL02+1
            LDA     #$00
            STA     BG_PAL02+2


            LDA     #51
            ORA     #$80                ;最后1个分镜不归0
            STA     MOTION
            LDA     #$0
            STA     MOTION+1

            LDA     #130
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #200
            STA     SPRITE+2
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7

            RTS
;-----------------------------------------------------
ProcePassStage:
            LDA     #52
            STA     MOTION
            LDA     H_BUFFER+1
            CLC
            ADC     #$05
            STA     MOTION+1

            LDA     #20
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #160
            STA     SPRITE+2
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7            ;过关牌的起始坐盻_
            LDA     #$0
            STA     MOTION+6
            LDA     #$01
            STA     MOTION+7

            LDA     #8
            STA     SPRITE+10
            LDA     #$0
            STA     SPRITE+11
            LDA     #160
            STA     SPRITE+12
            LDA     #0
            STA     SPRITE+13
            RTS
;-----------------------------------------------------
GameOverAction:
            LDA     MOTION+6
            CMP     __06__
            BNE     ?Countinue
            LDA     MOTION+7
            BNE     ?Countinue
            JMP     ?NoEndFrame
?Countinue:
            LDA     MOTION+5
            AND     #$40
            BEQ     ?NoEndFrame

            ___     MOTION+6
            CMP     #$06
            BEQ     ?NoFirst

            LDA     #$06
            STA     MOTION+6
            LDA     #$1
            STA     MOTION+7
            STA     MOTION+8
            STA     MOTION+9
            STA     MOTION+10
            STA     MOTION+11

            LDA     #8
            STA     SPRITE+10
            LDA     #$0
            STA     SPRITE+11
            LDA     #200
            STA     SPRITE+12
            LDA     #$0
            STA     SPRITE+13
            STA     SPRITE+17
?NoFirst:
            LDA     SPRITE+10
            CMP     #130
            BCC     ?NoEndFrame
            LDA     #$0
            STA     MOTION+7
            STA     MOTION+8
            STA     MOTION+9
            ___     _________
            ORG         C000H  
_MainGetAction      DS      3
_MainGetFrame       DS      3
_ChangeNumber       DS      3
_InstallKey         DS      _
 ____5H         ;DS 2 
NMI_FLAG        EQU             0027H           ;DS 1
;======================================================
ADDR5           EQU             0028H           ;____
ADDR6           EQU             002AH           ;DS 2
ADDR7           EQU             002CH           ;DS 2
JUMPCOUNT       EQU             002EH           ;DS 1 存放跳跃次数
ACTION_B__K     EQU             002FH           ;DS 1 
Y_VERTICA       EQU             0030H           ;DS 1 存放主角自由落体偏移量
WINDOWBUFFER    EQU             0031H           ;DS 192 存放主角代码的PNT缓冲区
;以下单__用____乐的0页变量
;======================================================
;从$0200-$02C3,这一段用于CORE.INC

            ORG     02C3H
                    DS
;--------------------- MOTION ------------------------
;MOTION:
;       Byte1:  +---+---+---+---++---+---+---+---+FF即表明该动作为空。
;                 |   |  \-----------v----------/
;                 |   |              +----------->角色号。(0..62)
;                 |   +-------------------------->X 向翻转。
;                 +------------------------------>初始化旗标。0:该动性未做初始化。
;                                                       1:该动性初始化完成。
;       Byte2:  +---+---+---+---++---+---+---+---+
;                 |   |   |  \---------v--------/
;                 |   |   |            +--------->动性编号。
;                 |   |   +---------------------->循环使能。0:不允许循环。
;                 |   |                                 本动性完成后自动回到预备式。
;                 |   |                                 1:允许循环。重复本动性。
;                 |   |                                 对于主角,若该位使能且新动性
;                 |   |                                 与旧动性相同,忽略这种变化。
;                 |   +-------------------------->碰撞使能。0:不允许碰撞。
;                 |                                     1:允许碰撞。
;                 +------------------------------>按键使能。0:不允许接受按键。(仅用于主角)
;                                                       1:允许接受按键。
;       Byte3:  +---+---+---+---++---+---+---+---+
;                \--v--/ \-----------v----------/
;                   |                +----------->分镜计数器,即第几张分镜。
;                   +---------------------------->敌物类型:
;                                                       00:一般对象。
;                                                       01:局部对象。
;                                                       10:全局对象。
;                                                       11:未定义。
;       Byte4:  +---+---+---+---++---+---+---+---+分____延时计数器。V_BLANK
;                \------v------/  \------v------/
;                       |                |
;                       |                +------->延时计数值。
;                       +------------------------>应____长度。
;       Byte5:  +---+---+---+---++---+---+---+---+ActerID,角色id.
;       Byte6:  +---+---+---+---++---+---+---+---+部件控制字。初始化用,
;                 |   |   |  \--------v---------/
;                 |   |   |           |
;                 |   |   |           +----------->控制字补充说明。
;                 |   |   +----------------------->控__字____
;                 |   |                             1: 位移移动控制字有效。
;                 |   |                                其动画移动位移由控
;                 |   |                                制字补充说明决定。
;                 |   |                                胀ㄐ钥刂谱郑__灾视?
;                 |   |                                控制字扩充说明决定。
;                 |   +--------------------------->初始化方向控制字。
;                 |                                 0: __动____原方向初始化。
;                 |                                 1: 根据主角位置初始化。
;                 +------------------------------->未用,系统保留。
;           注:对特定的动性,其解释__式____户自定义。该解释用于GetNextSnap。
MOTION              DS      48
;=======================================================
         ORG       0300H            ;用于確_乓____谋淞?
;=======================================================
         ORG       03CEH
LocalObject         DS      16
;局部敌物表,每项一位,共128项/关。
;定__该____在本关是
            ___     08                  ;down slope
            BNE     ?NoIceLand
            LDA     SPRITE
            CLC
            ADC     #$02
            STA     SPRITE
            LDA     SPRITE+1
            ADC     #$0
            STA     SPRITE+1

;           LDA     SPRITE+7
;           AND     #$7F
;           STA     SPRITE+7
?NoIceLand:
            RTS
;-----------------------------------------------------
Just__e:
            LDA     MOTION+4
            AND     #$04
            BEQ     ?NextBG0
            LDA     #$04
            JMP     ?JustEnd
?NextBG0:
            LDA     MOTION+4
            AND     #$08
            BEQ     ?JustEnd
            LDA     ___8
?JustEnd:
            RTS
;-----------------------------------------------------
ProceStage3:
            LDA     SCRPAGE_X
            BEQ     ?InBlackScreen
            CMP     #__
            BEQ     ?InBlackScreen
            CMP     #29
            BEQ     ?InBlackScreen
            CMP     #38
            BNE     ?NoInStar
?InBlackScreen:
            LDA     #$0
            SEC
            SBC     SPRITE
            CMP     #48
            BCS     ?NoRightEnd

            LDA     PORT2001
            AND     #$E7
            STA     PORT2001            ;turn off the display


            LDA     MOTION+5
            ORA     #$60                ;set MC's death flag, death[?] motion ends when [???]
            STA     MOTION+5

            LDA     NUMBER_LIFE
            CLC
            ADC     #$01
            STA     NUMBER_LIFE         ;revert life decrease caused by the fake death

            LDA     SCRPAGE_X
            CLC
            ADC     #$02
            STA     Countinue_X

            LDA     #$FF
            STA     CLOSE_FLAG          ;mark this as a fake death
?NoRightEnd:
            LDA     #$FF
            JMP     ?ProceEnd
?NoInSt__:
            LDA     MOTION+4
            AND     #$10
            BEQ     ?NoInRail
            LDA     MOTION
            AND     #$3F
            BNE     ?NoInRail
            LDA     #$FF
            JMP     ?ProceEnd
?NoInRail:
            LDA     __0
?ProceEnd:
            RTS
;-----------------------------------------------------
PassStage:
            LDX     STAGE
            CPX     #$FF
            BEQ     ?OverStage
            L__     ____eData,X
            CMP     SCRPAGE_X
            BNE     ?NoOverStage
            LDA     SCREEN_X
            SEC
            SBC     SPRITE
            CMP     #40
            BCS     ?NoOverStage

            LDA     #$FF
            STA     _LOSE_FLAG              ;keep the original amount of hearts and lives
?OverStage:
            LDA     STAGE
            CLC
            ADC     #$01
            STA     H_BUFFER+1              ;save level number

            LDA     #$2C
            STA     BG_PAL01
            LDA     #$0C
            STA     BG_PAL01+1
            LDA     #$0F
            STA     BG_PAL01+2

            LDA     #$17
            STA     BG_PAL02
            LDA     #$07
            STA     BG_PAL02+1
            ___     #$0F
            STA     BG_PAL02+2
            
            LDA     #$FF
            JMP     ?StageEnd
?NoOverStage:
            LDA     #$00
?StageEnd:
            RTS
StageData:
            DB      33,34,36,39__,3__
;-----------------------------------------------------
ProceTitle:
            LDA     #$7
            STA     STAGE

            LDA     #$17
            STA     BG_PAL01
            LDA     #$28
            STA     BG_PAL01+1
            LDA     #$0F
            STA     BG_PAL01+2

            LDA     #$17
            STA     BG_PAL02
            LDA     #$27
            STA     BG_PAL02+1
            LDA     #$0F
            STA     BG_PAL02__
            LDA     #15
            STA     MOTION
            LDA     #$0
            STA     MOTION+1

            LDA     #108
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #79
            STA     SPRITE+_
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7

            LDA     #15
            STA     MOTION+6
            LDA     #$01
            STA     MOTION+7
            LDA     #120
            STA     SPRITE+1__
            LDA     #$0
            STA     SPRITE+11
            LDA     #79
            STA     SPRITE+12
            LDA     #$0
            STA     SPRITE+13
            STA     SPRITE+17

            LDA     #53
            STA     MOTION+12
            LDA     #$0
            STA     MOTION+13
            LDA     #128
            STA     SPRITE+20
            LDA     #0
            STA     SPRITE+21
            LDA     #200
            STA     SPRITE+22
            LDA     #0
            STA     SPRITE+__
            STA     SPRITE+27
            RTS
;-----------------------------------------------------
Game_Over:
            LDA     #$09
            STA     STAGE

            LDA     #$27
            STA     BG_PAL01
            LDA     #$27
            STA     BG_PAL01+1
            LDA     #$37
            STA     BG_PAL01+2

            LDA     #$3F
            STA     BG_PAL02
            LDA     #$2D
            STA     BG_PAL02+1
            LDA     #$00
            STA     BG_PAL02+2


            LDA     #51
            ORA     #$80                ;don't zero at[?] the last frame
            STA     MOTION
            LDA     #$0
            STA     MOTION+1

            LDA     #130
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #200
            STA     SPRITE+2
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7

            RTS
;-----------------------------------------------------
ProcePassStage:
            LDA     #52
            STA     MOTION
            LDA     H_BUFFER+1
            CLC
            ADC     #$05
            STA     MOTION+1

            LDA     #20
            STA     SPRITE
            LDA     #$0
            STA     SPRITE+1
            LDA     #160
            STA     SPRITE+2
            LDA     #$0
            STA     SPRITE+3
            STA     SPRITE+7            ;initial position[?] of the signpost
            LDA     #$0
            STA     MOTION+6
            LDA     #$01
            STA     MOTION+7

            LDA     #8
            STA     SPRITE+10
            LDA     #$0
            STA     SPRITE+11
            LDA     #160
            STA     SPRITE+12
            LDA     #0
            STA     SPRITE+13
            RTS
;-----------------------------------------------------
GameOverAction:
            LDA     MOTION+6
            CMP     __06__
            BNE     ?Countinue
            LDA     MOTION+7
            BNE     ?Countinue
            JMP     ?NoEndFrame
?Countinue:
            LDA     MOTION+5
            AND     #$40
            BEQ     ?NoEndFrame

            ___     MOTION+6
            CMP     #$06
            BEQ     ?NoFirst

            LDA     #$06
            STA     MOTION+6
            LDA     #$1
            STA     MOTION+7
            STA     MOTION+8
            STA     MOTION+9
            STA     MOTION+10
            STA     MOTION+11

            LDA     #8
            STA     SPRITE+10
            LDA     #$0
            STA     SPRITE+11
            LDA     #200
            STA     SPRITE+12
            LDA     #$0
            STA     SPRITE+13
            STA     SPRITE+17
?NoFirst:
            LDA     SPRITE+10
            CMP     #130
            BCC     ?NoEndFrame
            LDA     #$0
            STA     MOTION+7
            STA     MOTION+8
            STA     MOTION+9
            ___     _________
            ORG         C000H  
_MainGetAction      DS      3
_MainGetFrame       DS      3
_ChangeNumber       DS      3
_InstallKey         DS      _
 ____5H         ;DS 2 
NMI_FLAG        EQU             0027H           ;DS 1
;======================================================
ADDR5           EQU             0028H           ;____
ADDR6           EQU             002AH           ;DS 2
ADDR7           EQU             002CH           ;DS 2
JUMPCOUNT       EQU             002EH           ;DS 1 stores the amount of jumps
ACTION_B__K     EQU             002FH           ;DS 1 
Y_VERTICA       EQU             0030H           ;DS 1 stores MC's freefall offset
WINDOWBUFFER    EQU             0031H           ;DS 192 stores the PNT buffer for MC's code
;The following unit is for [??]'s variable page 0 [???]
;======================================================
;This part from $0200-$02C3 is for CORE.INC

            ORG     02C3H
                    DS
;--------------------- MOTION ------------------------
;MOTION:
;       Byte1:  +---+---+---+---++---+---+---+---+FF means that this action is empty.
;                 |   |  \-----------v----------/
;                 |   |              +----------->Actor ID. (0..62)
;                 |   +-------------------------->X-axis flip flag.
;                 +------------------------------>Init flag. 0: This motion is uninitialized.
;                                                       1: This motion was initialized.
;       Byte2:  +---+---+---+---++---+---+---+---+
;                 |   |   |  \---------v--------/
;                 |   |   |            +--------->Motion ID.
;                 |   |   +---------------------->Loop toggle. 0: Disallows looping.
;                 |   |                                 After this motion is completed, the initial motion is restored.
;                 |   |                                 1: Allows looping. This motion will be repeated.
;                 |   |                                 For MC, if this flag is enabled [?] and the new motion
;                 |   |                                 is the same as the old one, the change is ignored.
;                 |   +-------------------------->Collision toggle. 0: Disallows collision.
;                 |                                     1: Allows collision.
;                 +------------------------------>Input toggle. 0: Disallows input handling. (for the MC only)
;                                                       1: Allows input handling.
;       Byte3:  +---+---+---+---++---+---+---+---+
;                \--v--/ \-----------v----------/
;                   |                +----------->Frame counter, i.e. the current frame.
;                   +---------------------------->Enemy type:
;                                                       00: Normal object.
;                                                       01: Local object.
;                                                       10: Global object.
;                                                       11: Undefined.
;       Byte4:  +---+---+---+---++---+---+---+---+Frame[???] delay counter. V_BLANK
;                \------v------/  \------v------/
;                       |                |
;                       |                +------->Delay counter.
;                       +------------------------>Length of [???].
;       Byte5:  +---+---+---+---++---+---+---+---+ActerID, actor ID.
;       Byte6:  +---+---+---+---++---+---+---+---+Component control byte. for initialization,
;                 |   |   |  \--------v---------/
;                 |   |   |           |
;                 |   |   |           +----------->Extra information for control bytes.
;                 |   |   +----------------------->[???] control byte.
;                 |   |                             1: Displacing[???] movement control byte is valid.
;                 |   |                                The amount of displacing in the animation [???]
;                 |   |                                is decided by the extra information control byte.
;                 |   |                                [garbled]
;                 |   |                                by the extra information control byte.
;                 |   +--------------------------->Initial direction control byte.
;                 |                                 0: Initialized according to the original direction of the [???].
;                 |                                 1: Initialized according to MC's position.
;                 +------------------------------->Unused, reversed for the system.
;           Note: For specific motions, the explanation of [???] is user-defined[?].
;           The explanation here is relevant to GetNextSnap.
MOTION              DS      48
;=======================================================
         ORG       0300H            ;For [garbled]
;=======================================================
         ORG       03CEH
LocalObject         DS      16
;Local enemy table, one bit for every entry, 128 entries total for every level.
;Defines whether this [???] is [cut off] in this level