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

Tom and Jerry 3

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Tom and Jerry 3

Also known as: Tom and 3 Jerry (title screen)
Developer: Dragon
Publisher: Dragon
Platform: Unlicensed NES


SourceIcon.png This game has uncompiled source code.
CopyrightIcon.png This game has hidden developer credits.
GraphicsIcon.png This game has unused graphics.


NotesIcon.png This game has a notes page

An unlicensed platformer based on Tom and Jerry.

Sub-Page

Miscellaneous tidbits that are interesting enough to point out here.
Notes

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