aboutsummaryrefslogtreecommitdiffstats
path: root/engine/bg_map_attributes.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-11-04 15:16:20 -0500
committerRangi <remy.oukaour+rangi42@gmail.com>2020-11-04 19:44:31 -0500
commitaae999f72bd81a3156c7e00da4ebf499f52da5a6 (patch)
tree32fef70a31af3a0b5ad2b0d34042c312574fb42d /engine/bg_map_attributes.asm
parentMerge branch 'master' of https://github.com/pret/pokered (diff)
downloadpokeyellow-aae999f72bd81a3156c7e00da4ebf499f52da5a6.tar.gz
pokeyellow-aae999f72bd81a3156c7e00da4ebf499f52da5a6.tar.xz
pokeyellow-aae999f72bd81a3156c7e00da4ebf499f52da5a6.zip
Start reorganizing pokeyellow
Diffstat (limited to 'engine/bg_map_attributes.asm')
-rw-r--r--engine/bg_map_attributes.asm219
1 files changed, 0 insertions, 219 deletions
diff --git a/engine/bg_map_attributes.asm b/engine/bg_map_attributes.asm
deleted file mode 100644
index 4c50bcf8..00000000
--- a/engine/bg_map_attributes.asm
+++ /dev/null
@@ -1,219 +0,0 @@
-INCLUDE "data/bg_map_attributes.asm"
-
-LoadBGMapAttributes::
- ld hl, BGMapAttributesPointers
- ld a, c ; c = which packet
- push af ; save for later (to determine if we're handling the trainer card or party menu)
- dec a ; read this code as:
- add a ; dec a
- ld e, a ; add a
- xor a ; ld e, a
- ld d, a ; ld d, 0
- add hl, de ; add hl, de
- ld a, [hli] ; ld a, [hli]
- ld e, a ; ld h, [hl]
- ld a, [hl] ; ld l, a
- ld h, a
- ld a, e
- ld l, a
-
- di
- ld a, $1
- ldh [rVBK], a
- push hl
- ld a, [hl]
- ld c, a ; save attribute count for later
- ld de, $10
- add hl, de
- ld a, h
- ldh [rHDMA1], a
- ld a, l
- ldh [rHDMA2], a
- ld de, vBGMap0
- ld a, d
- ldh [rHDMA3], a
- ld a, e
- ldh [rHDMA4], a
-
- ldh a, [rLCDC]
- and rLCDC_ENABLE_MASK ; is LCD off?
- jr z, .lcdOff ; if off, transfer immediately
-; wait for VBlank if LCD is on
-.waitForVBlankLoop1
- ldh a, [rLY]
- cp $90
- jr nz, .waitForVBlankLoop1
-.waitForAccessibleVRAMLoop1
- ldh a, [rSTAT]
- and %10 ; are we in HBlank or VBlank?
- jr nz, .waitForAccessibleVRAMLoop1 ; loop until we're in a safe period to transfer to VRAM
-.lcdOff
- ld a, c ; number of BG attributes to transfer, plus 1 times 16
- ldh [rHDMA5], a ; initiate transfer
- call Func_3082 ; update audio so it doesn't "lag"
- pop hl
- ld a, [hli]
- ld c, a ; number of BG attributes to transfer, plus 1 times 16
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a ; offset of the attributes
- add hl, de ; hl = new pointer
- ld a, h
- ldh [rHDMA1], a
- ld a, l
- ldh [rHDMA2], a
- ld de, vBGMap1 ; copy to vBGMap1
- ld a, d
- ldh [rHDMA3], a
- ld a, e
- ldh [rHDMA4], a
-; LCD check again
- ldh a, [rLCDC]
- and rLCDC_ENABLE_MASK ; is LCD off?
- jr z, .lcdOff2 ; if off, transfer immediately
-; wait for VBlank if LCD is on
-.waitForVBlankLoop2
- ldh a, [rLY]
- cp $90
- jr nz, .waitForVBlankLoop2
-.waitForAccessibleVRAMLoop2
- ldh a, [rSTAT]
- and %10 ; are we in HBlank or VBlank?
- jr nz, .waitForAccessibleVRAMLoop2 ; loop until we're in a safe period to transfer to VRAM
-.lcdOff2
- ld a, c
- ldh [rHDMA5], a
- pop af
- dec a
- dec a
- dec a
- dec a
- jr nz, .checkIfHandlingPartyMenu
- call HandleBadgeFaceAttributes
- jr .done
-.checkIfHandlingPartyMenu
- dec a
- call z, HandlePartyHPBarAttributes
-.done
- call Func_3082
- ldh a, [rIF]
- res VBLANK, a
- ldh [rIF], a
- xor a
- ldh [rVBK], a
- ei
- ret
-
-BGMapAttributesPointers:
- dw BGMapAttributes_Unknown1
- dw BGMapAttributes_Unknown2
- dw BGMapAttributes_GameFreakIntro
- dw BGMapAttributes_TrainerCard
- dw BGMapAttributes_PartyMenu
- dw BGMapAttributes_NidorinoIntro
- dw BGMapAttributes_TitleScreen
- dw BGMapAttributes_Slots
- dw BGMapAttributes_Pokedex
- dw BGMapAttributes_StatusScreen
- dw BGMapAttributes_Battle
- dw BGMapAttributes_WholeScreen
- dw BGMapAttributes_Unknown13
-
-HandleBadgeFaceAttributes:
-; zero out the attributes if the player doesn't have the respective badge
-; BOULDERBADGE
- ld hl, vBGMap1 + $183
- ld de, wTrainerCardBadgeAttributes + 6 * 0
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; CASCADEBADGE
- ld hl, vBGMap1 + $187
- ld de, wTrainerCardBadgeAttributes + 6 * 1
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; THUNDERBADGE
- ld hl, vBGMap1 + $18b
- ld de, wTrainerCardBadgeAttributes + 6 * 2
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; RAINBOWBADGE
- ld hl, vBGMap1 + $18f
- ld de, wTrainerCardBadgeAttributes + 6 * 3
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; SOULBADGE
- ld hl, vBGMap1 + $1e3
- ld de, wTrainerCardBadgeAttributes + 6 * 6
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; MARSHBADGE
- ld hl, vBGMap1 + $1e7
- ld de, wTrainerCardBadgeAttributes + 6 * 7
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; VOLCANOBADGE
- ld hl, vBGMap1 + $1eb
- ld de, wTrainerCardBadgeAttributes + 6 * 8
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
-; EARTHBADGE
- ld hl, vBGMap1 + $1ef
- ld de, wTrainerCardBadgeAttributes + 6 * 9
- ld a, [de]
- and a
- call z, ZeroOutCurrentBadgeAttributes
- ret
-
-ZeroOutCurrentBadgeAttributes:
- push hl
- xor a
- ld [hli], a
- ld [hl], a
- ld bc, $1f
- add hl, bc
- ld [hli], a
- ld [hl], a
- pop hl
- ret
-
-HandlePartyHPBarAttributes:
-; hp bars require 3 (green, orange, red) colours, when there are only 2 "free" colours per palette
-; therefore, we must transfer individual bg attributes where the locations of the hp bars are in vram
- ld hl, vBGMap1 + $25 ; location of start of the HP bar in vram
- ld de, wPartyHPBarAttributes
- ld c, PARTY_LENGTH
-.loop
- push bc
- push hl
- ld a, [de]
- and $3 ; 4 possible palettes
- rept 7 ; hp bar length in tiles
- ld [hli], a
- endr
- pop hl
- ld bc, $40 ; get 2nd party location
- add hl, bc
- push hl
-
- push de ; (inefficiently) copy de to hl
- pop hl
-
- ld bc, $6
- add hl, bc ; get the next palette
-
- push hl
- pop de ; copy back to de
-
- pop hl
- pop bc
- dec c
- jr nz, .loop
- ret