diff options
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/bank03.asm | 22 | ||||
-rw-r--r-- | src/engine/bank07.asm | 792 | ||||
-rw-r--r-- | src/engine/bank1c.asm | 11 | ||||
-rw-r--r-- | src/engine/bank20.asm | 1447 | ||||
-rw-r--r-- | src/engine/home.asm | 110 |
5 files changed, 1119 insertions, 1263 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 55fa89c..872a37c 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -490,20 +490,21 @@ Func_c38f: ; c38f (3:438f) push bc ld a, [wd23a] ld e, a - ld a, [wd23b] + ld a, [wd23a + 1] ld d, a or e - jr z, .asm_c3c7 + jr z, .skip + push hl - ld b, $c0 - call Func_08bf + ld b, HIGH(wc000) + call InitBGMapDecompression ld a, [wd23d] ld [wTempPointerBank], a - ld a, [wd130] + ld a, [wBGMapHeight] inc a srl a ld b, a - ld a, [wd12f] + ld a, [wBGMapWidth] inc a srl a ld c, a @@ -511,7 +512,7 @@ Func_c38f: ; c38f (3:438f) .asm_c3b7 push bc ld b, $00 - call Func_3be4 + call DecompressBGMapFromBank ld hl, $10 add hl, de ld d, h @@ -519,7 +520,8 @@ Func_c38f: ; c38f (3:438f) pop bc dec b jr nz, .asm_c3b7 -.asm_c3c7 + +.skip pop bc pop hl ret @@ -571,10 +573,10 @@ Func_c3ee: ; c3ee (3:43ee) ret Func_c3ff: ; c3ff (3:43ff) - ld a, [wd12f] + ld a, [wBGMapWidth] sub $14 ld [wd237], a - ld a, [wd130] + ld a, [wBGMapHeight] sub $12 ld [wd238], a call Func_c41c diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 6d2f353..3755410 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -64,7 +64,7 @@ LoadMapHeader: ; 1c33b (7:433b) ld hl, MapHeaders add hl, bc ld a, [hli] - ld [wd131], a + ld [wCurTilemap], a ld a, [hli] ld c, a ld a, [hli] @@ -75,14 +75,17 @@ LoadMapHeader: ; 1c33b (7:433b) ld [wd290], a ld a, [hli] ld [wDefaultSong], a + ld a, [wConsole] cp CONSOLE_CGB - jr nz, .asm_1c370 + jr nz, .got_tilemap + ; use CGB variant, if valid ld a, c or a - jr z, .asm_1c370 - ld [wd131], a -.asm_1c370 + jr z, .got_tilemap + ld [wCurTilemap], a +.got_tilemap + pop de pop bc pop hl @@ -1516,784 +1519,7 @@ Func_1ce03: ; 1ce03 (7:4e03) dw Func_191a3 ; DUEL_ANIM_156 dw Func_191a3 ; DUEL_ANIM_157 -; data for each animation ID (see src/constants/sprite_constants.asm) -Animations: ; 1ce32 (7:4e32) - ; DUEL_ANIM_NONE - db $00 ; sprite ID - db $00 ; palette ID - db $00 ; anim ID - db $00 ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_GLOW - db SPRITE_DUEL_GLOW ; sprite ID - db $1f ; palette ID - db $47 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_11 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PARALYSIS - db SPRITE_DUEL_1 ; sprite ID - db $20 ; palette ID - db $48 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_12 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SLEEP - db SPRITE_DUEL_2 ; sprite ID - db $21 ; palette ID - db $49 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_13 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_CONFUSION - db SPRITE_DUEL_55 ; sprite ID - db $22 ; palette ID - db $4a ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_14 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_POISON - db SPRITE_DUEL_58 ; sprite ID - db $23 ; palette ID - db $4b ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_15 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_6 - db SPRITE_DUEL_3 ; sprite ID - db $24 ; palette ID - db $4c ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_16 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_HIT - db SPRITE_DUEL_3 ; sprite ID - db $24 ; palette ID - db $4d ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_16 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BIG_HIT - db SPRITE_DUEL_3 ; sprite ID - db $24 ; palette ID - db $4e ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_17 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SHOW_DAMAGE - db SPRITE_DUEL_4 ; sprite ID - db $25 ; palette ID - db $00 ; anim ID - db $00 ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_THUNDER_SHOCK - db SPRITE_DUEL_5 ; sprite ID - db $26 ; palette ID - db $5c ; anim ID - db $00 ; anim flags - db SFX_18 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_LIGHTNING - db SPRITE_DUEL_6 ; sprite ID - db $27 ; palette ID - db $5e ; anim ID - db $00 ; anim flags - db SFX_19 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BORDER_SPARK - db SPRITE_DUEL_59 ; sprite ID - db $28 ; palette ID - db $5f ; anim ID - db $00 ; anim flags - db SFX_1A ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BIG_LIGHTNING - db SPRITE_DUEL_7 ; sprite ID - db $29 ; palette ID - db $60 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_1B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SMALL_FLAME - db SPRITE_DUEL_8 ; sprite ID - db $2a ; palette ID - db $61 ; anim ID - db $00 ; anim flags - db SFX_1C ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BIG_FLAME - db SPRITE_DUEL_8 ; sprite ID - db $2a ; palette ID - db $62 ; anim ID - db $00 ; anim flags - db SFX_1D ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_FIRE_SPIN - db SPRITE_DUEL_9 ; sprite ID - db $2b ; palette ID - db $63 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_1E ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DIVE_BOMB - db SPRITE_DUEL_10 ; sprite ID - db $2c ; palette ID - db $64 ; anim ID - db $00 ; anim flags - db SFX_1F ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WATER_JETS - db SPRITE_DUEL_61 ; sprite ID - db $2d ; palette ID - db $69 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_20 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WATER_GUN - db SPRITE_DUEL_11 ; sprite ID - db $2e ; palette ID - db $6a ; anim ID - db $00 ; anim flags - db SFX_21 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WHIRLPOOL - db SPRITE_DUEL_12 ; sprite ID - db $2f ; palette ID - db $6b ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_22 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_HYDRO_PUMP - db SPRITE_DUEL_13 ; sprite ID - db $30 ; palette ID - db $6c ; anim ID - db $00 ; anim flags - db SFX_23 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BLIZZARD - db SPRITE_DUEL_62 ; sprite ID - db $31 ; palette ID - db $6d ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_24 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PSYCHIC - db SPRITE_DUEL_14 ; sprite ID - db $32 ; palette ID - db $6e ; anim ID - db $00 ; anim flags - db SFX_25 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_GLARE - db SPRITE_DUEL_15 ; sprite ID - db $33 ; palette ID - db $6f ; anim ID - db $00 ; anim flags - db SFX_26 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BEAM - db SPRITE_DUEL_16 ; sprite ID - db $34 ; palette ID - db $70 ; anim ID - db (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) ; anim flags - db SFX_27 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_HYPER_BEAM - db SPRITE_DUEL_17 ; sprite ID - db $35 ; palette ID - db $71 ; anim ID - db (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) ; anim flags - db SFX_28 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_ROCK_THROW - db SPRITE_DUEL_18 ; sprite ID - db $36 ; palette ID - db $72 ; anim ID - db $00 ; anim flags - db SFX_29 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_STONE_BARRAGE - db SPRITE_DUEL_18 ; sprite ID - db $36 ; palette ID - db $73 ; anim ID - db $00 ; anim flags - db SFX_2A ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PUNCH - db SPRITE_DUEL_19 ; sprite ID - db $37 ; palette ID - db $74 ; anim ID - db $00 ; anim flags - db SFX_2B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_THUNDERPUNCH - db SPRITE_DUEL_19 ; sprite ID - db $37 ; palette ID - db $75 ; anim ID - db $00 ; anim flags - db SFX_52 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_FIRE_PUNCH - db SPRITE_DUEL_19 ; sprite ID - db $37 ; palette ID - db $76 ; anim ID - db $00 ; anim flags - db SFX_53 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_STRETCH_KICK - db SPRITE_DUEL_20 ; sprite ID - db $38 ; palette ID - db $77 ; anim ID - db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags - db SFX_2C ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SLASH - db SPRITE_DUEL_21 ; sprite ID - db $39 ; palette ID - db $78 ; anim ID - db $00 ; anim flags - db SFX_2D ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WHIP - db SPRITE_DUEL_22 ; sprite ID - db $3a ; palette ID - db $7a ; anim ID - db $00 ; anim flags - db SFX_2D ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_TEAR - db SPRITE_DUEL_23 ; sprite ID - db $3b ; palette ID - db $7b ; anim ID - db $00 ; anim flags - db SFX_2E ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_FURY_SWIPES - db SPRITE_DUEL_21 ; sprite ID - db $39 ; palette ID - db $79 ; anim ID - db $00 ; anim flags - db SFX_2F ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DRILL - db SPRITE_DUEL_24 ; sprite ID - db $3c ; palette ID - db $7c ; anim ID - db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags - db SFX_30 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_POT_SMASH - db SPRITE_DUEL_25 ; sprite ID - db $3d ; palette ID - db $7d ; anim ID - db $00 ; anim flags - db SFX_31 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BONEMERANG - db SPRITE_DUEL_26 ; sprite ID - db $3e ; palette ID - db $7e ; anim ID - db $00 ; anim flags - db SFX_32 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SEISMIC_TOSS - db SPRITE_DUEL_27 ; sprite ID - db $3f ; palette ID - db $7f ; anim ID - db $00 ; anim flags - db SFX_33 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_NEEDLES - db SPRITE_DUEL_28 ; sprite ID - db $40 ; palette ID - db $80 ; anim ID - db $00 ; anim flags - db SFX_34 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WHITE_GAS - db SPRITE_DUEL_29 ; sprite ID - db $41 ; palette ID - db $81 ; anim ID - db $00 ; anim flags - db SFX_35 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_POWDER - db SPRITE_DUEL_56 ; sprite ID - db $42 ; palette ID - db $82 ; anim ID - db $00 ; anim flags - db SFX_36 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_GOO - db SPRITE_DUEL_30 ; sprite ID - db $43 ; palette ID - db $83 ; anim ID - db $00 ; anim flags - db SFX_37 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BUBBLES - db SPRITE_DUEL_31 ; sprite ID - db $44 ; palette ID - db $84 ; anim ID - db $00 ; anim flags - db SFX_38 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_STRING_SHOT - db SPRITE_DUEL_32 ; sprite ID - db $45 ; palette ID - db $85 ; anim ID - db $00 ; anim flags - db SFX_39 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BOYFRIENDS - db SPRITE_DUEL_33 ; sprite ID - db $46 ; palette ID - db $86 ; anim ID - db $00 ; anim flags - db SFX_3A ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_LURE - db SPRITE_DUEL_34 ; sprite ID - db $47 ; palette ID - db $87 ; anim ID - db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags - db SFX_3B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_TOXIC - db SPRITE_DUEL_35 ; sprite ID - db $48 ; palette ID - db $88 ; anim ID - db $00 ; anim flags - db SFX_3C ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_CONFUSE_RAY - db SPRITE_DUEL_66 ; sprite ID - db $49 ; palette ID - db $89 ; anim ID - db $00 ; anim flags - db SFX_3D ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SING - db SPRITE_DUEL_36 ; sprite ID - db $4a ; palette ID - db $8a ; anim ID - db $00 ; anim flags - db SFX_3E ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SUPERSONIC - db SPRITE_DUEL_37 ; sprite ID - db $4b ; palette ID - db $8b ; anim ID - db $00 ; anim flags - db SFX_3F ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PETAL_DANCE - db SPRITE_DUEL_57 ; sprite ID - db $4c ; palette ID - db $8c ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_40 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PROTECT - db SPRITE_DUEL_38 ; sprite ID - db $4d ; palette ID - db $8d ; anim ID - db $00 ; anim flags - db SFX_41 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BARRIER - db SPRITE_DUEL_39 ; sprite ID - db $4e ; palette ID - db $8e ; anim ID - db $00 ; anim flags - db SFX_42 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_QUICK_ATTACK - db SPRITE_DUEL_40 ; sprite ID - db $4f ; palette ID - db $8f ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_43 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_WHIRLWIND - db SPRITE_DUEL_41 ; sprite ID - db $50 ; palette ID - db $90 ; anim ID - db $00 ; anim flags - db SFX_44 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_CRY - db SPRITE_DUEL_42 ; sprite ID - db $51 ; palette ID - db $92 ; anim ID - db $00 ; anim flags - db SFX_45 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_QUESTION_MARK - db SPRITE_DUEL_43 ; sprite ID - db $52 ; palette ID - db $93 ; anim ID - db $00 ; anim flags - db SFX_46 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_SELFDESTRUCT - db SPRITE_DUEL_44 ; sprite ID - db $53 ; palette ID - db $94 ; anim ID - db $00 ; anim flags - db SFX_47 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BIG_SELFDESTRUCT_1 - db SPRITE_DUEL_44 ; sprite ID - db $53 ; palette ID - db $95 ; anim ID - db $00 ; anim flags - db SFX_48 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_HEAL - db SPRITE_DUEL_60 ; sprite ID - db $54 ; palette ID - db $97 ; anim ID - db $00 ; anim flags - db SFX_49 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DRAIN - db SPRITE_DUEL_64 ; sprite ID - db $55 ; palette ID - db $99 ; anim ID - db $00 ; anim flags - db SFX_4A ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DARK_GAS - db SPRITE_DUEL_29 ; sprite ID - db $56 ; palette ID - db $81 ; anim ID - db $00 ; anim flags - db SFX_4B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BIG_SELFDESTRUCT_2 - db SPRITE_DUEL_44 ; sprite ID - db $53 ; palette ID - db $96 ; anim ID - db $00 ; anim flags - db SFX_47 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_66 - db SPRITE_DUEL_3 ; sprite ID - db $24 ; palette ID - db $4d ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_16 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_67 - db SPRITE_DUEL_3 ; sprite ID - db $24 ; palette ID - db $4e ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_17 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_68 - db SPRITE_DUEL_5 ; sprite ID - db $26 ; palette ID - db $5c ; anim ID - db $00 ; anim flags - db SFX_18 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_69 - db SPRITE_DUEL_62 ; sprite ID - db $31 ; palette ID - db $6d ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_24 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_70 - db SPRITE_DUEL_45 ; sprite ID - db $57 ; palette ID - db $9a ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags - db SFX_11 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_71 - db SPRITE_DUEL_10 ; sprite ID - db $2c ; palette ID - db $65 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_5C ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_72 - db SPRITE_DUEL_10 ; sprite ID - db $2c ; palette ID - db $66 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_73 - db SPRITE_DUEL_60 ; sprite ID - db $54 ; palette ID - db $98 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_4C ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_74 - db SPRITE_DUEL_41 ; sprite ID - db $50 ; palette ID - db $91 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_4D ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_EXPAND - db SPRITE_DUEL_46 ; sprite ID - db $58 ; palette ID - db $9b ; anim ID - db $00 ; anim flags - db SFX_4E ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_76 - db SPRITE_DUEL_47 ; sprite ID - db $59 ; palette ID - db $9c ; anim ID - db $00 ; anim flags - db SFX_4F ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_THUNDER_WAVE - db SPRITE_DUEL_48 ; sprite ID - db $5a ; palette ID - db $9d ; anim ID - db $00 ; anim flags - db SFX_50 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_78 - db SPRITE_DUEL_10 ; sprite ID - db $2c ; palette ID - db $67 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_51 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_79 - db SPRITE_DUEL_10 ; sprite ID - db $2c ; palette ID - db $68 ; anim ID - db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_51 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_80 - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $9e ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PLAYER_SHUFFLE - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $9f ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_07 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_OPP_SHUFFLE - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a0 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_07 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BOTH_SHUFFLE - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a1 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_07 ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_84 - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a2 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_BOTH_DRAW - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a3 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_PLAYER_DRAW - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a4 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_OPP_DRAW - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a5 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_COIN_SPIN - db SPRITE_DUEL_50 ; sprite ID - db $5c ; palette ID - db $a7 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_COIN_TOSS1 - db SPRITE_DUEL_50 ; sprite ID - db $5c ; palette ID - db $a8 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_0B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_COIN_TOSS2 - db SPRITE_DUEL_50 ; sprite ID - db $5c ; palette ID - db $a9 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_0B ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_COIN_TAILS - db SPRITE_DUEL_50 ; sprite ID - db $5c ; palette ID - db $aa ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_COIN_HEADS - db SPRITE_DUEL_50 ; sprite ID - db $5c ; palette ID - db $ab ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DUEL_WIN - db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID - db $5d ; palette ID - db $ac ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DUEL_LOSS - db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID - db $5d ; palette ID - db $ad ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_DUEL_DRAW - db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID - db $5d ; palette ID - db $ae ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function - - ; DUEL_ANIM_96 - db SPRITE_DUEL_49 ; sprite ID - db $5b ; palette ID - db $a6 ; anim ID - db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags - db SFX_STOP ; sound FX ID - db $00 ; handler function -; 0x1d078 +INCLUDE "data/duel_animations.asm" Func_1d078: ; 1d078 (7:5078) ld a, [wd627] diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm index 2414681..08c607f 100644 --- a/src/engine/bank1c.asm +++ b/src/engine/bank1c.asm @@ -260,11 +260,11 @@ Func_701e9: ; 701e9 (1c:41e9) push bc ld e, l ld d, h - ld b, $c0 - call Func_08bf + ld b, HIGH(wc000) + call InitBGMapDecompression pop bc pop de - call Func_08de + call DecompressBGMap ret Func_701fe: ; 701fe (1c:41fe) @@ -328,4 +328,7 @@ Func_70214: ; 70214 (1c:4214) ret Unknown_7024a: ; 7024a (1c:424a) - INCROM $7024a, $74000 + INCROM $7024a, $7036a + +Func_7036a: ; 7036a (1c:436a) + INCROM $7036a, $74000 diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 60830e9..e4cadba 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -11,15 +11,40 @@ Func_80028: ; 80028 (20:4028) ret ; 0x8003d - INCROM $8003d, $80077 +Func_8003d: ; 8003d (20:403d) + farcall LoadMapHeader + farcall Func_7036a + ld bc, $0 + call Func_80077 + ld a, $80 + ld [wd4ca], a + xor a + ld [wd4cb], a + call LoadTilesetGfx + xor a + ld [wd4ca], a + ld a, [wd291] + ld [wd4cb], a + ld a, [wd28f] + call Func_803c9 + ld a, [wd291] + ld [wd4cb], a + ld a, [wd290] + or a + jr z, .asm_80076 + call Func_803c9 +.asm_80076 + ret +; 0x80077 Func_80077: ; 80077 (20:4077) ld a, $1 - ld [wd292], a + ld [wBGMapCopyMode], a jr Func_80082 xor a - ld [wd292], a + ld [wBGMapCopyMode], a +; fallthrough Func_80082: ; 80082 (20:4082) push hl @@ -30,24 +55,29 @@ Func_80082: ; 80082 (20:4082) ld [hl], e inc hl ld [hl], d + +; get pointer and bank for BG Map call Func_803b9 ld a, [wTempPointerBank] ld [wd23d], a - ld de, wLoadedPalData - ld bc, $0006 + +; store header data + ld de, wBGMapBuffer + ld bc, $0006 ; header + 1st instruction call CopyBankedDataToDE ld l, e ld h, d ld a, [hli] - ld [wd12f], a + ld [wBGMapWidth], a ld a, [hli] - ld [wd130], a + ld [wBGMapHeight], a ld a, [hli] ld [wd23a], a ld a, [hli] - ld [wd23b], a + ld [wd23a + 1], a ld a, [hli] ld [wd23c], a + call Func_800bd pop de pop bc @@ -64,8 +94,8 @@ Func_800bd: ; 800bd (20:40bd) ld a, [wTempPointer + 1] adc $00 ld d, a - ld b, $c0 - call Func_08bf + ld b, HIGH(wc000) + call InitBGMapDecompression ld a, [wVRAMPointer] ld e, a ld a, [wVRAMPointer + 1] @@ -77,63 +107,72 @@ Func_800bd: ; 800bd (20:40bd) ret Func_800e0: ; 800e0 (20:40e0) +; if wd23c != 0, then use double wBGMapWidth push hl ld hl, wd28e - ld a, [wd12f] + ld a, [wBGMapWidth] ld [hl], a ld a, [wd23c] or a jr z, .asm_800f0 sla [hl] .asm_800f0 + ld c, $40 - ld hl, wLoadedPalData + ld hl, wBGMapBuffer xor a -.asm_800f6 +.loop_clear ld [hli], a dec c - jr nz, .asm_800f6 - ld a, [wd130] + jr nz, .loop_clear + +; loop each row, up to the number of tiles in height + ld a, [wBGMapHeight] ld c, a -.asm_800fe +.loop push bc push de ld b, $00 ld a, [wd28e] ld c, a - ld de, wLoadedPalData - call Func_3be4 - ld a, [wd12f] + ld de, wBGMapBuffer + call DecompressBGMapFromBank + + ld a, [wBGMapWidth] ld b, a pop de push de - ld hl, wLoadedPalData - call Func_8016e + ld hl, wBGMapBuffer + call CopyBGDataToVRAMOrSRAM ld a, [wConsole] - cp $02 - jr nz, .asm_8013b + cp CONSOLE_CGB + jr nz, .next_row + + ; cgb only call BankswitchVRAM1 - ld a, [wd12f] + ld a, [wBGMapWidth] ld c, a ld b, $00 - ld hl, wLoadedPalData + ld hl, wBGMapBuffer add hl, bc pop de push de - ld a, [wd12f] + ld a, [wBGMapWidth] ld b, a call Func_80148 - call Func_8016e + call CopyBGDataToVRAMOrSRAM call BankswitchVRAM0 -.asm_8013b + +.next_row pop de - ld hl, $20 + ld hl, BG_MAP_WIDTH add hl, de ld e, l ld d, h pop bc dec c - jr nz, .asm_800fe + jr nz, .loop + pop hl ret @@ -144,59 +183,71 @@ Func_80148: ; 80148 (20:4148) ld a, [wd23c] or a jr z, .asm_80162 + +; add wd291 to b bytes in hl push hl push bc -.asm_80155 +.loop_1 push bc ld a, [wd291] add [hl] ld [hli], a pop bc dec b - jr nz, .asm_80155 + jr nz, .loop_1 pop bc pop hl ret + +; store wd291 to b bytes in hl .asm_80162 push hl push bc ld a, [wd291] -.asm_80167 +.loop_2 ld [hli], a dec b - jr nz, .asm_80167 + jr nz, .loop_2 pop bc pop hl ret -Func_8016e: ; 8016e (20:416e) - ld a, [wd292] +; copies BG Map data pointed by hl +; to either VRAM or SRAM, depending on wBGMapCopyMode +; de is the target address in VRAM, +; if SRAM is the target address to copy, +; copies data to s0BGMap or s1BGMap +; for VRAM0 or VRAM1 respectively +CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e) + ld a, [wBGMapCopyMode] or a jp z, SafeCopyDataHLtoDE + +; copies b bytes from hl to SRAM1 push hl push bc push de ldh a, [hBankSRAM] push af - ld a, $01 + ld a, BANK("SRAM1") call BankswitchSRAM push hl - ld hl, $800 + ld hl, s0BGMap - v0BGMap0 ldh a, [hBankVRAM] or a - jr z, .asm_8018c - ld hl, $c00 -.asm_8018c + jr z, .got_pointer + ld hl, s1BGMap - v1BGMap0 +.got_pointer add hl, de ld e, l ld d, h pop hl -.asm_80190 +.loop ld a, [hli] ld [de], a inc de dec b - jr nz, .asm_80190 + jr nz, .loop pop af call BankswitchSRAM call DisableSRAM @@ -323,7 +374,7 @@ Func_8025b: ; 8025b (20:425b) call LoadGraphicsPointerFromHL ld a, [hl] ; sprite number of tiles push af - ld [wCurSpriteNumTiles], a + ld [wTotalNumTiles], a ld a, TILE_SIZE ld [wCurSpriteTileSize], a call LoadGfxDataFromTempPointerToVRAMBank @@ -338,7 +389,7 @@ LoadGfxDataFromTempPointerToVRAMBank: ; 80274 (20:4274) jr LoadGfxDataFromTempPointer Func_80279: ; 80279 (20:4279) - call Func_802bb + call GetTileOffsetPointerAndSwitchVRAM_Tiles0ToTiles2 ; loads graphics data pointed by wTempPointer in wTempPointerBank ; to wVRAMPointer @@ -346,7 +397,7 @@ LoadGfxDataFromTempPointer: push hl push bc push de - ld a, [wCurSpriteNumTiles] + ld a, [wTotalNumTiles] ld b, a ld a, [wCurSpriteTileSize] ld c, a @@ -378,7 +429,7 @@ GetTileOffsetPointerAndSwitchVRAM: ; 8029f (20:429f) and $f0 ld [wVRAMPointer], a pop af - and $f + and $0f add HIGH(v0Tiles0) ; $80 ld [wVRAMPointer + 1], a @@ -389,33 +440,229 @@ GetTileOffsetPointerAndSwitchVRAM: ; 8029f (20:429f) call BankswitchVRAM ret -Func_802bb: ; 802bb (20:42bb) - ld a, [wd4ca] +; converts wVRAMTileOffset to address in VRAM +; and stores it in wVRAMPointer +; switches VRAM according to wd4cb +; then changes wVRAMPointer such that +; addresses to Tiles0 is changed to Tiles2 +GetTileOffsetPointerAndSwitchVRAM_Tiles0ToTiles2: ; 802bb (20:42bb) + ld a, [wVRAMTileOffset] push af - xor $80 - ld [wd4ca], a + xor $80 ; toggle top bit + ld [wVRAMTileOffset], a call GetTileOffsetPointerAndSwitchVRAM ld a, [wVRAMPointer + 1] add $8 ld [wVRAMPointer + 1], a pop af - ld [wd4ca], a + ld [wVRAMTileOffset], a ret ; 0x802d4 - INCROM $802d4, $803b9 +; loads tileset gfx to VRAM corresponding to wCurTileset +LoadTilesetGfx: ; 802d4 (20:42d4) + push hl + ld l, $02 + ld a, [wCurTileset] + call GetMapDataPointer + call LoadGraphicsPointerFromHL + call .LoadTileGfx + call BankswitchVRAM0 + pop hl + ret +; 0x802e8 + +; loads gfx data from wTempPointerBank:wTempPointer +.LoadTileGfx ; 802e8 (20:42e8) + push hl + push bc + push de + ld hl, wTempPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wTempPointerBank] + call GetFarByte ; get number of tiles (low byte) + ld [wTotalNumTiles], a + inc hl + ld a, [wTempPointerBank] + call GetFarByte ; get number of tiles (high byte) + ld [wTotalNumTiles + 1], a + inc hl + ld a, l + ld [wTempPointer], a + ld a, h + ld [wTempPointer + 1], a + +; used to sequentially copy gfx data in the order +; v0Tiles1 -> v0Tiles2 -> v1Tiles1 -> v1Tiles2 + + lb bc, $0, LOW(v0Tiles2 / TILE_SIZE) ; $00 + call .CopyGfxData + jr z, .done + lb bc, $0, LOW(v0Tiles1 / TILE_SIZE) ; $80 + call .CopyGfxData + jr z, .done + ; VRAM1 only used in CGB console + ld a, [wConsole] + cp CONSOLE_CGB + jr nz, .done + lb bc, $1, LOW(v1Tiles2 / TILE_SIZE) ; $00 + call .CopyGfxData + jr z, .done + lb bc, $1, LOW(v1Tiles1 / TILE_SIZE) ; $80 + call .CopyGfxData + +.done + pop de + pop bc + pop hl + ret +; 0x80336 + +; copies gfx data from wTempPointer to VRAM +; c must match with wVRAMTileOffset +; if c = $00, copies it to Tiles2 +; if c = $80, copies it to Tiles1 +; b must match with VRAM bank in wd4cb +; prepares next call to this routine if data wasn't fully copied +; so that it copies to the right VRAM section +.CopyGfxData ; 80336 (20:4336) + push hl + push bc + push de + ld a, [wd4cb] + cp b + jr nz, .skip + ld a, [wVRAMTileOffset] + ld d, a + xor c + bit 7, a + jr nz, .skip + +; (wd4cb == b) and +; bit 7 in c is same as bit 7 in wVRAMTileOffset + ld a, c + add $80 + sub d + ld d, a ; total number of tiles + ld a, [wTotalNumTiles + 1] + or a + jr nz, .asm_8035a + ; if d > wTotalNumTiles, + ; overwrite it with wTotalNumTiles + ld a, [wTotalNumTiles] + cp d + jr nc, .asm_8035a + ld d, a +.asm_8035a + ld a, [wTotalNumTiles] + sub d + ld [wTotalNumTiles], a + ld a, [wTotalNumTiles + 1] + sbc $00 + ld [wTotalNumTiles + 1], a + call GetTileOffsetPointerAndSwitchVRAM_Tiles0ToTiles2 + + ld b, d ; number of tiles + ld c, TILE_SIZE + ld hl, wVRAMPointer + ld e, [hl] + inc hl + ld d, [hl] + ld hl, wTempPointer + ld a, [hli] + ld h, [hl] + ld l, a + push bc + push hl + ldh a, [hBankVRAM] + push af + ld a, [wd4cb] + and $01 + call BankswitchVRAM + call CopyGfxDataFromTempBank + pop af + call BankswitchVRAM + pop de + pop bc + ; add number of tiles * TILE_SIZE + ; to wVRAMPointer and store it in wTempPointer + ld l, b + ld h, $00 + add hl, hl ; *2 + add hl, hl ; *4 + add hl, hl ; *8 + add hl, hl ; *16 (TILE_SIZE) + add hl, de + ld a, l + ld [wTempPointer], a + ld a, h + ld [wTempPointer + 1], a + + ld hl, wVRAMTileOffset + ld a, [hl] + add $80 + push af + and $80 ; start of next group of tiles + ld [hli], a + pop af + ; if it overflows + ; (which means a tile group after Tiles2) + ; then set wd4cb for VRAM1 + ld a, [hl] ; wd4cb + adc $00 + ld [hl], a + +.skip + ld hl, wTotalNumTiles + ld a, [hli] + or [hl] ; wTotalNumTiles + 1 + pop de + pop bc + pop hl + ret +; 0x803b9 + +; gets pointer to BG map with ID from wCurTilemap Func_803b9: ; 803b9 (20:43b9) ld l, $00 - ld a, [wd131] + ld a, [wCurTilemap] call GetMapDataPointer call LoadGraphicsPointerFromHL ld a, [hl] - ld [wd239], a + ld [wCurTileset], a ret ; 0x803c9 - INCROM $803c9, $803ec +Func_803c9: ; 803c9 (20:43c9) + push hl + push bc + push de + call CopyPaletteDataToBuffer + ld hl, wLoadedPalData + ld a, [hli] + or a + jr z, .asm_803dc + ld a, [hli] + push hl + call SetBGP + pop hl +.asm_803dc + ld a, [hli] + or a + jr z, .asm_803e8 + ld c, a + ld a, [wd4cb] + ld b, a + call LoadPaletteDataFromHL +.asm_803e8 + pop de + pop bc + pop hl + ret +; 0x803ec ; copies from palette data in hl c*8 bytes to palette index b ; in WRAM, starting from wBackgroundPalettesCGB @@ -571,7 +818,7 @@ Func_80b89: ; 80b89 (20:4b89) push af ld c, a ld a, $01 - ld [wd292], a + ld [wBGMapCopyMode], a ld b, $00 ld hl, wd323 add hl, bc @@ -589,7 +836,7 @@ Func_80b89: ; 80b89 (20:4b89) Func_80ba4: ; 80ba4 (20:4ba4) push af xor a - ld [wd292], a + ld [wBGMapCopyMode], a pop af ; Fallthrough @@ -598,17 +845,17 @@ Func_80baa: ; 80baa (20:4baa) push bc push de ld c, a - ld a, [wd131] + ld a, [wCurTilemap] push af ld a, [wd23d] push af - ld a, [wd12f] + ld a, [wBGMapWidth] push af - ld a, [wd130] + ld a, [wBGMapHeight] push af ld a, [wd23a] push af - ld a, [wd23b] + ld a, [wd23a + 1] push af ld b, $0 ld hl, wd323 @@ -635,7 +882,7 @@ Func_80baa: ; 80baa (20:4baa) .asm_80be7 ld a, [hl] - ld [wd131], a + ld [wCurTilemap], a push bc farcall Func_80082 pop bc @@ -651,17 +898,17 @@ Func_80baa: ; 80baa (20:4baa) add hl, bc farcall Func_c38f pop af - ld [wd23b], a + ld [wd23a + 1], a pop af ld [wd23a], a pop af - ld [wd130], a + ld [wBGMapHeight], a pop af - ld [wd12f], a + ld [wBGMapWidth], a pop af ld [wd23d], a pop af - ld [wd131], a + ld [wCurTilemap], a pop de pop bc pop hl @@ -678,208 +925,222 @@ SpriteNullAnimationFrame: ; might be closer to "screen specific data" than map data MapDataPointers: ; 80e5d (20:4e5d) - dw MapDataPointers_80e67 - dw MapDataPointers_8100f + dw Tilemaps + dw Tilesets dw MapDataPointers_8116b dw SpriteAnimationPointers dw MapDataPointers_81697 -MapDataPointers_80e67: ; 80e67 (20:4e67) - db $1b, $59, $00, $00 - db $22, $5a, $00, $00 - db $13, $5c, $00, $01 - db $2e, $5d, $00, $01 - db $d1, $5e, $00, $01 - db $f5, $5e, $00, $01 - db $26, $5f, $00, $01 - db $eb, $5f, $00, $01 - db $43, $61, $00, $01 - db $50, $61, $00, $01 - db $60, $61, $00, $02 - db $22, $62, $00, $02 - db $36, $63, $00, $03 - db $00, $64, $00, $03 - db $1d, $65, $00, $03 - db $e7, $65, $00, $03 - db $04, $67, $00, $03 - db $ce, $67, $00, $03 - db $eb, $68, $00, $03 - db $b5, $69, $00, $03 - db $d2, $6a, $00, $03 - db $9c, $6b, $00, $03 - db $b9, $6c, $00, $03 - db $83, $6d, $00, $03 - db $a0, $6e, $00, $03 - db $6a, $6f, $00, $03 - db $87, $70, $00, $03 - db $51, $71, $00, $03 - db $6e, $72, $00, $03 - db $21, $73, $00, $03 - db $24, $74, $00, $04 - db $45, $75, $00, $04 - db $db, $76, $00, $05 - db $8c, $77, $00, $05 - db $8d, $78, $00, $06 - db $d6, $79, $00, $06 - db $00, $40, $01, $07 - db $88, $41, $01, $07 - db $bb, $43, $01, $08 - db $33, $45, $01, $08 - db $2e, $47, $01, $09 - db $d8, $48, $01, $09 - db $73, $4b, $01, $0a - db $6f, $4c, $01, $0a - db $fe, $4d, $01, $0b - db $1d, $4f, $01, $0b - db $b6, $50, $01, $0c - db $91, $51, $01, $0c - db $15, $53, $01, $0d - db $b3, $54, $01, $0d - db $0a, $57, $01, $0e - db $ce, $57, $01, $0e - db $f1, $7b, $00, $0e - db $03, $7c, $00, $0e - db $ef, $58, $01, $0f - db $79, $5a, $01, $0f - db $1a, $7c, $00, $0f - db $26, $7c, $00, $0f - db $e2, $5c, $01, $10 - db $f4, $5d, $01, $10 - db $7c, $5f, $01, $11 - db $7f, $60, $01, $11 - db $36, $7c, $00, $12 - db $7d, $61, $01, $12 - db $93, $61, $01, $12 - db $a9, $61, $01, $12 - db $bf, $61, $01, $12 - db $d5, $61, $01, $12 - db $eb, $61, $01, $12 - db $01, $62, $01, $12 - db $17, $62, $01, $13 - db $da, $62, $01, $13 - db $64, $63, $01, $13 - db $43, $64, $01, $13 - db $df, $64, $01, $14 - db $b5, $65, $01, $14 - db $47, $66, $01, $15 - db $b8, $66, $01, $16 - db $3e, $67, $01, $17 - db $af, $67, $01, $18 - db $33, $68, $01, $19 - db $a4, $68, $01, $1a - db $25, $69, $01, $1b - db $96, $69, $01, $1c - db $14, $6a, $01, $1d - db $85, $6a, $01, $1e - db $28, $6b, $01, $1f - db $99, $6b, $01, $20 - db $34, $6c, $01, $21 - db $a5, $6c, $01, $22 - db $37, $6d, $01, $23 - db $cc, $6d, $01, $24 - db $8a, $6e, $01, $25 - db $18, $6f, $01, $25 - db $c0, $6f, $01, $25 - db $4f, $70, $01, $26 - db $a5, $71, $01, $27 - db $97, $73, $01, $28 - db $b7, $73, $01, $29 - db $e5, $73, $01, $2a - db $13, $74, $01, $2b - db $38, $75, $01, $2c - db $9f, $76, $01, $2d - db $f6, $76, $01, $2d - db $7c, $77, $01, $2e - db $c4, $77, $01, $2f - -MapDataPointers_8100f: ; 8100f (20:500f) - db $00, $40, $02, $c1 - db $12, $4c, $02, $97 - db $28, $78, $01, $4d - db $84, $55, $02, $81 - db $96, $5d, $02, $78 - db $18, $65, $02, $63 - db $4a, $6b, $02, $3c - db $0c, $6f, $02, $a1 - db $00, $40, $03, $83 - db $1e, $79, $02, $57 - db $32, $48, $03, $3a - db $d4, $4b, $03, $52 - db $f6, $50, $03, $57 - db $68, $56, $03, $9d - db $3a, $60, $03, $4e - db $1c, $65, $03, $cf - db $0e, $72, $03, $79 - db $00, $40, $04, $bd - db $a0, $79, $03, $48 - db $d2, $4b, $04, $6d - db $a4, $52, $04, $5d - db $76, $58, $04, $60 - db $78, $5e, $04, $56 - db $da, $63, $04, $60 - db $dc, $69, $04, $56 - db $3e, $6f, $04, $60 - db $40, $75, $04, $56 - db $00, $40, $05, $60 - db $02, $46, $05, $56 - db $64, $4b, $05, $60 - db $66, $51, $05, $60 - db $68, $57, $05, $60 - db $6a, $5d, $05, $60 - db $6c, $63, $05, $60 - db $6e, $69, $05, $60 - db $70, $6f, $05, $61 - db $82, $75, $05, $61 - db $fa, $7c, $01, $04 - db $00, $40, $06, $f4 - db $42, $4f, $06, $3b - db $3c, $7d, $01, $04 - db $7e, $7d, $01, $24 - db $a2, $7a, $04, $24 - db $f4, $62, $06, $dc - db $b6, $70, $06, $d4 - db $e4, $7c, $04, $24 - db $22, $7e, $03, $18 - db $94, $7b, $05, $31 - db $00, $40, $07, $24 - db $42, $42, $07, $24 - db $84, $44, $07, $24 - db $c6, $46, $07, $24 - db $08, $49, $07, $24 - db $4a, $4b, $07, $24 - db $8c, $4d, $07, $24 - db $ce, $4f, $07, $24 - db $10, $52, $07, $24 - db $52, $54, $07, $24 - db $94, $56, $07, $24 - db $d6, $58, $07, $24 - db $18, $5b, $07, $24 - db $5a, $5d, $07, $24 - db $9c, $5f, $07, $24 - db $de, $61, $07, $24 - db $20, $64, $07, $24 - db $62, $66, $07, $24 - db $a4, $68, $07, $24 - db $e6, $6a, $07, $24 - db $28, $6d, $07, $24 - db $6a, $6f, $07, $24 - db $ac, $71, $07, $24 - db $ee, $73, $07, $24 - db $30, $76, $07, $24 - db $72, $78, $07, $24 - db $b4, $7a, $07, $24 - db $f6, $7c, $07, $24 - db $00, $40, $08, $24 - db $42, $42, $08, $24 - db $84, $44, $08, $24 - db $c6, $46, $08, $24 - db $08, $49, $08, $24 - db $4a, $4b, $08, $24 - db $8c, $4d, $08, $24 - db $ce, $4f, $08, $24 - db $10, $52, $08, $24 - db $52, $54, $08, $24 - db $94, $56, $08, $24 +; \1 = pointer +; \2 = tileset +tilemap: MACRO + dwb \1, BANK(\1) - BANK(Tilemaps) + db \2 +ENDM + +Tilemaps: ; 80e67 (20:4e67) + tilemap OverworldMapTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP + tilemap OverworldMapCGBTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP_CGB + tilemap MasonLaboratoryTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY + tilemap MasonLaboratoryCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY_CGB + tilemap Unused1Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_1 + tilemap Unused2Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_2 + tilemap DeckMachineRoomTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM + tilemap DeckMachineRoomCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM_CGB + tilemap Unused3Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_3 + tilemap Unused4Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_4 + tilemap IshiharaTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA + tilemap IshiharaCGBTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA_CGB + tilemap FightingClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE + tilemap FightingClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB + tilemap RockClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE + tilemap RockClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE_CGB + tilemap WaterClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE + tilemap WaterClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE_CGB + tilemap LightningClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE + tilemap LightningClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB + tilemap GrassClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE + tilemap GrassClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE_CGB + tilemap PsychicClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE + tilemap PsychicClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB + tilemap ScienceClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE + tilemap ScienceClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB + tilemap FireClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE + tilemap FireClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE_CGB + tilemap ChallengeHallEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE + tilemap ChallengeHallEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB + tilemap ClubLobbyTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY + tilemap ClubLobbyCGBTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY_CGB + tilemap FightingClubTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB + tilemap FightingClubCGBTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB_CGB + tilemap RockClubTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB + tilemap RockClubCGBTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB_CGB + tilemap WaterClubTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB + tilemap WaterClubCGBTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB_CGB + tilemap LightningClubTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB + tilemap LightningClubCGBTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB_CGB + tilemap GrassClubTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB + tilemap GrassClubCGBTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB_CGB + tilemap PsychicClubTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB + tilemap PsychicClubCGBTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB_CGB + tilemap ScienceClubTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB + tilemap ScienceClubCGBTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB_CGB + tilemap FireClubTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB + tilemap FireClubCGBTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB_CGB + tilemap ChallengeHallTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL + tilemap ChallengeHallCGBTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL_CGB + tilemap PokemonDomeEntranceTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE + tilemap PokemonDomeEntranceCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE_CGB + tilemap Unused5Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNUSED_5 + tilemap Unused6Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNUSED_6 + tilemap PokemonDomeTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME + tilemap PokemonDomeGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME_CGB + tilemap Unused7Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNUSED_7 + tilemap Unused8Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNUSED_8 + tilemap HallOfHonorTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR + tilemap HallOfHonorCGBTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR_CGB + tilemap CardPop1Tilemap, TILESET_CARD_POP_1 ; TILEMAP_CARD_POP_1 + tilemap CardPop1CGBTilemap, TILESET_CARD_POP_1 ; TILEMAP_CARD_POP_1_CGB + tilemap GrassMedalTilemap, TILESET_MEDAL ; TILEMAP_GRASS_MEDAL + tilemap ScienceMedalTilemap, TILESET_MEDAL ; TILEMAP_SCIENCE_MEDAL + tilemap FireMedalTilemap, TILESET_MEDAL ; TILEMAP_FIRE_MEDAL + tilemap WaterMedalTilemap, TILESET_MEDAL ; TILEMAP_WATER_MEDAL + tilemap LightningMedalTilemap, TILESET_MEDAL ; TILEMAP_LIGHTNING_MEDAL + tilemap FightingMedalTilemap, TILESET_MEDAL ; TILEMAP_FIGHTING_MEDAL + tilemap RockMedalTilemap, TILESET_MEDAL ; TILEMAP_ROCK_MEDAL + tilemap PsychicMedalTilemap, TILESET_MEDAL ; TILEMAP_PSYCHIC_MEDAL + tilemap CardPop2Tilemap, TILESET_CARD_POP_2 ; TILEMAP_CARD_POP_2 + tilemap CardPop2CGBTilemap, TILESET_CARD_POP_2 ; TILEMAP_CARD_POP_2_CGB + tilemap CardPop2Unknown1Tilemap, TILESET_CARD_POP_2 ; TILEMAP_CARD_POP_2_UNKNOWN_1 + tilemap CardPop2Unknown2Tilemap, TILESET_CARD_POP_2 ; TILEMAP_CARD_POP_2_UNKNOWN_2 + tilemap CardPop3Tilemap, TILESET_CARD_POP_3 ; TILEMAP_CARD_POP_3 + tilemap CardPop3CGBTilemap, TILESET_CARD_POP_3 ; TILEMAP_CARD_POP_3_CGB + tilemap ColosseumTilemap, TILESET_COLOSSEUM_1 ; TILEMAP_COLOSSEUM + tilemap ColosseumCGBTilemap, TILESET_COLOSSEUM_2 ; TILEMAP_COLOSSEUM_CGB + tilemap EvolutionTilemap, TILESET_EVOLUTION_1 ; TILEMAP_EVOLUTION + tilemap EvolutionCGBTilemap, TILESET_EVOLUTION_2 ; TILEMAP_EVOLUTION_CGB + tilemap MysteryTilemap, TILESET_MYSTERY_1 ; TILEMAP_MYSTERY + tilemap MysteryCGBTilemap, TILESET_MYSTERY_2 ; TILEMAP_MYSTERY_CGB + tilemap LaboratoryTilemap, TILESET_LABORATORY_1 ; TILEMAP_LABORATORY + tilemap LaboratoryCGBTilemap, TILESET_LABORATORY_2 ; TILEMAP_LABORATORY_CGB + tilemap CharizardIntroTilemap, TILESET_CHARIZARD_INTRO_1 ; TILEMAP_CHARIZARD_INTRO + tilemap CharizardIntroCGBTilemap, TILESET_CHARIZARD_INTRO_2 ; TILEMAP_CHARIZARD_INTRO_CGB + tilemap ScytherIntroTilemap, TILESET_SCYTHER_INTRO_1 ; TILEMAP_SCYTHER_INTRO + tilemap ScytherIntroCGBTilemap, TILESET_SCYTHER_INTRO_2 ; TILEMAP_SCYTHER_INTRO_CGB + tilemap AerodactylIntroTilemap, TILESET_AERODACTYL_INTRO_1 ; TILEMAP_AERODACTYL_INTRO + tilemap AerodactylIntroCGBTilemap, TILESET_AERODACTYL_INTRO_2 ; TILEMAP_AERODACTYL_INTRO_CGB + tilemap TitleScreen1Tilemap, TILESET_TITLE_SCREEN_1 ; TILEMAP_TITLE_SCREEN_1 + tilemap TitleScreen2Tilemap, TILESET_TITLE_SCREEN_2 ; TILEMAP_TITLE_SCREEN_2 + tilemap SolidTiles1Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_1 + tilemap SolidTiles2Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_2 + tilemap SolidTiles3Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_3 + tilemap TitleScreen3Tilemap, TILESET_TITLE_SCREEN_3 ; TILEMAP_TITLE_SCREEN_3 + tilemap TitleScreen4Tilemap, TILESET_TITLE_SCREEN_4 ; TILEMAP_TITLE_SCREEN_4 + tilemap SolidTiles4Tilemap, TILESET_SOLID_TILES_2 ; TILEMAP_SOLID_TILES_4 + tilemap PlayerTilemap, TILESET_PLAYER ; TILEMAP_PLAYER + tilemap OpponentTilemap, TILESET_RONALD ; TILEMAP_OPPONENT + tilemap TitleScreen5Tilemap, TILESET_TITLE_SCREEN_5 ; TILEMAP_TITLE_SCREEN_5 + tilemap TitleScreen6Tilemap, TILESET_TITLE_SCREEN_6 ; TILEMAP_TITLE_SCREEN_6 + tilemap CopyrightTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT + tilemap CopyrightCGBTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT_CGB + tilemap NintendoTilemap, TILESET_NINTENDO ; TILEMAP_NINTENDO + tilemap CompaniesTilemap, TILESET_COMPANIES ; TILEMAP_COMPANIES + +; \1 = pointer +; \2 = number of tiles +tileset: MACRO + dwb \1, BANK(\1) - BANK(Tilesets) + db \2 +ENDM + +Tilesets: ; 8100f (20:500f) + tileset OverworldMapTiles, 193 ; TILESET_OVERWORLD_MAP + tileset MasonLaboratoryTilesetGfx, 151 ; TILESET_MASON_LABORATORY + tileset IshiharaTilesetGfx, 77 ; TILESET_ISHIHARA + tileset ClubEntranceTilesetGfx, 129 ; TILESET_CLUB_ENTRANCE + tileset ClubLobbyTilesetGfx, 120 ; TILESET_CLUB_LOBBY + tileset FightingClubTilesetGfx, 99 ; TILESET_FIGHTING_CLUB + tileset RockClubTilesetGfx, 60 ; TILESET_ROCK_CLUB + tileset WaterClubTilesetGfx, 161 ; TILESET_WATER_CLUB + tileset LightningClubTilesetGfx, 131 ; TILESET_LIGHTNING_CLUB + tileset GrassClubTilesetGfx, 87 ; TILESET_GRASS_CLUB + tileset PsychicClubTilesetGfx, 58 ; TILESET_PSYCHIC_CLUB + tileset ScienceClubTilesetGfx, 82 ; TILESET_SCIENCE_CLUB + tileset FireClubTilesetGfx, 87 ; TILESET_FIRE_CLUB + tileset ChallengeHallTilesetGfx, 157 ; TILESET_CHALLENGE_HALL + tileset PokemonDomeEntranceTilesetGfx, 78 ; TILESET_POKEMON_DOME_ENTRANCE + tileset PokemonDomeTilesetGfx, 207 ; TILESET_POKEMON_DOME + tileset HallOfHonorTilesetGfx, 121 ; TILESET_HALL_OF_HONOR + tileset CardPop1Gfx, 189 ; TILESET_CARD_POP_1 + tileset MedalGfx, 72 ; TILESET_MEDAL + tileset CardPop2Gfx, 109 ; TILESET_CARD_POP_2 + tileset CardPop3Gfx, 93 ; TILESET_CARD_POP_3 + tileset Colosseum1Gfx, 96 ; TILESET_COLOSSEUM_1 + tileset Colosseum2Gfx, 86 ; TILESET_COLOSSEUM_2 + tileset Evolution1Gfx, 96 ; TILESET_EVOLUTION_1 + tileset Evolution2Gfx, 86 ; TILESET_EVOLUTION_2 + tileset Mystery1Gfx, 96 ; TILESET_MYSTERY_1 + tileset Mystery2Gfx, 86 ; TILESET_MYSTERY_2 + tileset Laboratory1Gfx, 96 ; TILESET_LABORATORY_1 + tileset Laboratory2Gfx, 86 ; TILESET_LABORATORY_2 + tileset CharizardIntro1Gfx, 96 ; TILESET_CHARIZARD_INTRO_1 + tileset CharizardIntro2Gfx, 96 ; TILESET_CHARIZARD_INTRO_2 + tileset ScytherIntro1Gfx, 96 ; TILESET_SCYTHER_INTRO_1 + tileset ScytherIntro2Gfx, 96 ; TILESET_SCYTHER_INTRO_2 + tileset AerodactylIntro1Gfx, 96 ; TILESET_AERODACTYL_INTRO_1 + tileset AerodactylIntro2Gfx, 96 ; TILESET_AERODACTYL_INTRO_2 + tileset Titlescreen1Gfx, 97 ; TILESET_TITLE_SCREEN_1 + tileset Titlescreen2Gfx, 97 ; TILESET_TITLE_SCREEN_2 + tileset SolidTiles1, 4 ; TILESET_SOLID_TILES_1 + tileset Titlescreen3Gfx, 244 ; TILESET_TITLE_SCREEN_3 + tileset Titlescreen4Gfx, 59 ; TILESET_TITLE_SCREEN_4 + tileset SolidTiles2, 4 ; TILESET_SOLID_TILES_2 + tileset PlayerGfx, 36 ; TILESET_PLAYER + tileset RonaldGfx, 36 ; TILESET_RONALD + tileset Titlescreen5Gfx, 220 ; TILESET_TITLE_SCREEN_5 + tileset Titlescreen6Gfx, 212 ; TILESET_TITLE_SCREEN_6 + tileset CopyrightGfx, 36 ; TILESET_COPYRIGHT + tileset NintendoGfx, 24 ; TILESET_NINTENDO + tileset CompaniesGfx, 49 ; TILESET_COMPANIES + tileset SamGfx, 36 ; TILESET_SAM + tileset ImakuniGfx, 36 ; TILESET_IMAKUNI + tileset NikkiGfx, 36 ; TILESET_NIKKI + tileset RickGfx, 36 ; TILESET_RICK + tileset KenGfx, 36 ; TILESET_KEN + tileset AmyGfx, 36 ; TILESET_AMY + tileset IsaacGfx, 36 ; TILESET_ISAAC + tileset MitchGfx, 36 ; TILESET_MITCH + tileset GeneGfx, 36 ; TILESET_GENE + tileset MurrayGfx, 36 ; TILESET_MURRAY + tileset CourtneyGfx, 36 ; TILESET_COURTNEY + tileset SteveGfx, 36 ; TILESET_STEVE + tileset JackGfx, 36 ; TILESET_JACK + tileset RodGfx, 36 ; TILESET_ROD + tileset JosephGfx, 36 ; TILESET_JOSEPH + tileset DavidGfx, 36 ; TILESET_DAVID + tileset ErikGfx, 36 ; TILESET_ERIK + tileset JohnGfx, 36 ; TILESET_JOHN + tileset AdamGfx, 36 ; TILESET_ADAM + tileset JonathanGfx, 36 ; TILESET_JONATHAN + tileset JoshuaGfx, 36 ; TILESET_JOSHUA + tileset NicholasGfx, 36 ; TILESET_NICHOLAS + tileset BrandonGfx, 36 ; TILESET_BRANDON + tileset MatthewGfx, 36 ; TILESET_MATTHEW + tileset RyanGfx, 36 ; TILESET_RYAN + tileset AndrewGfx, 36 ; TILESET_ANDREW + tileset ChrisGfx, 36 ; TILESET_CHRIS + tileset MichaelGfx, 36 ; TILESET_MICHAEL + tileset DanielGfx, 36 ; TILESET_DANIEL + tileset RobertGfx, 36 ; TILESET_ROBERT + tileset BrittanyGfx, 36 ; TILESET_BRITTANY + tileset KristinGfx, 36 ; TILESET_KRISTIN + tileset HeatherGfx, 36 ; TILESET_HEATHER + tileset SaraGfx, 36 ; TILESET_SARA + tileset AmandaGfx, 36 ; TILESET_AMANDA + tileset JenniferGfx, 36 ; TILESET_JENNIFER + tileset JessicaGfx, 36 ; TILESET_JESSICA + tileset StephanieGfx, 36 ; TILESET_STEPHANIE + tileset AaronGfx, 36 ; TILESET_AARON ; \1 = gfx pointer ; \2 = number of tiles @@ -1238,169 +1499,495 @@ palette_pointer: MACRO ENDM MapDataPointers_81697: ; 81697 (20:5697) - palette_pointer Palette0, 8, 1 ; $00 - palette_pointer Palette1, 8, 0 ; $01 - palette_pointer Palette2, 8, 0 ; $02 - palette_pointer Palette3, 8, 0 ; $03 - palette_pointer Palette4, 8, 0 ; $04 - palette_pointer Palette5, 8, 0 ; $05 - palette_pointer Palette6, 8, 0 ; $06 - palette_pointer Palette7, 8, 0 ; $07 - palette_pointer Palette8, 8, 0 ; $08 - palette_pointer Palette9, 8, 0 ; $09 - palette_pointer Palette10, 8, 0 ; $0a - palette_pointer Palette11, 8, 0 ; $0b - palette_pointer Palette12, 8, 0 ; $0c - palette_pointer Palette13, 8, 0 ; $0d - palette_pointer Palette14, 8, 0 ; $0e - palette_pointer Palette15, 8, 0 ; $0f - palette_pointer Palette16, 8, 0 ; $10 - palette_pointer Palette17, 8, 0 ; $11 - palette_pointer Palette18, 8, 0 ; $12 - palette_pointer Palette19, 8, 0 ; $13 - palette_pointer Palette20, 8, 0 ; $14 - palette_pointer Palette21, 8, 0 ; $15 - palette_pointer Palette22, 8, 0 ; $16 - palette_pointer Palette23, 8, 0 ; $17 - palette_pointer Palette24, 8, 0 ; $18 - palette_pointer Palette25, 8, 0 ; $19 - palette_pointer Palette26, 8, 0 ; $1a - palette_pointer Palette27, 8, 0 ; $1b - palette_pointer Palette28, 8, 0 ; $1c - palette_pointer Palette29, 8, 2 ; $1d - palette_pointer Palette30, 8, 2 ; $1e - palette_pointer Palette31, 1, 1 ; $1f - palette_pointer Palette32, 1, 1 ; $20 - palette_pointer Palette33, 1, 1 ; $21 - palette_pointer Palette34, 1, 1 ; $22 - palette_pointer Palette35, 1, 1 ; $23 - palette_pointer Palette36, 1, 1 ; $24 - palette_pointer Palette37, 1, 1 ; $25 - palette_pointer Palette38, 1, 1 ; $26 - palette_pointer Palette39, 1, 1 ; $27 - palette_pointer Palette40, 1, 1 ; $28 - palette_pointer Palette41, 1, 1 ; $29 - palette_pointer Palette42, 1, 1 ; $2a - palette_pointer Palette43, 1, 1 ; $2b - palette_pointer Palette44, 1, 1 ; $2c - palette_pointer Palette45, 1, 1 ; $2d - palette_pointer Palette46, 1, 1 ; $2e - palette_pointer Palette47, 1, 1 ; $2f - palette_pointer Palette48, 1, 1 ; $30 - palette_pointer Palette49, 1, 1 ; $31 - palette_pointer Palette50, 1, 1 ; $32 - palette_pointer Palette51, 1, 1 ; $33 - palette_pointer Palette52, 1, 1 ; $34 - palette_pointer Palette53, 1, 1 ; $35 - palette_pointer Palette54, 1, 1 ; $36 - palette_pointer Palette55, 1, 1 ; $37 - palette_pointer Palette56, 1, 1 ; $38 - palette_pointer Palette57, 1, 1 ; $39 - palette_pointer Palette58, 1, 1 ; $3a - palette_pointer Palette59, 1, 1 ; $3b - palette_pointer Palette60, 1, 1 ; $3c - palette_pointer Palette61, 1, 1 ; $3d - palette_pointer Palette62, 1, 1 ; $3e - palette_pointer Palette63, 1, 1 ; $3f - palette_pointer Palette64, 1, 1 ; $40 - palette_pointer Palette65, 1, 1 ; $41 - palette_pointer Palette66, 1, 1 ; $42 - palette_pointer Palette67, 1, 1 ; $43 - palette_pointer Palette68, 1, 1 ; $44 - palette_pointer Palette69, 1, 1 ; $45 - palette_pointer Palette70, 1, 1 ; $46 - palette_pointer Palette71, 1, 1 ; $47 - palette_pointer Palette72, 1, 1 ; $48 - palette_pointer Palette73, 1, 1 ; $49 - palette_pointer Palette74, 1, 1 ; $4a - palette_pointer Palette75, 1, 1 ; $4b - palette_pointer Palette76, 1, 1 ; $4c - palette_pointer Palette77, 1, 1 ; $4d - palette_pointer Palette78, 1, 1 ; $4e - palette_pointer Palette79, 1, 1 ; $4f - palette_pointer Palette80, 1, 1 ; $50 - palette_pointer Palette81, 1, 1 ; $51 - palette_pointer Palette82, 1, 1 ; $52 - palette_pointer Palette83, 1, 1 ; $53 - palette_pointer Palette84, 1, 1 ; $54 - palette_pointer Palette85, 1, 1 ; $55 - palette_pointer Palette86, 1, 1 ; $56 - palette_pointer Palette87, 1, 1 ; $57 - palette_pointer Palette88, 1, 1 ; $58 - palette_pointer Palette89, 1, 1 ; $59 - palette_pointer Palette90, 1, 1 ; $a5 - palette_pointer Palette91, 1, 1 ; $5b - palette_pointer Palette92, 1, 1 ; $5c - palette_pointer Palette93, 1, 1 ; $5d - palette_pointer Palette94, 8, 0 ; $5e - palette_pointer Palette95, 8, 0 ; $5f - palette_pointer Palette96, 8, 0 ; $60 - palette_pointer Palette97, 8, 0 ; $61 - palette_pointer Palette98, 8, 0 ; $62 - palette_pointer Palette99, 8, 0 ; $63 - palette_pointer Palette100, 8, 0 ; $64 - palette_pointer Palette101, 7, 0 ; $65 - palette_pointer Palette102, 7, 0 ; $66 - palette_pointer Palette103, 7, 0 ; $67 - palette_pointer Palette104, 7, 0 ; $68 - palette_pointer Palette105, 7, 0 ; $69 - palette_pointer Palette106, 7, 0 ; $6a - palette_pointer Palette107, 7, 0 ; $6b - palette_pointer Palette108, 0, 1 ; $6c - palette_pointer Palette109, 0, 1 ; $6d - palette_pointer Palette110, 0, 0 ; $6e - palette_pointer Palette111, 8, 1 ; $6f - palette_pointer Palette112, 8, 1 ; $70 - palette_pointer Palette113, 8, 1 ; $71 - palette_pointer Palette114, 4, 2 ; $72 - palette_pointer Palette115, 4, 2 ; $73 - palette_pointer Palette116, 4, 2 ; $74 - palette_pointer Palette117, 1, 0 ; $75 - palette_pointer Palette118, 6, 0 ; $76 - palette_pointer Palette119, 1, 0 ; $77 - palette_pointer Palette120, 1, 0 ; $78 - palette_pointer Palette121, 1, 0 ; $79 - palette_pointer Palette122, 1, 0 ; $7a - palette_pointer Palette123, 1, 0 ; $7b - palette_pointer Palette124, 1, 0 ; $7c - palette_pointer Palette125, 1, 0 ; $7d - palette_pointer Palette126, 1, 0 ; $7e - palette_pointer Palette127, 1, 0 ; $7f - palette_pointer Palette128, 1, 0 ; $80 - palette_pointer Palette129, 1, 0 ; $81 - palette_pointer Palette130, 1, 0 ; $82 - palette_pointer Palette131, 1, 0 ; $83 - palette_pointer Palette132, 1, 0 ; $84 - palette_pointer Palette133, 1, 0 ; $85 - palette_pointer Palette134, 1, 0 ; $86 - palette_pointer Palette135, 1, 0 ; $87 - palette_pointer Palette136, 1, 0 ; $88 - palette_pointer Palette137, 1, 0 ; $89 - palette_pointer Palette138, 1, 0 ; $8a - palette_pointer Palette139, 1, 0 ; $8b - palette_pointer Palette140, 1, 0 ; $8c - palette_pointer Palette141, 1, 0 ; $8d - palette_pointer Palette142, 1, 0 ; $8e - palette_pointer Palette143, 1, 0 ; $8f - palette_pointer Palette144, 1, 0 ; $90 - palette_pointer Palette145, 1, 0 ; $91 - palette_pointer Palette146, 1, 0 ; $92 - palette_pointer Palette147, 1, 0 ; $93 - palette_pointer Palette148, 1, 0 ; $94 - palette_pointer Palette149, 1, 0 ; $95 - palette_pointer Palette150, 1, 0 ; $96 - palette_pointer Palette151, 1, 0 ; $97 - palette_pointer Palette152, 1, 0 ; $98 - palette_pointer Palette153, 1, 0 ; $99 - palette_pointer Palette154, 1, 0 ; $9a - palette_pointer Palette155, 1, 0 ; $9b - palette_pointer Palette156, 1, 0 ; $9c - palette_pointer Palette157, 1, 0 ; $9d - palette_pointer Palette158, 1, 0 ; $9e - palette_pointer Palette159, 1, 0 ; $9f - palette_pointer Palette160, 1, 0 ; $a0 - - INCROM $8191b, $83c4c + palette_pointer Palette0, 8, 1 ; PALETTE_0 + palette_pointer Palette1, 8, 0 ; PALETTE_1 + palette_pointer Palette2, 8, 0 ; PALETTE_2 + palette_pointer Palette3, 8, 0 ; PALETTE_3 + palette_pointer Palette4, 8, 0 ; PALETTE_4 + palette_pointer Palette5, 8, 0 ; PALETTE_5 + palette_pointer Palette6, 8, 0 ; PALETTE_6 + palette_pointer Palette7, 8, 0 ; PALETTE_7 + palette_pointer Palette8, 8, 0 ; PALETTE_8 + palette_pointer Palette9, 8, 0 ; PALETTE_9 + palette_pointer Palette10, 8, 0 ; PALETTE_10 + palette_pointer Palette11, 8, 0 ; PALETTE_11 + palette_pointer Palette12, 8, 0 ; PALETTE_12 + palette_pointer Palette13, 8, 0 ; PALETTE_13 + palette_pointer Palette14, 8, 0 ; PALETTE_14 + palette_pointer Palette15, 8, 0 ; PALETTE_15 + palette_pointer Palette16, 8, 0 ; PALETTE_16 + palette_pointer Palette17, 8, 0 ; PALETTE_17 + palette_pointer Palette18, 8, 0 ; PALETTE_18 + palette_pointer Palette19, 8, 0 ; PALETTE_19 + palette_pointer Palette20, 8, 0 ; PALETTE_20 + palette_pointer Palette21, 8, 0 ; PALETTE_21 + palette_pointer Palette22, 8, 0 ; PALETTE_22 + palette_pointer Palette23, 8, 0 ; PALETTE_23 + palette_pointer Palette24, 8, 0 ; PALETTE_24 + palette_pointer Palette25, 8, 0 ; PALETTE_25 + palette_pointer Palette26, 8, 0 ; PALETTE_26 + palette_pointer Palette27, 8, 0 ; PALETTE_27 + palette_pointer Palette28, 8, 0 ; PALETTE_28 + palette_pointer Palette29, 8, 2 ; PALETTE_29 + palette_pointer Palette30, 8, 2 ; PALETTE_30 + palette_pointer Palette31, 1, 1 ; PALETTE_31 + palette_pointer Palette32, 1, 1 ; PALETTE_32 + palette_pointer Palette33, 1, 1 ; PALETTE_33 + palette_pointer Palette34, 1, 1 ; PALETTE_34 + palette_pointer Palette35, 1, 1 ; PALETTE_35 + palette_pointer Palette36, 1, 1 ; PALETTE_36 + palette_pointer Palette37, 1, 1 ; PALETTE_37 + palette_pointer Palette38, 1, 1 ; PALETTE_38 + palette_pointer Palette39, 1, 1 ; PALETTE_39 + palette_pointer Palette40, 1, 1 ; PALETTE_40 + palette_pointer Palette41, 1, 1 ; PALETTE_41 + palette_pointer Palette42, 1, 1 ; PALETTE_42 + palette_pointer Palette43, 1, 1 ; PALETTE_43 + palette_pointer Palette44, 1, 1 ; PALETTE_44 + palette_pointer Palette45, 1, 1 ; PALETTE_45 + palette_pointer Palette46, 1, 1 ; PALETTE_46 + palette_pointer Palette47, 1, 1 ; PALETTE_47 + palette_pointer Palette48, 1, 1 ; PALETTE_48 + palette_pointer Palette49, 1, 1 ; PALETTE_49 + palette_pointer Palette50, 1, 1 ; PALETTE_50 + palette_pointer Palette51, 1, 1 ; PALETTE_51 + palette_pointer Palette52, 1, 1 ; PALETTE_52 + palette_pointer Palette53, 1, 1 ; PALETTE_53 + palette_pointer Palette54, 1, 1 ; PALETTE_54 + palette_pointer Palette55, 1, 1 ; PALETTE_55 + palette_pointer Palette56, 1, 1 ; PALETTE_56 + palette_pointer Palette57, 1, 1 ; PALETTE_57 + palette_pointer Palette58, 1, 1 ; PALETTE_58 + palette_pointer Palette59, 1, 1 ; PALETTE_59 + palette_pointer Palette60, 1, 1 ; PALETTE_60 + palette_pointer Palette61, 1, 1 ; PALETTE_61 + palette_pointer Palette62, 1, 1 ; PALETTE_62 + palette_pointer Palette63, 1, 1 ; PALETTE_63 + palette_pointer Palette64, 1, 1 ; PALETTE_64 + palette_pointer Palette65, 1, 1 ; PALETTE_65 + palette_pointer Palette66, 1, 1 ; PALETTE_66 + palette_pointer Palette67, 1, 1 ; PALETTE_67 + palette_pointer Palette68, 1, 1 ; PALETTE_68 + palette_pointer Palette69, 1, 1 ; PALETTE_69 + palette_pointer Palette70, 1, 1 ; PALETTE_70 + palette_pointer Palette71, 1, 1 ; PALETTE_71 + palette_pointer Palette72, 1, 1 ; PALETTE_72 + palette_pointer Palette73, 1, 1 ; PALETTE_73 + palette_pointer Palette74, 1, 1 ; PALETTE_74 + palette_pointer Palette75, 1, 1 ; PALETTE_75 + palette_pointer Palette76, 1, 1 ; PALETTE_76 + palette_pointer Palette77, 1, 1 ; PALETTE_77 + palette_pointer Palette78, 1, 1 ; PALETTE_78 + palette_pointer Palette79, 1, 1 ; PALETTE_79 + palette_pointer Palette80, 1, 1 ; PALETTE_80 + palette_pointer Palette81, 1, 1 ; PALETTE_81 + palette_pointer Palette82, 1, 1 ; PALETTE_82 + palette_pointer Palette83, 1, 1 ; PALETTE_83 + palette_pointer Palette84, 1, 1 ; PALETTE_84 + palette_pointer Palette85, 1, 1 ; PALETTE_85 + palette_pointer Palette86, 1, 1 ; PALETTE_86 + palette_pointer Palette87, 1, 1 ; PALETTE_87 + palette_pointer Palette88, 1, 1 ; PALETTE_88 + palette_pointer Palette89, 1, 1 ; PALETTE_89 + palette_pointer Palette90, 1, 1 ; PALETTE_90 + palette_pointer Palette91, 1, 1 ; PALETTE_91 + palette_pointer Palette92, 1, 1 ; PALETTE_92 + palette_pointer Palette93, 1, 1 ; PALETTE_93 + palette_pointer Palette94, 8, 0 ; PALETTE_94 + palette_pointer Palette95, 8, 0 ; PALETTE_95 + palette_pointer Palette96, 8, 0 ; PALETTE_96 + palette_pointer Palette97, 8, 0 ; PALETTE_97 + palette_pointer Palette98, 8, 0 ; PALETTE_98 + palette_pointer Palette99, 8, 0 ; PALETTE_99 + palette_pointer Palette100, 8, 0 ; PALETTE_100 + palette_pointer Palette101, 7, 0 ; PALETTE_101 + palette_pointer Palette102, 7, 0 ; PALETTE_102 + palette_pointer Palette103, 7, 0 ; PALETTE_103 + palette_pointer Palette104, 7, 0 ; PALETTE_104 + palette_pointer Palette105, 7, 0 ; PALETTE_105 + palette_pointer Palette106, 7, 0 ; PALETTE_106 + palette_pointer Palette107, 7, 0 ; PALETTE_107 + palette_pointer Palette108, 0, 1 ; PALETTE_108 + palette_pointer Palette109, 0, 1 ; PALETTE_109 + palette_pointer Palette110, 0, 0 ; PALETTE_110 + palette_pointer Palette111, 8, 1 ; PALETTE_111 + palette_pointer Palette112, 8, 1 ; PALETTE_112 + palette_pointer Palette113, 8, 1 ; PALETTE_113 + palette_pointer Palette114, 4, 2 ; PALETTE_114 + palette_pointer Palette115, 4, 2 ; PALETTE_115 + palette_pointer Palette116, 4, 2 ; PALETTE_116 + palette_pointer Palette117, 1, 0 ; PALETTE_117 + palette_pointer Palette118, 6, 0 ; PALETTE_118 + palette_pointer Palette119, 1, 0 ; PALETTE_119 + palette_pointer Palette120, 1, 0 ; PALETTE_120 + palette_pointer Palette121, 1, 0 ; PALETTE_121 + palette_pointer Palette122, 1, 0 ; PALETTE_122 + palette_pointer Palette123, 1, 0 ; PALETTE_123 + palette_pointer Palette124, 1, 0 ; PALETTE_124 + palette_pointer Palette125, 1, 0 ; PALETTE_125 + palette_pointer Palette126, 1, 0 ; PALETTE_126 + palette_pointer Palette127, 1, 0 ; PALETTE_127 + palette_pointer Palette128, 1, 0 ; PALETTE_128 + palette_pointer Palette129, 1, 0 ; PALETTE_129 + palette_pointer Palette130, 1, 0 ; PALETTE_130 + palette_pointer Palette131, 1, 0 ; PALETTE_131 + palette_pointer Palette132, 1, 0 ; PALETTE_132 + palette_pointer Palette133, 1, 0 ; PALETTE_133 + palette_pointer Palette134, 1, 0 ; PALETTE_134 + palette_pointer Palette135, 1, 0 ; PALETTE_135 + palette_pointer Palette136, 1, 0 ; PALETTE_136 + palette_pointer Palette137, 1, 0 ; PALETTE_137 + palette_pointer Palette138, 1, 0 ; PALETTE_138 + palette_pointer Palette139, 1, 0 ; PALETTE_139 + palette_pointer Palette140, 1, 0 ; PALETTE_140 + palette_pointer Palette141, 1, 0 ; PALETTE_141 + palette_pointer Palette142, 1, 0 ; PALETTE_142 + palette_pointer Palette143, 1, 0 ; PALETTE_143 + palette_pointer Palette144, 1, 0 ; PALETTE_144 + palette_pointer Palette145, 1, 0 ; PALETTE_145 + palette_pointer Palette146, 1, 0 ; PALETTE_146 + palette_pointer Palette147, 1, 0 ; PALETTE_147 + palette_pointer Palette148, 1, 0 ; PALETTE_148 + palette_pointer Palette149, 1, 0 ; PALETTE_149 + palette_pointer Palette150, 1, 0 ; PALETTE_150 + palette_pointer Palette151, 1, 0 ; PALETTE_151 + palette_pointer Palette152, 1, 0 ; PALETTE_152 + palette_pointer Palette153, 1, 0 ; PALETTE_153 + palette_pointer Palette154, 1, 0 ; PALETTE_154 + palette_pointer Palette155, 1, 0 ; PALETTE_155 + palette_pointer Palette156, 1, 0 ; PALETTE_156 + palette_pointer Palette157, 1, 0 ; PALETTE_157 + palette_pointer Palette158, 1, 0 ; PALETTE_158 + palette_pointer Palette159, 1, 0 ; PALETTE_159 + palette_pointer Palette160, 1, 0 ; PALETTE_160 + +OverworldMapTilemap:: ; 8191b (20:591b) + db $14 ; width + db $12 ; height + dw $0000 + db $00 + + INCBIN "data/maps/map0.bin" + +OverworldMapCGBTilemap:: ; 81a22 (20:5a22) + db $14 ; width + db $12 ; height + dw $0000 + db $01 + + INCBIN "data/maps/map1.bin" + +MasonLaboratoryTilemap:: ; 81c13 (20:5c13) + db $1c ; width + db $1e ; height + dw $5d11 + db $00 + + INCBIN "data/maps/map2.bin" + +MasonLaboratoryCGBTilemap:: ; 81d2e (20:5d2e) + db $1c ; width + db $1e ; height + dw $5eb4 + db $01 + + INCBIN "data/maps/map3.bin" + +Unused1Tilemap:: ; 81ed1 (20:5ed1) + db $04 ; width + db $06 ; height + dw $5ef0 + db $00 + + INCBIN "data/maps/map4.bin" + +Unused2Tilemap:: ; 81ef5 (20:5ef5) + db $04 ; width + db $06 ; height + dw $5f21 + db $01 + + INCBIN "data/maps/map5.bin" + +DeckMachineRoomTilemap:: ; 81f26 (20:5f26) + db $18 ; width + db $1e ; height + dw $5fd3 + db $00 + + INCBIN "data/maps/map6.bin" + +DeckMachineRoomCGBTilemap:: ; 81feb (20:5feb) + db $18 ; width + db $1e ; height + dw $612b + db $01 + + INCBIN "data/maps/map7.bin" + +Unused3Tilemap:: ; 82143 (20:6143) + db $04 ; width + db $01 ; height + dw $614d + db $00 + + INCBIN "data/maps/map8.bin" + +Unused4Tilemap:: ; 82150 (20:6150) + db $04 ; width + db $01 ; height + dw $615d + db $01 + + INCBIN "data/maps/map9.bin" + +IshiharaTilemap:: ; 82160 (20:6160) + db $14 ; width + db $18 ; height + dw $620e + db $00 + + INCBIN "data/maps/map10.bin" + +IshiharaCGBTilemap:: ; 82222 (20:6222) + db $14 ; width + db $18 ; height + dw $6322 + db $01 + + INCBIN "data/maps/map11.bin" + +FightingClubEntranceTilemap:: ; 82336 (20:6336) + db $14 ; width + db $12 ; height + dw $63ec + db $00 + + INCBIN "data/maps/map12.bin" + +FightingClubEntranceCGBTilemap:: ; 82400 (20:6400) + db $14 ; width + db $12 ; height + dw $6509 + db $01 + + INCBIN "data/maps/map13.bin" + +RockClubEntranceTilemap:: ; 8251d (20:651d) + db $14 ; width + db $12 ; height + dw $65d3 + db $00 + + INCBIN "data/maps/map14.bin" + +RockClubEntranceCGBTilemap:: ; 825e7 (20:65e7) + db $14 ; width + db $12 ; height + dw $66f0 + db $01 + + INCBIN "data/maps/map15.bin" + +WaterClubEntranceTilemap:: ; 82704 (20:6704) + db $14 ; width + db $12 ; height + dw $67ba + db $00 + + INCBIN "data/maps/map16.bin" + +WaterClubEntranceCGBTilemap:: ; 827ce (20:67ce) + db $14 ; width + db $12 ; height + dw $68d7 + db $01 + + INCBIN "data/maps/map17.bin" + +LightningClubEntranceTilemap:: ; 828eb (20:68eb) + db $14 ; width + db $12 ; height + dw $69a1 + db $00 + + INCBIN "data/maps/map18.bin" + +LightningClubEntranceCGBTilemap:: ; 829b5 (20:69b5) + db $14 ; width + db $12 ; height + dw $6abe + db $01 + + INCBIN "data/maps/map19.bin" + +GrassClubEntranceTilemap:: ; 82ad2 (20:6ad2) + db $14 ; width + db $12 ; height + dw $6b88 + db $00 + + INCBIN "data/maps/map20.bin" + +GrassClubEntranceCGBTilemap:: ; 82b9c (20:6b9c) + db $14 ; width + db $12 ; height + dw $6ca5 + db $01 + + INCBIN "data/maps/map21.bin" + +PsychicClubEntranceTilemap:: ; 82cb9 (20:6cb9) + db $14 ; width + db $12 ; height + dw $6d6f + db $00 + + INCBIN "data/maps/map22.bin" + +PsychicClubEntranceCGBTilemap:: ; 82d83 (20:6d83) + db $14 ; width + db $12 ; height + dw $6e8c + db $01 + + INCBIN "data/maps/map23.bin" + +ScienceClubEntranceTilemap:: ; 82ea0 (20:6ea0) + db $14 ; width + db $12 ; height + dw $6f56 + db $00 + + INCBIN "data/maps/map24.bin" + +ScienceClubEntranceCGBTilemap:: ; 82f6a (20:6f6a) + db $14 ; width + db $12 ; height + dw $7073 + db $01 + + INCBIN "data/maps/map25.bin" + +FireClubEntranceTilemap:: ; 83087 (20:7087) + db $14 ; width + db $12 ; height + dw $713d + db $00 + + INCBIN "data/maps/map26.bin" + +FireClubEntranceCGBTilemap:: ; 83151 (20:7151) + db $14 ; width + db $12 ; height + dw $725a + db $01 + + INCBIN "data/maps/map27.bin" + +ChallengeHallEntranceTilemap:: ; 8326e (20:726e) + db $14 ; width + db $12 ; height + dw $730d + db $00 + + INCBIN "data/maps/map28.bin" + +ChallengeHallEntranceCGBTilemap:: ; 83321 (20:7321) + db $14 ; width + db $12 ; height + dw $7410 + db $01 + + INCBIN "data/maps/map29.bin" + +ClubLobbyTilemap:: ; 83424 (20:7424) + db $1c ; width + db $1a ; height + dw $7529 + db $00 + + INCBIN "data/maps/map30.bin" + +ClubLobbyCGBTilemap:: ; 83545 (20:7545) + db $1c ; width + db $1a ; height + dw $76bf + db $01 + + INCBIN "data/maps/map31.bin" + +FightingClubTilemap:: ; 836db (20:76db) + db $18 ; width + db $12 ; height + dw $777b + db $00 + + INCBIN "data/maps/map32.bin" + +FightingClubCGBTilemap:: ; 8378c (20:778c) + db $18 ; width + db $12 ; height + dw $787c + db $01 + + INCBIN "data/maps/map33.bin" + +RockClubTilemap:: ; 8388d (20:788d) + db $1c ; width + db $1e ; height + dw $79b5 + db $00 + + INCBIN "data/maps/map34.bin" + +RockClubCGBTilemap:: ; 839d6 (20:79d6) + db $1c ; width + db $1e ; height + dw $7bd0 + db $01 + + INCBIN "data/maps/map35.bin" + +Unused5Tilemap:: ; 83bf1 (20:7bf1) + db $04 ; width + db $03 ; height + dw $7c00 + db $00 + + INCBIN "data/maps/map52.bin" + +Unused6Tilemap:: ; 83c03 (20:7c03) + db $04 ; width + db $03 ; height + dw $7c17 + db $01 + + INCBIN "data/maps/map53.bin" + +Unused7Tilemap:: ; 83c1a (20:7c1a) + db $04 ; width + db $03 ; height + dw $7c23 + db $00 + + INCBIN "data/maps/map56.bin" + +Unused8Tilemap:: ; 83c26 (20:7c26) + db $04 ; width + db $03 ; height + dw $7c33 + db $01 + + INCBIN "data/maps/map57.bin" + +GrassMedalTilemap:: ; 83c36 (20:7c36) + db $03 ; width + db $03 ; height + dw $0000 + db $01 + + INCBIN "data/maps/map62.bin" AnimData1:: ; 83c4c (20:7c4c) frame_table AnimFrameTable0 @@ -1411,4 +1998,6 @@ AnimData1:: ; 83c4c (20:7c4c) Palette110:: ; 83c5b (20:7c5b) db $00, $00 - INCROM $83c5d, $84000 +rept $3a3 + db $ff +endr diff --git a/src/engine/home.asm b/src/engine/home.asm index 567b3d0..13089d7 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -1519,7 +1519,13 @@ UpdateRNGSources: ; 089b (0:089b) pop hl ret -Func_08bf: ; 08bf (0:08bf) +; initilizes variables used to decompress +; BG Map data in DecompressBGMap +; de points to the source of compressed data +; b is used as the HIGH byte of the +; WRAM address to write to ($100 bytes of buffer space) +; also clears this $100 byte space +InitBGMapDecompression: ; 08bf (0:08bf) ld hl, wcad6 ld [hl], e inc hl @@ -1528,70 +1534,90 @@ Func_08bf: ; 08bf (0:08bf) ld [hl], $1 inc hl xor a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], b + ld [hli], a ; wcad9 + ld [hli], a ; wcada + ld [hli], a ; wcadb + ld [hli], a ; wcadc + ld [hl], b ; wcadd inc hl - ld [hli], a ; 0 - ld [hl], $ef + ld [hli], a ; wcade + ld [hl], $ef ; wcadf + +; clear buffer ld h, b - ld l, $0 + ld l, LOW(wc000) xor a -.asm_8d9 +.loop ld [hl], a inc l - jr nz, .asm_8d9 + jr nz, .loop ret -Func_08de: ; 08de (0:08de) +; decompresses BG Map data +; uses values initialized by InitBGMapDecompression +; wcad6 holds the pointer for compressed source +; input: +; bc = map width +; de = buffer to place decompressed data +DecompressBGMap: ; 08de (0:08de) push hl push de -.asm_8e0 +.loop push bc - call Func_08ef + call .Decompress ld [de], a inc de pop bc dec bc ld a, c or b - jr nz, .asm_8e0 + jr nz, .loop pop de pop hl ret -Func_08ef: ; 08ef (0:08ef) +; instructions start with a byte stored in wcad9 +; its bits are read from higher to lower bit +; wcad8 stores the current bit being read +; bit set: +; - 1 byte read and copied literally +; bit not set: +; - 2 bytes read WW XY ZZ, byte in pos WW +; copied (X + 1) times, then in pos ZZ +; copied (Y + 1) times +.Decompress: ; 08ef (0:08ef) ld hl, wcadc ld a, [hl] or a - jr z, .asm_902 + jr z, .read_instruction + +; still repeating byte dec [hl] inc hl -.asm_8f8 - ld b, [hl] +.repeat_byte + ld b, [hl] ; wcadd inc hl - ld c, [hl] + ld c, [hl] ; wcade inc [hl] inc hl ld a, [bc] - ld c, [hl] + ld c, [hl] ; wcadf inc [hl] ld [bc], a ret -.asm_902 + +.read_instruction ld hl, wcad6 ld c, [hl] inc hl ld b, [hl] - inc hl + inc hl ; wcad8 dec [hl] - inc hl + inc hl ; wcad9 jr nz, .asm_914 - dec hl - ld [hl], $8 - inc hl + dec hl ; wcad8 + ld [hl], $8 ; number of bits + inc hl ; wcad9 ld a, [bc] inc bc ld [hl], a @@ -1600,6 +1626,8 @@ Func_08ef: ; 08ef (0:08ef) ld a, [bc] inc bc jr nc, .asm_92a + +; copy 1 byte literally ld hl, wcad6 ld [hl], c inc hl @@ -1608,10 +1636,11 @@ Func_08ef: ; 08ef (0:08ef) ld b, [hl] inc hl inc hl - ld c, [hl] + ld c, [hl] ; wcadf inc [hl] ld [bc], a ret + .asm_92a ld [wcade], a ld hl, wcada @@ -1621,23 +1650,24 @@ Func_08ef: ; 08ef (0:08ef) inc hl ld a, [bc] inc bc - ld [hli], a + ld [hli], a ; wcadb swap a .asm_93c and $f - inc a - ld [hli], a + inc a ; number of times to repeat + ld [hli], a ; wcadc push hl ld hl, wcad6 ld [hl], c inc hl ld [hl], b pop hl - jr .asm_8f8 + jr .repeat_byte + .asm_94a res 0, [hl] inc hl - ld a, [hli] + ld a, [hli] ; wcadb jr .asm_93c ; set attributes for [hl] sprites starting from wOAM + [wOAMOffset] / 4 @@ -11204,12 +11234,17 @@ ResetDoFrameFunction: ; 3bdb (0:3bdb) pop hl ret -Func_3be4: ; 3be4 (0:3be4) +; decompresses BG Map data from a given bank +; uses values initialized by InitBGMapDecompression +; input: +; bc = map width +; de = buffer to place decompressed data +DecompressBGMapFromBank: ; 3be4 (0:3be4) ldh a, [hBankROM] push af ld a, [wTempPointerBank] call BankswitchROM - call Func_08de + call DecompressBGMap pop af call BankswitchROM ret @@ -11266,7 +11301,8 @@ FillMemoryWithDE: ; 3c1f (0:3c1f) pop hl ret -Func_3c2d: ; 3c2d (0:3c2d) +; gets far byte a:hl, outputs value in a +GetFarByte: ; 3c2d (0:3c2d) push hl push af ldh a, [hBankROM] @@ -11634,7 +11670,7 @@ Func_3e10: ; 3e10 (0:3e10) ; fallthrough Func_3e17: ; 3e17 (0:3e17) - ld [wd131], a + ld [wCurTilemap], a ldh a, [hBankROM] push af ld a, BANK(Func_12fc6) |