summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/bank03.asm39
-rw-r--r--src/engine/bank04.asm2
-rw-r--r--src/engine/bank20.asm208
-rw-r--r--src/gfx.asm130
-rw-r--r--src/sram.asm4
-rw-r--r--src/wram.asm9
6 files changed, 212 insertions, 180 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index 700ebb4..345b345 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -468,33 +468,41 @@ Func_c36a: ; c36a (3:436a)
.asm_c379
ret
-Func_c37a: ; c37a (3:437a)
+; loads in wPermissionMap the permissions
+; of the map, which has its compressed permission data
+; pointed by wBGMapPermissionDataPtr
+LoadPermissionMap: ; c37a (3:437a)
push hl
push bc
- ld hl, wBoosterViableCardList
+ ld hl, wPermissionMap
push hl
- ld a, $80
+ ld a, $80 ; impassable and untalkable
ld c, $00
-.asm_c384
+.loop_map
ld [hli], a
dec c
- jr nz, .asm_c384
+ jr nz, .loop_map
pop hl
- call Func_c38f
+ call DecompressPermissionMap
pop bc
pop hl
ret
-Func_c38f: ; c38f (3:438f)
+; decompresses permission data pointed by wBGMapPermissionDataPtr
+; hl = address to write to
+DecompressPermissionMap: ; c38f (3:438f)
push hl
push bc
- ld a, [wd23a]
+ ld a, [wBGMapPermissionDataPtr]
ld e, a
- ld a, [wd23a + 1]
+ ld a, [wBGMapPermissionDataPtr + 1]
ld d, a
or e
jr z, .skip
+; permissions are applied to 2x2 square tiles
+; so the data is half the width and height
+; of the actual tile map
push hl
ld b, HIGH(wDecompressionSecondaryBuffer)
call InitDataDecompression
@@ -503,23 +511,24 @@ Func_c38f: ; c38f (3:438f)
ld a, [wBGMapHeight]
inc a
srl a
- ld b, a
+ ld b, a ; (height + 1) / 2
ld a, [wBGMapWidth]
inc a
srl a
- ld c, a
+ ld c, a ; (width + 1) / 2
pop de
-.asm_c3b7
+
+.loop
push bc
- ld b, $00
+ ld b, 0 ; one row (with width in c)
call DecompressDataFromBank
- ld hl, $10
+ ld hl, $10 ; next row
add hl, de
ld d, h
ld e, l
pop bc
dec b
- jr nz, .asm_c3b7
+ jr nz, .loop
.skip
pop bc
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index ccde0ac..90f04c3 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -2990,7 +2990,7 @@ _LoadScene: ; 12c7f (4:6c7f)
ld [wCurTilemap], a
pop bc
push bc
- farcall Func_8007e ; load tilemap
+ farcall LoadTilemap_ToVRAM
pop bc ; base x,y
call LoadScene_LoadSGBPacket
ld a, [hli]
diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm
index d6a7ac0..ee7f304 100644
--- a/src/engine/bank20.asm
+++ b/src/engine/bank20.asm
@@ -3,7 +3,7 @@ Func_80000: ; 80000 (20:4000)
xor a
ld [wTextBoxFrameType], a
call Func_8003d
- farcall Func_c37a
+ farcall LoadPermissionMap
farcall Func_c9c7
call Func_801a1
farcall Func_c3ff
@@ -18,7 +18,7 @@ Func_80000: ; 80000 (20:4000)
Func_80028: ; 80028 (20:4028)
call ClearSRAMBGMaps
ld bc, $0000
- call Func_80077
+ call LoadTilemap_ToSRAM
farcall Func_c9c7
call Func_801a1
farcall Func_c3ee
@@ -28,15 +28,18 @@ Func_80028: ; 80028 (20:4028)
Func_8003d: ; 8003d (20:403d)
farcall LoadMapHeader
farcall SetSGB2AndSGB3MapPalette
- ld bc, $0
- call Func_80077
- ld a, $80
- ld [wd4ca], a
- xor a
+
+ lb bc, 0, 0
+ call LoadTilemap_ToSRAM
+
+ ld a, LOW(v0Tiles1 / TILE_SIZE)
+ ld [wVRAMTileOffset], a
+ xor a ; VRAM0
ld [wd4cb], a
call LoadTilesetGfx
- xor a
- ld [wd4ca], a
+
+ xor a ; LOW(v0Tiles2 / TILE_SIZE)
+ ld [wVRAMTileOffset], a
ld a, [wd291]
ld [wd4cb], a
ld a, [wd28f]
@@ -51,17 +54,21 @@ Func_8003d: ; 8003d (20:403d)
ret
; 0x80077
-Func_80077: ; 80077 (20:4077)
+LoadTilemap_ToSRAM: ; 80077 (20:4077)
ld a, TRUE
ld [wWriteBGMapToSRAM], a
- jr Func_80082
+ jr LoadTilemap
-Func_8007e: ; 8007e (20:407e)
- xor a
+LoadTilemap_ToVRAM: ; 8007e (20:407e)
+ xor a ; FALSE
ld [wWriteBGMapToSRAM], a
; fallthrough
-Func_80082: ; 80082 (20:4082)
+; loads the BG map corresponding to wCurTilemap
+; either loads them in VRAM or SRAM,
+; depending on wWriteBGMapToSRAM
+; bc = starting coordinates
+LoadTilemap: ; 80082 (20:4082)
push hl
push bc
push de
@@ -78,7 +85,7 @@ Func_80082: ; 80082 (20:4082)
; store header data
ld de, wDecompressionBuffer
- ld bc, $0006 ; header + 1st instruction
+ ld bc, $6 ; header + 1st instruction
call CopyBankedDataToDE
ld l, e
ld h, d
@@ -87,27 +94,29 @@ Func_80082: ; 80082 (20:4082)
ld a, [hli]
ld [wBGMapHeight], a
ld a, [hli]
- ld [wd23a], a
+ ld [wBGMapPermissionDataPtr], a
ld a, [hli]
- ld [wd23a + 1], a
+ ld [wBGMapPermissionDataPtr + 1], a
ld a, [hli]
- ld [wd23c], a
-
- call Func_800bd
+ ld [wBGMapCGBMode], a
+ call .InitAndDecompressBGMap
pop de
pop bc
pop hl
ret
-Func_800bd: ; 800bd (20:40bd)
+; prepares the pointers for decompressing BG Map
+; and calls InitDataDecompression
+; then decompresses the data
+.InitAndDecompressBGMap ; 800bd (20:40bd)
push hl
push bc
push de
ld a, [wTempPointer]
- add $05
+ add $5 ; header
ld e, a
ld a, [wTempPointer + 1]
- adc $00
+ adc 0
ld d, a
ld b, HIGH(wDecompressionSecondaryBuffer)
call InitDataDecompression
@@ -115,24 +124,29 @@ Func_800bd: ; 800bd (20:40bd)
ld e, a
ld a, [wVRAMPointer + 1]
ld d, a
- call Func_800e0
+ call .Decompress
pop de
pop bc
pop hl
ret
-Func_800e0: ; 800e0 (20:40e0)
-; if wd23c != 0, then use double wBGMapWidth
+; wTempBank:wTempPointer = source of compressed data
+; wVRAMPointer = destination of decompressed data
+.Decompress ; 800e0 (20:40e0)
+; if wBGMapCGBMode is true, then use double wBGMapWidth
+; since one "width" length goes to VRAM0
+; and the onther "width" length goes to VRAM1
push hl
ld hl, wd28e
ld a, [wBGMapWidth]
ld [hl], a
- ld a, [wd23c]
+ ld a, [wBGMapCGBMode]
or a
- jr z, .asm_800f0
+ jr z, .skip_doubling_width
sla [hl]
-.asm_800f0
+.skip_doubling_width
+; clear wDecompressionBuffer
ld c, $40
ld hl, wDecompressionBuffer
xor a
@@ -153,6 +167,7 @@ Func_800e0: ; 800e0 (20:40e0)
ld de, wDecompressionBuffer
call DecompressDataFromBank
+ ; copy to VRAM0
ld a, [wBGMapWidth]
ld b, a
pop de
@@ -164,17 +179,18 @@ Func_800e0: ; 800e0 (20:40e0)
jr nz, .next_row
; cgb only
+ ; copy the second "half" to VRAM1
call BankswitchVRAM1
ld a, [wBGMapWidth]
ld c, a
- ld b, $00
+ ld b, $0
ld hl, wDecompressionBuffer
add hl, bc
pop de
push de
ld a, [wBGMapWidth]
ld b, a
- call Func_80148
+ call Func_80148 ; adds some wd291 offset to tiles
call CopyBGDataToVRAMOrSRAM
call BankswitchVRAM0
@@ -195,7 +211,7 @@ Func_80148: ; 80148 (20:4148)
ld a, [wd291]
or a
ret z
- ld a, [wd23c]
+ ld a, [wBGMapCGBMode]
or a
jr z, .asm_80162
@@ -231,7 +247,7 @@ Func_80148: ; 80148 (20:4148)
; to either VRAM or SRAM, depending on wWriteBGMapToSRAM
; de is the target address in VRAM,
; if SRAM is the target address to copy,
-; copies data to s0BGMap or s1BGMap
+; copies data to sBGMap0 or sBGMap1
; for VRAM0 or VRAM1 respectively
CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e)
ld a, [wWriteBGMapToSRAM]
@@ -247,11 +263,11 @@ CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e)
ld a, BANK("SRAM1")
call BankswitchSRAM
push hl
- ld hl, s0BGMap - v0BGMap0
+ ld hl, sBGMap0 - v0BGMap0
ldh a, [hBankVRAM]
or a
jr z, .got_pointer
- ld hl, s1BGMap - v1BGMap0
+ ld hl, sBGMap1 - v1BGMap0
.got_pointer
add hl, de
ld e, l
@@ -279,7 +295,7 @@ Func_801a1: ; 801a1 (20:41a1)
push af
ld a, $1
call BankswitchSRAM
- ld hl, v0End
+ ld hl, sBGMap0
ld de, v0BGMap0
ld c, $20
.asm_801b4
@@ -322,16 +338,16 @@ Func_801a1: ; 801a1 (20:41a1)
pop hl
ret
-; clears s0BGMap and s1BGMap
+; clears sBGMap0 and sBGMap1
ClearSRAMBGMaps: ; 801f1 (20:41f1)
push hl
push bc
ldh a, [hBankSRAM]
push af
- ld a, BANK(s0BGMap) ; SRAM 1
+ ld a, BANK(sBGMap0) ; SRAM 1
call BankswitchSRAM
- ld hl, s0BGMap
- ld bc, $800 ; s0BGMap + s1BGMap
+ ld hl, sBGMap0
+ ld bc, $800 ; sBGMap0 + sBGMap1
xor a
call FillMemoryWithA
pop af
@@ -651,28 +667,30 @@ Func_803b9: ; 803b9 (20:43b9)
ret
; 0x803c9
+; a = palette index to load
Func_803c9: ; 803c9 (20:43c9)
push hl
push bc
push de
- call CopyPaletteDataToBuffer
+ call LoadPaletteDataToBuffer
ld hl, wLoadedPalData
ld a, [hli]
or a
- jr z, .asm_803dc
+ jr z, .skip_bgp
ld a, [hli]
push hl
call SetBGP
pop hl
-.asm_803dc
+.skip_bgp
+
ld a, [hli]
or a
- jr z, .asm_803e8
+ jr z, .skip_pal
ld c, a
ld a, [wd4cb]
ld b, a
call LoadPaletteDataFromHL
-.asm_803e8
+.skip_pal
pop de
pop bc
pop hl
@@ -733,7 +751,7 @@ LoadPaletteData: ; 80418 (20:4418)
push hl
push bc
push de
- call CopyPaletteDataToBuffer
+ call LoadPaletteDataToBuffer
ld hl, wLoadedPalData
ld a, [hli] ; number palettes
@@ -786,7 +804,7 @@ LoadPaletteData: ; 80418 (20:4418)
; 0x80456
; copies palette data of index in a to wLoadedPalData
-CopyPaletteDataToBuffer: ; 80456 (20:4456)
+LoadPaletteDataToBuffer: ; 80456 (20:4456)
push hl
push bc
push de
@@ -1161,9 +1179,9 @@ Func_80baa: ; 80baa (20:4baa)
push af
ld a, [wBGMapHeight]
push af
- ld a, [wd23a]
+ ld a, [wBGMapPermissionDataPtr]
push af
- ld a, [wd23a + 1]
+ ld a, [wBGMapPermissionDataPtr + 1]
push af
ld b, $0
@@ -1194,7 +1212,7 @@ Func_80baa: ; 80baa (20:4baa)
ld a, [hl]
ld [wCurTilemap], a
push bc
- farcall Func_80082 ; unnecessary farcall
+ farcall LoadTilemap ; unnecessary farcall
pop bc
srl b
ld a, c
@@ -1204,13 +1222,13 @@ Func_80baa: ; 80baa (20:4baa)
add b
ld c, a
ld b, $0
- ld hl, wBoosterViableCardList
+ ld hl, wPermissionMap
add hl, bc
- farcall Func_c38f
+ farcall DecompressPermissionMap
pop af
- ld [wd23a + 1], a
+ ld [wBGMapPermissionDataPtr + 1], a
pop af
- ld [wd23a], a
+ ld [wBGMapPermissionDataPtr], a
pop af
ld [wBGMapHeight], a
pop af
@@ -2010,7 +2028,7 @@ OverworldMapTilemap:: ; 8191b (20:591b)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map0.bin"
@@ -2018,7 +2036,7 @@ OverworldMapCGBTilemap:: ; 81a22 (20:5a22)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map1.bin"
@@ -2026,7 +2044,7 @@ MasonLaboratoryTilemap:: ; 81c13 (20:5c13)
db $1c ; width
db $1e ; height
dw $5d11
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map2.bin"
@@ -2034,7 +2052,7 @@ MasonLaboratoryCGBTilemap:: ; 81d2e (20:5d2e)
db $1c ; width
db $1e ; height
dw $5eb4
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map3.bin"
@@ -2042,7 +2060,7 @@ Unused1Tilemap:: ; 81ed1 (20:5ed1)
db $04 ; width
db $06 ; height
dw $5ef0
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map4.bin"
@@ -2050,7 +2068,7 @@ Unused2Tilemap:: ; 81ef5 (20:5ef5)
db $04 ; width
db $06 ; height
dw $5f21
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map5.bin"
@@ -2058,7 +2076,7 @@ DeckMachineRoomTilemap:: ; 81f26 (20:5f26)
db $18 ; width
db $1e ; height
dw $5fd3
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map6.bin"
@@ -2066,7 +2084,7 @@ DeckMachineRoomCGBTilemap:: ; 81feb (20:5feb)
db $18 ; width
db $1e ; height
dw $612b
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map7.bin"
@@ -2074,7 +2092,7 @@ Unused3Tilemap:: ; 82143 (20:6143)
db $04 ; width
db $01 ; height
dw $614d
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map8.bin"
@@ -2082,7 +2100,7 @@ Unused4Tilemap:: ; 82150 (20:6150)
db $04 ; width
db $01 ; height
dw $615d
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map9.bin"
@@ -2090,7 +2108,7 @@ IshiharaTilemap:: ; 82160 (20:6160)
db $14 ; width
db $18 ; height
dw $620e
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map10.bin"
@@ -2098,7 +2116,7 @@ IshiharaCGBTilemap:: ; 82222 (20:6222)
db $14 ; width
db $18 ; height
dw $6322
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map11.bin"
@@ -2106,7 +2124,7 @@ FightingClubEntranceTilemap:: ; 82336 (20:6336)
db $14 ; width
db $12 ; height
dw $63ec
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map12.bin"
@@ -2114,7 +2132,7 @@ FightingClubEntranceCGBTilemap:: ; 82400 (20:6400)
db $14 ; width
db $12 ; height
dw $6509
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map13.bin"
@@ -2122,7 +2140,7 @@ RockClubEntranceTilemap:: ; 8251d (20:651d)
db $14 ; width
db $12 ; height
dw $65d3
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map14.bin"
@@ -2130,7 +2148,7 @@ RockClubEntranceCGBTilemap:: ; 825e7 (20:65e7)
db $14 ; width
db $12 ; height
dw $66f0
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map15.bin"
@@ -2138,7 +2156,7 @@ WaterClubEntranceTilemap:: ; 82704 (20:6704)
db $14 ; width
db $12 ; height
dw $67ba
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map16.bin"
@@ -2146,7 +2164,7 @@ WaterClubEntranceCGBTilemap:: ; 827ce (20:67ce)
db $14 ; width
db $12 ; height
dw $68d7
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map17.bin"
@@ -2154,7 +2172,7 @@ LightningClubEntranceTilemap:: ; 828eb (20:68eb)
db $14 ; width
db $12 ; height
dw $69a1
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map18.bin"
@@ -2162,7 +2180,7 @@ LightningClubEntranceCGBTilemap:: ; 829b5 (20:69b5)
db $14 ; width
db $12 ; height
dw $6abe
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map19.bin"
@@ -2170,7 +2188,7 @@ GrassClubEntranceTilemap:: ; 82ad2 (20:6ad2)
db $14 ; width
db $12 ; height
dw $6b88
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map20.bin"
@@ -2178,7 +2196,7 @@ GrassClubEntranceCGBTilemap:: ; 82b9c (20:6b9c)
db $14 ; width
db $12 ; height
dw $6ca5
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map21.bin"
@@ -2186,7 +2204,7 @@ PsychicClubEntranceTilemap:: ; 82cb9 (20:6cb9)
db $14 ; width
db $12 ; height
dw $6d6f
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map22.bin"
@@ -2194,7 +2212,7 @@ PsychicClubEntranceCGBTilemap:: ; 82d83 (20:6d83)
db $14 ; width
db $12 ; height
dw $6e8c
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map23.bin"
@@ -2202,7 +2220,7 @@ ScienceClubEntranceTilemap:: ; 82ea0 (20:6ea0)
db $14 ; width
db $12 ; height
dw $6f56
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map24.bin"
@@ -2210,7 +2228,7 @@ ScienceClubEntranceCGBTilemap:: ; 82f6a (20:6f6a)
db $14 ; width
db $12 ; height
dw $7073
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map25.bin"
@@ -2218,7 +2236,7 @@ FireClubEntranceTilemap:: ; 83087 (20:7087)
db $14 ; width
db $12 ; height
dw $713d
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map26.bin"
@@ -2226,7 +2244,7 @@ FireClubEntranceCGBTilemap:: ; 83151 (20:7151)
db $14 ; width
db $12 ; height
dw $725a
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map27.bin"
@@ -2234,7 +2252,7 @@ ChallengeHallEntranceTilemap:: ; 8326e (20:726e)
db $14 ; width
db $12 ; height
dw $730d
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map28.bin"
@@ -2242,7 +2260,7 @@ ChallengeHallEntranceCGBTilemap:: ; 83321 (20:7321)
db $14 ; width
db $12 ; height
dw $7410
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map29.bin"
@@ -2250,7 +2268,7 @@ ClubLobbyTilemap:: ; 83424 (20:7424)
db $1c ; width
db $1a ; height
dw $7529
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map30.bin"
@@ -2258,7 +2276,7 @@ ClubLobbyCGBTilemap:: ; 83545 (20:7545)
db $1c ; width
db $1a ; height
dw $76bf
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map31.bin"
@@ -2266,7 +2284,7 @@ FightingClubTilemap:: ; 836db (20:76db)
db $18 ; width
db $12 ; height
dw $777b
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map32.bin"
@@ -2274,7 +2292,7 @@ FightingClubCGBTilemap:: ; 8378c (20:778c)
db $18 ; width
db $12 ; height
dw $787c
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map33.bin"
@@ -2282,7 +2300,7 @@ RockClubTilemap:: ; 8388d (20:788d)
db $1c ; width
db $1e ; height
dw $79b5
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map34.bin"
@@ -2290,7 +2308,7 @@ RockClubCGBTilemap:: ; 839d6 (20:79d6)
db $1c ; width
db $1e ; height
dw $7bd0
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map35.bin"
@@ -2298,7 +2316,7 @@ Unused5Tilemap:: ; 83bf1 (20:7bf1)
db $04 ; width
db $03 ; height
dw $7c00
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map52.bin"
@@ -2306,7 +2324,7 @@ Unused6Tilemap:: ; 83c03 (20:7c03)
db $04 ; width
db $03 ; height
dw $7c17
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map53.bin"
@@ -2314,7 +2332,7 @@ Unused7Tilemap:: ; 83c1a (20:7c1a)
db $04 ; width
db $03 ; height
dw $7c23
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map56.bin"
@@ -2322,7 +2340,7 @@ Unused8Tilemap:: ; 83c26 (20:7c26)
db $04 ; width
db $03 ; height
dw $7c33
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map57.bin"
@@ -2330,7 +2348,7 @@ GrassMedalTilemap:: ; 83c36 (20:7c36)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map62.bin"
diff --git a/src/gfx.asm b/src/gfx.asm
index 903cbad..c03f4e6 100644
--- a/src/gfx.asm
+++ b/src/gfx.asm
@@ -47,7 +47,7 @@ WaterClubTilemap:: ; 84000 (21:4000)
db $1c ; width
db $20 ; height
dw $4164
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map36.bin"
@@ -55,7 +55,7 @@ WaterClubCGBTilemap:: ; 84188 (21:4188)
db $1c ; width
db $20 ; height
dw $4397
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map37.bin"
@@ -63,7 +63,7 @@ LightningClubTilemap:: ; 843bb (21:43bb)
db $1c ; width
db $20 ; height
dw $4511
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map38.bin"
@@ -71,7 +71,7 @@ LightningClubCGBTilemap:: ; 84533 (21:4533)
db $1c ; width
db $20 ; height
dw $470c
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map39.bin"
@@ -79,7 +79,7 @@ GrassClubTilemap:: ; 8472e (21:472e)
db $1c ; width
db $20 ; height
dw $48b4
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map40.bin"
@@ -87,7 +87,7 @@ GrassClubCGBTilemap:: ; 848d8 (21:48d8)
db $1c ; width
db $20 ; height
dw $4b4f
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map41.bin"
@@ -95,7 +95,7 @@ PsychicClubTilemap:: ; 84b73 (21:4b73)
db $1c ; width
db $1c ; height
dw $4c50
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map42.bin"
@@ -103,7 +103,7 @@ PsychicClubCGBTilemap:: ; 84c6f (21:4c6f)
db $1c ; width
db $1c ; height
dw $4ddf
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map43.bin"
@@ -111,7 +111,7 @@ ScienceClubTilemap:: ; 84dfe (21:4dfe)
db $1c ; width
db $20 ; height
dw $4efe
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map44.bin"
@@ -119,7 +119,7 @@ ScienceClubCGBTilemap:: ; 84f1d (21:4f1d)
db $1c ; width
db $20 ; height
dw $5097
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map45.bin"
@@ -127,7 +127,7 @@ FireClubTilemap:: ; 850b6 (21:50b6)
db $1c ; width
db $20 ; height
dw $5175
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map46.bin"
@@ -135,7 +135,7 @@ FireClubCGBTilemap:: ; 85191 (21:5191)
db $1c ; width
db $20 ; height
dw $52f9
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map47.bin"
@@ -143,7 +143,7 @@ ChallengeHallTilemap:: ; 85315 (21:5315)
db $20 ; width
db $20 ; height
dw $5484
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map48.bin"
@@ -151,7 +151,7 @@ ChallengeHallCGBTilemap:: ; 854b3 (21:54b3)
db $20 ; width
db $20 ; height
dw $56db
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map49.bin"
@@ -159,7 +159,7 @@ PokemonDomeEntranceTilemap:: ; 8570a (21:570a)
db $20 ; width
db $12 ; height
dw $57ba
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map50.bin"
@@ -167,7 +167,7 @@ PokemonDomeEntranceCGBTilemap:: ; 857ce (21:57ce)
db $20 ; width
db $12 ; height
dw $58db
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map51.bin"
@@ -175,7 +175,7 @@ PokemonDomeTilemap:: ; 858ef (21:58ef)
db $20 ; width
db $20 ; height
dw $5a58
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map54.bin"
@@ -183,7 +183,7 @@ PokemonDomeGBTilemap:: ; 85a79 (21:5a79)
db $20 ; width
db $20 ; height
dw $5cc1
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map55.bin"
@@ -191,7 +191,7 @@ HallOfHonorTilemap:: ; 85ce2 (21:5ce2)
db $18 ; width
db $1a ; height
dw $5ddc
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map58.bin"
@@ -199,7 +199,7 @@ HallOfHonorCGBTilemap:: ; 85df4 (21:5df4)
db $18 ; width
db $1a ; height
dw $5f64
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map59.bin"
@@ -207,7 +207,7 @@ CardPopCGBTilemap:: ; 85f7c (21:5f7c)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map60.bin"
@@ -215,7 +215,7 @@ CardPopTilemap:: ; 8607f (21:607f)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map61.bin"
@@ -223,7 +223,7 @@ ScienceMedalTilemap:: ; 8617d (21:617d)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map63.bin"
@@ -231,7 +231,7 @@ FireMedalTilemap:: ; 86193 (21:6193)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map64.bin"
@@ -239,7 +239,7 @@ WaterMedalTilemap:: ; 861a9 (21:61a9)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map65.bin"
@@ -247,7 +247,7 @@ LightningMedalTilemap:: ; 861bf (21:61bf)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map66.bin"
@@ -255,7 +255,7 @@ FightingMedalTilemap:: ; 861d5 (21:61d5)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map67.bin"
@@ -263,7 +263,7 @@ RockMedalTilemap:: ; 861eb (21:61eb)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map68.bin"
@@ -271,7 +271,7 @@ PsychicMedalTilemap:: ; 86201 (21:6201)
db $03 ; width
db $03 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map69.bin"
@@ -279,7 +279,7 @@ GameBoyLinkCGBTilemap:: ; 86217 (21:6217)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map70.bin"
@@ -287,7 +287,7 @@ GameBoyLinkTilemap:: ; 862da (21:62da)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map71.bin"
@@ -295,7 +295,7 @@ GameBoyLinkConnectingCGBTilemap:: ; 86364 (21:6364)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map72.bin"
@@ -303,7 +303,7 @@ GameBoyLinkConnectingTilemap:: ; 86443 (21:6443)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map73.bin"
@@ -311,7 +311,7 @@ GameBoyPrinterCGBTilemap:: ; 864df (21:64df)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map74.bin"
@@ -319,7 +319,7 @@ GameBoyPrinterTilemap:: ; 865b5 (21:65b5)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map75.bin"
@@ -327,7 +327,7 @@ ColosseumTilemap:: ; 86647 (21:6647)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map76.bin"
@@ -335,7 +335,7 @@ ColosseumCGBTilemap:: ; 866b8 (21:66b8)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map77.bin"
@@ -343,7 +343,7 @@ EvolutionTilemap:: ; 8673e (21:673e)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map78.bin"
@@ -351,7 +351,7 @@ EvolutionCGBTilemap:: ; 867af (21:67af)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map79.bin"
@@ -359,7 +359,7 @@ MysteryTilemap:: ; 86833 (21:6833)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map80.bin"
@@ -367,7 +367,7 @@ MysteryCGBTilemap:: ; 868a4 (21:68a4)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map81.bin"
@@ -375,7 +375,7 @@ LaboratoryTilemap:: ; 86925 (21:6925)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map82.bin"
@@ -383,7 +383,7 @@ LaboratoryCGBTilemap:: ; 86996 (21:6996)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map83.bin"
@@ -391,7 +391,7 @@ CharizardIntroTilemap:: ; 86a14 (21:6a14)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map84.bin"
@@ -399,7 +399,7 @@ CharizardIntroCGBTilemap:: ; 86a85 (21:6a85)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map85.bin"
@@ -407,7 +407,7 @@ ScytherIntroTilemap:: ; 86b28 (21:6b28)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map86.bin"
@@ -415,7 +415,7 @@ ScytherIntroCGBTilemap:: ; 86b99 (21:6b99)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map87.bin"
@@ -423,7 +423,7 @@ AerodactylIntroTilemap:: ; 86c34 (21:6c34)
db $08 ; width
db $0c ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map88.bin"
@@ -431,7 +431,7 @@ AerodactylIntroCGBTilemap:: ; 86ca5 (21:6ca5)
db $08 ; width
db $0c ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map89.bin"
@@ -439,7 +439,7 @@ TitleScreen1Tilemap:: ; 86d37 (21:6d37)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map90.bin"
@@ -447,7 +447,7 @@ TitleScreen2Tilemap:: ; 86dcc (21:6dcc)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map91.bin"
@@ -455,7 +455,7 @@ SolidTiles1Tilemap:: ; 86e8a (21:6e8a)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map92.bin"
@@ -463,7 +463,7 @@ SolidTiles2Tilemap:: ; 86f18 (21:6f18)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map93.bin"
@@ -471,7 +471,7 @@ SolidTiles3Tilemap:: ; 86fc0 (21:6fc0)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map94.bin"
@@ -479,7 +479,7 @@ TitleScreen3Tilemap:: ; 8704f (21:704f)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map95.bin"
@@ -487,7 +487,7 @@ TitleScreen4Tilemap:: ; 871a5 (21:71a5)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map96.bin"
@@ -495,7 +495,7 @@ SolidTiles4Tilemap:: ; 87397 (21:7397)
db $08 ; width
db $04 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map97.bin"
@@ -503,7 +503,7 @@ PlayerTilemap:: ; 873b7 (21:73b7)
db $06 ; width
db $06 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map98.bin"
@@ -511,7 +511,7 @@ OpponentTilemap:: ; 873e5 (21:73e5)
db $06 ; width
db $06 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map99.bin"
@@ -519,7 +519,7 @@ TitleScreen5Tilemap:: ; 87413 (21:7413)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map100.bin"
@@ -527,7 +527,7 @@ TitleScreen6Tilemap:: ; 87538 (21:7538)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map101.bin"
@@ -535,7 +535,7 @@ CopyrightTilemap:: ; 8769f (21:769f)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map102.bin"
@@ -543,7 +543,7 @@ CopyrightCGBTilemap:: ; 876f6 (21:76f6)
db $14 ; width
db $12 ; height
dw $0000
- db $01
+ db TRUE ; cgb mode
INCBIN "data/maps/map103.bin"
@@ -551,7 +551,7 @@ NintendoTilemap:: ; 8777c (21:777c)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map104.bin"
@@ -559,7 +559,7 @@ CompaniesTilemap:: ; 877c4 (21:77c4)
db $14 ; width
db $12 ; height
dw $0000
- db $00
+ db FALSE ; cgb mode
INCBIN "data/maps/map105.bin"
diff --git a/src/sram.asm b/src/sram.asm
index f8d77fb..f2ffbf2 100644
--- a/src/sram.asm
+++ b/src/sram.asm
@@ -200,9 +200,9 @@ sba68:: ; ba68
SECTION "SRAM1", SRAM
; from VRAM0
-s0BGMap:: ds $400 ; a000
+sBGMap0:: ds $400 ; a000
; from VRAM1
-s1BGMap:: ds $400 ; a400
+sBGMap1:: ds $400 ; a400
SECTION "SRAM2", SRAM
diff --git a/src/wram.asm b/src/wram.asm
index e5f8b9c..de91ebd 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -2167,10 +2167,15 @@ wd238:: ; d238
wCurTileset:: ; d239
ds $1
-wd23a:: ; d23a
+; pointer to compressed data
+; of the current map's permission map
+wBGMapPermissionDataPtr:: ; d23a
ds $2
-wd23c:: ; d23c
+; whether the BG Map is in CGB mode
+; this means half of the width is for
+; VRAM0 and the other half is for VRAM1
+wBGMapCGBMode:: ; d23c
ds $1
wd23d:: ; d23d