the cutting room mirror

Tom and Jerry 3

An unlicensed platformer based on Tom and Jerry.

Sub-Page#

Dragon Software Screen#

Tom_and_Jerry_3-dragonsoftware.png

FCEUX cheat 02AA?05:0C will replace the game's intro with an unused Dragon Software screen. It's unknown why it was removed from the game.

Uncompiled Source Code#

Starts at 0x7E653 and continues until the end of the ROM.

LDA MOTION,X
    AND #$7F
    STA MOTION,X
    LDA #FFH
    STA BGMeetFlag
            LDA     #<Act0009PosProc4
            STA     SNAPPOS_PROC
ÿÿ                      LDA             #>Act0009PosProc4
            STA     SNAPPOS_PROC+1
?EXIT9
    RTS
;===========================================
PLAY_MUSIÿÿ
        MUSIC_NUM

    JSR CONMB_MUSIC_INIT_CHECK
    RTS
;===========================================
;===========================================
    ÿÿ      C000H
_ResetKeyEntry1     DS  3
CheckBGMeet1:       DS  3
SET_SPRMEET_F1      DS  3
SET_ACT00_WEAPON    DS  3
SET_ACT01_WEAPON    DS  3
_ResetKeyEntry      DS  3
SETÿÿPR    _F       DS  3
CheckBGMeet:        DS  3       ;8

SET_SCATHE      DS  3       ;9
LOST_LIFE       DS  3       ;10
DOWN_SCROLL     DS  3       ;11

GET_RANDOM1     DS  3       ;12
GET_RANDOM2     Dÿÿ3        
CONMB_MUSIC_INIT_CHECK  DS  3       ;14
;===========================================
;    ORG     F300H
;        INCLUDE SPRITE.ASM
    END
;================ÿÿ==    ===================
�--
ACTProc#0013:
            LDA     #<Act0101InitProc
            STA     SNAPINIT_PROC
                        LDA             #>Act0101InitPÿÿc
    STA     SNAPINIT_PROC+1
            LDA     #<Act0013EndProc
            STA     SNAPEND_PROC
                        LDA             #>Act0013EndProc
            STA     SNAPEND_ÿÿOC                LDA     #<Act0010IncProc
            STA     SNAPINC_PROC
                        LDA             #>Act0010IncProc
            STA     SNAPINC_PROC+1
            JMP     GetNexÿÿna    ct0013EndProc
    LDA #D5H
    STA MOTION+1,X
    JSR _ResetKeyEntry
            LDA     MOTION+2,X
            AND     #$C0
            STA     MOTION+2,X          
;            LDA         MOTION+5,X
ÿÿ                   #$BF
;            STA         MOTION+5,X
            LDA     MOTION,X
            AND     #$7F
            STA     MOTION,X
            JSR     GetFrameAddress
            JSR     SetSnapPos
            RTS
;--------ÿÿ--    -------------------------------------
ACTProc#0014:
            LDA     #<Act0001InitProc
            STA     SNAPINIT_PROC
                        LDA             ÿÿAc    1InitProc
            STA     SNAPINIT_PROC+1
            LDA     #<Act0012EndProc
            STA     SNAPEND_PROC
                        LDA             #>Act0012EndProc
        ÿÿTA    APEND_PROC+1
            LDA     #<Act0012IncProc
            STA     SNAPINC_PROC
                        LDA             #>Act0012IncProc
            STA     SNAPINC_PROC+1
ÿÿ  J    GetNextSnap
;-----------------------------------------------------
ACTProc#0015:
            LDA     #<Act0101InitProc
            STA     SNAPINIT_PROC
          ÿÿ            LDA             #>Act0101InitProc
            STA     SNAPINIT_PROC+1
            LDA     #<Act0015IncProc
            STA     SNAPINC_PROC
                        LDA   ÿÿ        #>Act0015IncProc
            STA     SNAPINC_PROC+1
            JMP     GetNextSnap
Act0015IncProc:
    LDA MOTION
    AND #40H
    BNE ?S1_5
    LDA SPRITE
    CLC
    ADC #5ÿÿ    S    PRITE_X
    LDA SPRITE+1
    ADC #0
    STA SPRITE_X+1
    JMP ?A1_8
?S1_5
    LDA SPRITE
    SEC
    SBC #5
    STA SPRITE_X
    LDA SPRITE+1
    SBC #0
    STA SPRÿÿE_    
?A1_8
            LDA     SPRITE+2
            CLC
            ADC     #8
            STA     SPRITE_Y
            LDA     SPRITE+3
            ADC     #0
            STA     SPRITE_Y+1
    LDA SPRITE_Y
    CMP #240
    BCCÿÿC1    EC
    SBC #240
    STA SPRITE_Y
    INC SPRITE_Y+1
?C1
            LDA     #$92
            JSR     CheckBGMeet

    JSR SET_SPRMEET_F

            LDA     BGMeetFlag
            AND     #10H
ÿÿBN    ROC_D
            LDA     BGMeetFlag
            AND     #02H
    BNE ?PROC_E
    JMP ?PROC_F
?PROC_D
    LDA #$CB
    STA MOTION+1,X
    JSR _ResetKeyEntry

    LDA MOTION+2,Xÿÿ    A    $C0
    STA MOTION+2,X
;    LDA     #0
;    STA     MOTION+5,X
    LDA MOTION,X
    AND #$7F
    STA MOTION,X
            LDA     #<Act0015PosProc1
            STA     SNAPPOS_PROC
ÿÿ                      LDA             #>Act0015PosProc1
            STA     SNAPPOS_PROC+1
    JMP ?EXIT0F
?PROC_E
    LDA #$C0
    STA MOTION+1,X
    JSR _ResetKeyEntrÿÿ

    A   MOTION+2,X
    AND #$C0
    STA MOTION+2,X
;    LDA     #0
;    STA     MOTION+5,X
    LDA MOTION,X
    AND #$7F
    STA MOTION,X
            LDA     #<Act0015PosProc2
        ÿÿTA    APPOS_PROC
                        LDA             #>Act0015PosProc2
            STA     SNAPPOS_PROC+1
    JMP ?EXIT0F

?PROC_F
            LDA     BGMeetFlag
            Aÿÿ         
    BEQ ?PROC_G
    LDA BG_CONTROL22
    AND #40H
    BEQ ?PROC_G

    LDA #$D2
    STA MOTION+1,X
    JSR _ResetKeyEntry

    LDA MOTION+2,X
    AND #$C0
    STÿÿMO    +2,X
;    LDA     #0
;    STA     MOTION+5,X
    LDA MOTION,X
    AND #$7F
    STA MOTION,X
            LDA     #<Act0015PosProc2
            STA     SNAPPOS_PROC
                ÿÿ      LDA             #>Act0015PosProc2
            STA     SNAPPOS_PROC+1
    JMP ?EXIT0F

?PROC_G
            LDA     #<Act0015PosProc1
            STA     SNAPPOS_PROC
           ÿÿ           LDA             #>Act0015PosProc1
            STA     SNAPPOS_PROC+1
?EXIT0F
    RTS

Act0015PosProc2
            LDA     BG_SUPPORT+0
            STA     SPRITE+2
            LDAÿÿBG    PORT+1
            STA     SPRITE+3

Act0015PosProc22
    LDA MOTION
    AND #40H
    BNE ?S1_5
    LDA SPRITE
    CLC
    ADC #5
    STA SPRITE
    LDA SPRITE+1
    ADC #ÿÿ
        SPRITE+1
    JMP ?A1_8
?S1_5
    LDA SPRITE
    SEC
    SBC #5
    STA SPRITE
    LDA SPRITE+1
    SBC #0
    STA SPRITE+1
?A1_8
    RTS

Act0015PosProc1
            ÿÿA     ITE+2
            CLC
            ADC     #8
            STA     SPRITE+2
            LDA     SPRITE+3
            ADC     #0
            STA     SPRITE+3
    JMP Act0015PosProc22
;---------------------------ÿÿ--    ------------------
ACTProc#0016:
ACTProc#0017:
            LDA     #<Act0000InitProc
            STA     SNAPINIT_PROC
            LDA     #>Act0000InitProc
            STA     SNAPINIT_ÿÿOC               LDA     #<Act0016IncProc
            STA     SNAPINC_PROC
                        LDA             #>Act0016IncProc
            STA     SNAPINC_PROC+1
            JMP     GetNexÿÿna    
Act0016IncProc:
        JSR GET_SPRITE_XY

    JSR SET_SPRMEET_F

            JSR     DefaultIncProc

    LDA SPRMeetFlag1
    BEQ ?EXIT

    LDA #$C0
    STA MOTIONÿÿ,X    SR    _ResetKeyEntry

    LDA MOTION+2,X
    AND #$C0
    STA MOTION+2,X
;    LDA     MOTION+5,X
;    AND     #$BF
;    STA     MOTION+5,X
    LDA MOTION,X
    AND #$7Fÿÿ  S    OTION,X
?EXIT
    RTS
;-----------------------------------------------------
;-----------------------------------------------------
ACTProc#00ÿÿ:
    LDA     #<Act0001InitProc
            STA     SNAPINIT_PROC
                        LDA             #>Act0001InitProc
            STA     SNAPINIT_PROC+1
            LDA     #<Actÿÿ18    roc
            STA     SNAPEND_PROC
                        LDA             #>Act0018EndProc
            STA     SNAPEND_PROC+1
            JMP     GetNextSnap

Act0018EndPrÿÿ
    DA      MOTION+2,X
            AND     #$C0
            STA     MOTION+2,X          
            LDA     MOTION+5,X
            AND     #$BF
            STA     MOTION+5,X
            LDA     MOTION,X
            AND     #$7F
            STÿÿ    M    N,X
            JSR     GetFrameAddress
            JSR     SetSnapPos
            RTS
;-----------------------------------------------------
ACTProc#0019:
            LDA     #<Act00ÿÿIn    oc
            STA     SNAPINIT_PROC
                        LDA             #>Act0001InitProc
            STA     SNAPINIT_PROC+1
            LDA     #<Act0018EndProc
            STA ÿÿNA    _PROC
                        LDA             #>Act0018EndProc
            STA     SNAPEND_PROC+1
            JMP     GetNextSnap
;---------------------------------ÿÿ--    ------------
ACTProc#001A:
            LDA     #<Act0001InitProc
            STA     SNAPINIT_PROC

Version Differences#

There are two hacks of this game and respectively called Primitive and Primitive 2. One of a significant difference is for each of the characters - in the hacks series "Primitive" levels for Jerry are taken to the first part of the game (Primitive Man) and levels for Tom - to the second (Primitive Woman) .

(Source: IPS Community)

Title Screen#

  • Primitive series:
  • Primitive 2 series:
  • Russian hack version:

Original

Russian hack

44365 c64587e8f4a3e890afa2428fb12c1625d7e2428d.png Tom & Jerry 3 (Unl) (T+Rus Lancuster).png

Characters#

Jerry

Tom & Jerry 3

Primitive

Tom & Jerry 3(1).png 1677259160 primitive-eng 001.png

Tom

Tom & Jerry 3

Primitive 2

Tom & Jerry 3.png Primitv2 (1).png

Furthermore, all of the cutscene pictures after each stage have been replaced to a background explanation that tells the player what situation the Primitive facing.

Tom & Jerry 3

Primitive 2

A5zu7-3h6mo.png Primitive II.png