diff options
author | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2021-04-05 11:45:15 +0100 |
---|---|---|
committer | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2021-04-05 11:45:15 +0100 |
commit | ea0172a3fa3dc9ac1216037490ecb0aca39e68b9 (patch) | |
tree | b4749763119c1c4d1adc6433c3ab2c44490bb966 | |
parent | 1082feadfc60289f1004a2b8fd826647ccfc1ba9 (diff) |
SGB border medals
-rw-r--r-- | src/constants/script_constants.asm | 22 | ||||
-rw-r--r-- | src/engine/bank1c.asm | 140 |
2 files changed, 142 insertions, 20 deletions
diff --git a/src/constants/script_constants.asm b/src/constants/script_constants.asm index a6a05be..6dd8d66 100644 --- a/src/constants/script_constants.asm +++ b/src/constants/script_constants.asm @@ -278,3 +278,25 @@ WEST EQU $03 NO_MOVE EQU %10000000 ; For rotations without movement VARIABLE_CARD EQU 0 ; use the card located in wCardReceived instead of using the script's argument + +; medal flags set in EVENT_MEDAL_FLAGS + const_def + const PSYCHIC_MEDAL_F ; 0 + const ROCK_MEDAL_F ; 1 + const FIGHTING_MEDAL_F ; 2 + const LIGHTNING_MEDAL_F ; 3 + const WATER_MEDAL_F ; 4 + const FIRE_MEDAL_F ; 5 + const SCIENCE_MEDAL_F ; 6 + const GRASS_MEDAL_F ; 7 + +PSYCHIC_MEDAL EQU 1 << PSYCHIC_MEDAL_F +ROCK_MEDAL EQU 1 << ROCK_MEDAL_F +FIGHTING_MEDAL EQU 1 << FIGHTING_MEDAL_F +LIGHTNING_MEDAL EQU 1 << LIGHTNING_MEDAL_F +WATER_MEDAL EQU 1 << WATER_MEDAL_F +FIRE_MEDAL EQU 1 << FIRE_MEDAL_F +SCIENCE_MEDAL EQU 1 << SCIENCE_MEDAL_F +GRASS_MEDAL EQU 1 << GRASS_MEDAL_F + +NUM_MEDALS EQU 8
\ No newline at end of file diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm index 4ef785f..62d4a77 100644 --- a/src/engine/bank1c.asm +++ b/src/engine/bank1c.asm @@ -41,14 +41,14 @@ Func_70044: ; 70044 (1c:4044) add c ; *6 ld c, a ld b, $0 - ld hl, Unknown_70057 + ld hl, .SGBBorders add hl, bc call Func_70082 pop bc pop hl ret -Unknown_70057: ; 70057 (1c:4057) +.SGBBorders ; tiles, pals (?), map (?) dw SGBBorderIntroGfxPointers, SGBData_BorderIntro3, SGBData_BorderIntro4 dw SGBBorderMedalsGfxPointers, SGBData_BorderMedals3, SGBData_BorderMedals5 @@ -142,7 +142,7 @@ Func_700fe: ; 700fe (1c:40fe) push de push hl push de - push hl + push hl ; input hl call Func_70136 pop hl ld de, v0Tiles1 @@ -152,8 +152,9 @@ Func_700fe: ; 700fe (1c:40fe) ld de, v0Tiles2 call DecompressSGBData call PrepareBGMapForSendingSGBBorder - pop hl - call Func_70214 + + pop hl ; input hl + call FillSGBBorderMedalSlots ld hl, PctTrnPacket call SendSGBBorder pop de @@ -300,25 +301,30 @@ PrepareBGMapForSendingSGBBorder: ; 701fe (1c:41fe) jr nz, .asm_70208 ret -Func_70214: ; 70214 (1c:4214) +; iterates all the medals obtained by the player +; and fills the corresponding medal slot in the SGB border +FillSGBBorderMedalSlots: ; 70214 (1c:4214) +; exit if not SGBData_BorderMedals5 ld a, l - cp $dc + cp LOW(SGBData_BorderMedals5) ret nz ld a, h - cp $49 + cp HIGH(SGBData_BorderMedals5) ret nz - ld hl, Unknown_7024a + + ld hl, .SGBBorderMedalTiles ld a, EVENT_MEDAL_FLAGS farcall GetEventValue - ld c, $8 -.asm_70227 + ld c, NUM_MEDALS +.loop_medals push bc push hl push af bit 7, a - jr z, .asm_7023e - ld c, $9 -.asm_70230 + jr z, .next_medal + + ld c, 3 * 3 +.loop_tiles push bc ld e, [hl] inc hl @@ -331,20 +337,114 @@ Func_70214: ; 70214 (1c:4214) ld [de], a pop bc dec c - jr nz, .asm_70230 -.asm_7023e + jr nz, .loop_tiles + +.next_medal pop af rlca pop hl - ld bc, $0024 + ld bc, 3 * 3 * 4 add hl, bc pop bc dec c - jr nz, .asm_70227 + jr nz, .loop_medals ret -Unknown_7024a: ; 7024a (1c:424a) - INCROM $7024a, $7036a +border_medal_tile: MACRO + dw \1 ; VRAM address + db \2 ; tile + db \3 ; pal (?) +ENDM + +.SGBBorderMedalTiles +; GRASS_MEDAL + border_medal_tile v0Tiles1 + $182, $3f, $10 + border_medal_tile v0Tiles1 + $184, $40, $10 + border_medal_tile v0Tiles1 + $186, $41, $10 + border_medal_tile v0Tiles1 + $1c2, $42, $10 + border_medal_tile v0Tiles1 + $1c4, $43, $10 + border_medal_tile v0Tiles1 + $1c6, $44, $10 + border_medal_tile v0Tiles1 + $202, $45, $10 + border_medal_tile v0Tiles1 + $204, $46, $10 + border_medal_tile v0Tiles1 + $206, $47, $10 + +; SCIENCE_MEDAL + border_medal_tile v0Tiles1 + $282, $48, $10 + border_medal_tile v0Tiles1 + $284, $49, $10 + border_medal_tile v0Tiles1 + $286, $4a, $10 + border_medal_tile v0Tiles1 + $2c2, $4b, $10 + border_medal_tile v0Tiles1 + $2c4, $4c, $10 + border_medal_tile v0Tiles1 + $2c6, $4d, $10 + border_medal_tile v0Tiles1 + $302, $4e, $10 + border_medal_tile v0Tiles1 + $304, $4f, $10 + border_medal_tile v0Tiles1 + $306, $50, $10 + +; FIRE_MEDAL + border_medal_tile v0Tiles1 + $382, $51, $10 + border_medal_tile v0Tiles1 + $384, $52, $10 + border_medal_tile v0Tiles1 + $386, $53, $10 + border_medal_tile v0Tiles1 + $3c2, $54, $10 + border_medal_tile v0Tiles1 + $3c4, $55, $10 + border_medal_tile v0Tiles1 + $3c6, $56, $10 + border_medal_tile v0Tiles1 + $402, $57, $10 + border_medal_tile v0Tiles1 + $404, $58, $10 + border_medal_tile v0Tiles1 + $406, $59, $10 + +; WATER_MEDAL + border_medal_tile v0Tiles1 + $482, $5a, $10 + border_medal_tile v0Tiles1 + $484, $5b, $10 + border_medal_tile v0Tiles1 + $486, $5c, $10 + border_medal_tile v0Tiles1 + $4c2, $5d, $10 + border_medal_tile v0Tiles1 + $4c4, $5e, $10 + border_medal_tile v0Tiles1 + $4c6, $5f, $10 + border_medal_tile v0Tiles1 + $502, $60, $10 + border_medal_tile v0Tiles1 + $504, $61, $10 + border_medal_tile v0Tiles1 + $506, $62, $10 + +; LIGHTNING_MEDAL + border_medal_tile v0Tiles1 + $1b8, $63, $10 + border_medal_tile v0Tiles1 + $1ba, $64, $10 + border_medal_tile v0Tiles1 + $1bc, $65, $10 + border_medal_tile v0Tiles1 + $1f8, $66, $10 + border_medal_tile v0Tiles1 + $1fa, $67, $10 + border_medal_tile v0Tiles1 + $1fc, $68, $10 + border_medal_tile v0Tiles1 + $238, $69, $10 + border_medal_tile v0Tiles1 + $23a, $6a, $10 + border_medal_tile v0Tiles1 + $23c, $6b, $10 + +; FIGHTING_MEDAL + border_medal_tile v0Tiles1 + $2b8, $7e, $10 + border_medal_tile v0Tiles1 + $2ba, $7f, $10 + border_medal_tile v0Tiles1 + $2bc, $80, $10 + border_medal_tile v0Tiles1 + $2f8, $81, $10 + border_medal_tile v0Tiles1 + $2fa, $82, $10 + border_medal_tile v0Tiles1 + $2fc, $83, $10 + border_medal_tile v0Tiles1 + $338, $84, $10 + border_medal_tile v0Tiles1 + $33a, $85, $10 + border_medal_tile v0Tiles1 + $33c, $86, $10 + +; ROCK_MEDAL + border_medal_tile v0Tiles1 + $3b8, $75, $10 + border_medal_tile v0Tiles1 + $3ba, $76, $10 + border_medal_tile v0Tiles1 + $3bc, $77, $10 + border_medal_tile v0Tiles1 + $3f8, $78, $10 + border_medal_tile v0Tiles1 + $3fa, $79, $10 + border_medal_tile v0Tiles1 + $3fc, $7a, $10 + border_medal_tile v0Tiles1 + $438, $7b, $10 + border_medal_tile v0Tiles1 + $43a, $7c, $10 + border_medal_tile v0Tiles1 + $43c, $7d, $10 + +; PSYCHIC_MEDAL + border_medal_tile v0Tiles1 + $4b8, $6c, $10 + border_medal_tile v0Tiles1 + $4ba, $6d, $10 + border_medal_tile v0Tiles1 + $4bc, $6e, $10 + border_medal_tile v0Tiles1 + $4f8, $6f, $10 + border_medal_tile v0Tiles1 + $4fa, $70, $10 + border_medal_tile v0Tiles1 + $4fc, $71, $10 + border_medal_tile v0Tiles1 + $538, $72, $10 + border_medal_tile v0Tiles1 + $53a, $73, $10 + border_medal_tile v0Tiles1 + $53c, $74, $10 +; 0x7036a ; decompresses palette data depending on wd132 ; then sends it as SGB packet |