Mario <-> Level interaction points notes 1.0 By Smallhacker Disassembly of routine responsible for loading and using the interaction points: X = Point to check for collision with CODE_00F44D: E8 INX CODE_00F44E: E8 INX CODE_00F44F: C2 20 REP #$20 CODE_00F451: A5 94 LDA RAM_MarioXPos CODE_00F453: 18 CLC CODE_00F454: 7D 30 E8 ADC.W DATA_00E830,X CODE_00F457: 85 9A STA RAM_BlockYLo CODE_00F459: A5 96 LDA RAM_MarioYPos CODE_00F45B: 18 CLC CODE_00F45C: 7D 9C E8 ADC.W DATA_00E89C,X CODE_00F45F: 85 98 STA RAM_BlockXLo CODE_00F461: 20 65 F4 JSR.W CODE_00F465 Return00F464: 60 RTS The interaction points: X = The value of X passed to the routine above Tb = X + 2, the index to use in the tables X/Y = X/Y coordinates of the interaction point, relative to Mario's X/Y coordinates Event = Mario status (Big Mario ducking uses small Mario's corresponding interaction points) Point = Which part of Mario the point represents --------------------------------------------------- X Tb X/Y Event Point --------------------------------------------------- 00 02 08/18 Small standing Center 02 04 0E/1A Small standing Side Body 04 06 0E/16 Small standing Side Head 06 08 08/10 Small standing Head 08 0A 05/20 Small standing Left foot 0A 0C 0B/20 Small standing Right foot --------------------------------------------------- 0C 0E 08/18 Small walking Center 0E 10 02/1A Small walking Side Body 10 12 02/16 Small walking Side Head 12 14 08/10 Small walking Head 14 16 0B/20 Small walking Right foot 16 18 05/20 Small walking Left foot --------------------------------------------------- 18 1A 08/12 Big standing Center 1A 1C 0E/1A Big standing Side Body 1C 1E 0E/0F Big standing Side Head 1E 20 08/08 Big standing Head 20 22 05/20 Big standing Left foot 22 24 0B/20 Big standing Right foot --------------------------------------------------- 24 26 08/12 Big walking Center 26 28 02/1A Big walking Side Body 28 2A 02/0F Big walking Side Head 2A 2C 08/08 Big walking Head 2C 2E 0B/20 Big walking Right foot 2E 30 05/20 Big walking Left foot --------------------------------------------------- 30 32 08/1D Small Yoshi standing Center 32 34 0E/28 Small Yoshi standing Side Body 34 36 0E/19 Small Yoshi standing Side Head 36 38 08/13 Small Yoshi standing Head 38 3A 05/30 Small Yoshi standing Left foot 3A 3C 0B/30 Small Yoshi standing Right foot --------------------------------------------------- 3C 3E 08/1D Small Yoshi walking Center 3E 40 02/28 Small Yoshi walking Side Body 40 42 02/19 Small Yoshi walking Side Head 42 44 08/13 Small Yoshi walking Head 44 46 0B/30 Small Yoshi walking Right foot 46 48 05/30 Small Yoshi walking Left foot --------------------------------------------------- 48 4A 08/1A Big Yoshi standing Center 4A 4C 0E/28 Big Yoshi standing Side Body 4C 4E 0E/16 Big Yoshi standing Side Head 4E 50 08/10 Big Yoshi standing Head 50 52 05/30 Big Yoshi standing Left foot 52 54 0B/30 Big Yoshi standing Right foot --------------------------------------------------- 54 56 08/1A Big Yoshi walking Center 56 58 02/28 Big Yoshi walking Side Body 58 5A 02/16 Big Yoshi walking Side Head 5A 5C 08/10 Big Yoshi walking Head 5C 5E 0B/30 Big Yoshi walking Right foot 5E 60 05/30 Big Yoshi walking Left foot --------------------------------------------------- 60 62 10/18 Running up wall? 62 64 20/18 Running up wall? 64 66 07/18 Running up wall? 66 68 00/18 Running up wall? 68 6A F0/18 Running up wall? 6A 6C 08/18 Running up wall? --------------------------------------------------- The X and Y coordinates are stored as 16-bit values at $00/E830 (X) and $00/E89C (Y). The first two bytes of these tables are not actually part of it and are therefore omitted here. DATA_00E830: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 -- -- $08,$00,$0E,$00,$0E,$00,$08,$00,$05,$00,$0B,$00,$08,$00 1 $02,$00,$02,$00,$08,$00,$0B,$00,$05,$00,$08,$00,$0E,$00,$0E,$00 2 $08,$00,$05,$00,$0B,$00,$08,$00,$02,$00,$02,$00,$08,$00,$0B,$00 3 $05,$00,$08,$00,$0E,$00,$0E,$00,$08,$00,$05,$00,$0B,$00,$08,$00 4 $02,$00,$02,$00,$08,$00,$0B,$00,$05,$00,$08,$00,$0E,$00,$0E,$00 5 $08,$00,$05,$00,$0B,$00,$08,$00,$02,$00,$02,$00,$08,$00,$0B,$00 6 $05,$00,$10,$00,$20,$00,$07,$00,$00,$00,$F0,$FF,$08,$00 DATA_00E89C: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 -- -- $18,$00,$1A,$00,$16,$00,$10,$00,$20,$00,$20,$00,$18,$00 1 $1A,$00,$16,$00,$10,$00,$20,$00,$20,$00,$12,$00,$1A,$00,$0F,$00 2 $08,$00,$20,$00,$20,$00,$12,$00,$1A,$00,$0F,$00,$08,$00,$20,$00 3 $20,$00,$1D,$00,$28,$00,$19,$00,$13,$00,$30,$00,$30,$00,$1D,$00 4 $28,$00,$19,$00,$13,$00,$30,$00,$30,$00,$1A,$00,$28,$00,$16,$00 5 $10,$00,$30,$00,$30,$00,$1A,$00,$28,$00,$16,$00,$10,$00,$30,$00 6 $30,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00