through MultiplyPaletteRGBComponents
This commit is contained in:
@@ -5,419 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start CreateTrainerSprite
|
|
||||||
CreateTrainerSprite: @ 8083858
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
sub sp, 0x18
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r6, r2, 0
|
|
||||||
mov r9, r3
|
|
||||||
ldr r7, [sp, 0x34]
|
|
||||||
lsls r4, 24
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
lsls r6, 16
|
|
||||||
lsrs r6, 16
|
|
||||||
mov r0, r9
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r9, r0
|
|
||||||
lsrs r4, 21
|
|
||||||
ldr r3, _080838E0 @ =gTrainerFrontPicPaletteTable
|
|
||||||
mov r8, r3
|
|
||||||
add r8, r4
|
|
||||||
mov r0, r8
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl LoadCompressedSpritePaletteOverrideBuffer
|
|
||||||
ldr r0, _080838E4 @ =gTrainerFrontPicTable
|
|
||||||
adds r4, r0
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl LoadCompressedSpriteSheetOverrideBuffer
|
|
||||||
mov r1, sp
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
movs r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
mov r3, r8
|
|
||||||
ldrh r0, [r3, 0x4]
|
|
||||||
strh r0, [r1, 0x2]
|
|
||||||
ldr r0, _080838E8 @ =gNewGameBirchOamAttributes
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
ldr r0, _080838EC @ =gDummySpriteAnimTable
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
str r2, [sp, 0xC]
|
|
||||||
ldr r0, _080838F0 @ =gDummySpriteAffineAnimTable
|
|
||||||
str r0, [sp, 0x10]
|
|
||||||
ldr r0, _080838F4 @ =SpriteCallbackDummy
|
|
||||||
str r0, [sp, 0x14]
|
|
||||||
lsls r5, 16
|
|
||||||
asrs r5, 16
|
|
||||||
lsls r6, 16
|
|
||||||
asrs r6, 16
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r2, r6, 0
|
|
||||||
mov r3, r9
|
|
||||||
bl CreateSprite
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
add sp, 0x18
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080838E0: .4byte gTrainerFrontPicPaletteTable
|
|
||||||
_080838E4: .4byte gTrainerFrontPicTable
|
|
||||||
_080838E8: .4byte gNewGameBirchOamAttributes
|
|
||||||
_080838EC: .4byte gDummySpriteAnimTable
|
|
||||||
_080838F0: .4byte gDummySpriteAffineAnimTable
|
|
||||||
_080838F4: .4byte SpriteCallbackDummy
|
|
||||||
thumb_func_end CreateTrainerSprite
|
|
||||||
|
|
||||||
thumb_func_start LoadTrainerGfx_TrainerCard
|
|
||||||
LoadTrainerGfx_TrainerCard: @ 80838F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r1, r2, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
ldr r0, _08083928 @ =gTrainerFrontPicTable
|
|
||||||
lsrs r4, 21
|
|
||||||
adds r0, r4, r0
|
|
||||||
ldr r0, [r0]
|
|
||||||
bl LZDecompressVram
|
|
||||||
ldr r0, _0808392C @ =gTrainerFrontPicPaletteTable
|
|
||||||
adds r4, r0
|
|
||||||
ldr r0, [r4]
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadCompressedPalette
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08083928: .4byte gTrainerFrontPicTable
|
|
||||||
_0808392C: .4byte gTrainerFrontPicPaletteTable
|
|
||||||
thumb_func_end LoadTrainerGfx_TrainerCard
|
|
||||||
|
|
||||||
thumb_func_start AddNewGameBirchObject
|
|
||||||
AddNewGameBirchObject: @ 8083930
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r6, r2, 0
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
ldr r0, _08083968 @ =gNewGameBirchObjectPaletteInfo
|
|
||||||
bl LoadSpritePalette
|
|
||||||
ldr r0, _0808396C @ =gNewGameBirchObjectTemplate
|
|
||||||
lsls r4, 16
|
|
||||||
asrs r4, 16
|
|
||||||
lsls r5, 16
|
|
||||||
asrs r5, 16
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r2, r5, 0
|
|
||||||
adds r3, r6, 0
|
|
||||||
bl CreateSprite
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08083968: .4byte gNewGameBirchObjectPaletteInfo
|
|
||||||
_0808396C: .4byte gNewGameBirchObjectTemplate
|
|
||||||
thumb_func_end AddNewGameBirchObject
|
|
||||||
|
|
||||||
thumb_func_start CreateMonSprite_PicBox
|
|
||||||
CreateMonSprite_PicBox: @ 8083970
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x10
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
movs r3, 0x80
|
|
||||||
lsls r3, 8
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
str r1, [sp]
|
|
||||||
lsls r2, 16
|
|
||||||
asrs r2, 16
|
|
||||||
str r2, [sp, 0x4]
|
|
||||||
movs r1, 0
|
|
||||||
str r1, [sp, 0x8]
|
|
||||||
ldr r1, _080839C0 @ =gMonPaletteTable
|
|
||||||
lsls r4, r0, 3
|
|
||||||
adds r4, r1
|
|
||||||
ldrh r1, [r4, 0x4]
|
|
||||||
str r1, [sp, 0xC]
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r3, 0
|
|
||||||
movs r3, 0x1
|
|
||||||
bl CreateMonPicSprite_HandleDeoxys
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
ldrh r0, [r4, 0x4]
|
|
||||||
bl IndexOfSpritePaletteTag
|
|
||||||
adds r0, 0x10
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl sub_807B084
|
|
||||||
ldr r0, _080839C4 @ =0x0000ffff
|
|
||||||
cmp r5, r0
|
|
||||||
beq _080839C8
|
|
||||||
lsls r0, r5, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
b _080839CA
|
|
||||||
.align 2, 0
|
|
||||||
_080839C0: .4byte gMonPaletteTable
|
|
||||||
_080839C4: .4byte 0x0000ffff
|
|
||||||
_080839C8:
|
|
||||||
movs r0, 0x40
|
|
||||||
_080839CA:
|
|
||||||
add sp, 0x10
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end CreateMonSprite_PicBox
|
|
||||||
|
|
||||||
thumb_func_start CreateMonSprite_FieldMove
|
|
||||||
CreateMonSprite_FieldMove: @ 80839D4
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r10
|
|
||||||
mov r5, r9
|
|
||||||
mov r4, r8
|
|
||||||
push {r4-r6}
|
|
||||||
sub sp, 0x10
|
|
||||||
adds r6, r0, 0
|
|
||||||
mov r9, r1
|
|
||||||
mov r10, r2
|
|
||||||
adds r4, r3, 0
|
|
||||||
ldr r5, [sp, 0x2C]
|
|
||||||
lsls r6, 16
|
|
||||||
lsrs r6, 16
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl GetMonSpritePalStructFromOtIdPersonality
|
|
||||||
mov r8, r0
|
|
||||||
lsls r4, 16
|
|
||||||
asrs r4, 16
|
|
||||||
str r4, [sp]
|
|
||||||
lsls r5, 16
|
|
||||||
asrs r5, 16
|
|
||||||
str r5, [sp, 0x4]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
mov r1, r8
|
|
||||||
ldrh r0, [r1, 0x4]
|
|
||||||
str r0, [sp, 0xC]
|
|
||||||
adds r0, r6, 0
|
|
||||||
mov r1, r9
|
|
||||||
mov r2, r10
|
|
||||||
movs r3, 0x1
|
|
||||||
bl CreateMonPicSprite_HandleDeoxys
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
mov r1, r8
|
|
||||||
ldrh r0, [r1, 0x4]
|
|
||||||
bl IndexOfSpritePaletteTag
|
|
||||||
adds r0, 0x10
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl sub_807B084
|
|
||||||
ldr r0, _08083A44 @ =0x0000ffff
|
|
||||||
cmp r4, r0
|
|
||||||
beq _08083A48
|
|
||||||
lsls r0, r4, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
b _08083A4A
|
|
||||||
.align 2, 0
|
|
||||||
_08083A44: .4byte 0x0000ffff
|
|
||||||
_08083A48:
|
|
||||||
movs r0, 0x40
|
|
||||||
_08083A4A:
|
|
||||||
add sp, 0x10
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end CreateMonSprite_FieldMove
|
|
||||||
|
|
||||||
thumb_func_start FreeResourcesAndDestroySprite
|
|
||||||
FreeResourcesAndDestroySprite: @ 8083A5C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r5, r1, 24
|
|
||||||
bl ResetPreservedPalettesInWeather
|
|
||||||
ldrb r0, [r4, 0x1]
|
|
||||||
lsls r0, 30
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08083A7A
|
|
||||||
ldrb r0, [r4, 0x3]
|
|
||||||
lsls r0, 26
|
|
||||||
lsrs r0, 27
|
|
||||||
bl FreeOamMatrix
|
|
||||||
_08083A7A:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl FreeAndDestroyMonPicSprite
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end FreeResourcesAndDestroySprite
|
|
||||||
|
|
||||||
thumb_func_start MultiplyInvertedPaletteRGBComponents
|
|
||||||
MultiplyInvertedPaletteRGBComponents: @ 8083A88
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
lsls r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
ldr r4, _08083B0C @ =gPlttBufferUnfaded
|
|
||||||
lsrs r0, 15
|
|
||||||
adds r4, r0, r4
|
|
||||||
ldrh r4, [r4]
|
|
||||||
movs r5, 0x1F
|
|
||||||
mov r9, r5
|
|
||||||
mov r8, r4
|
|
||||||
mov r6, r8
|
|
||||||
ands r6, r5
|
|
||||||
mov r8, r6
|
|
||||||
movs r6, 0xF8
|
|
||||||
lsls r6, 2
|
|
||||||
ands r6, r4
|
|
||||||
lsrs r6, 5
|
|
||||||
movs r5, 0xF8
|
|
||||||
lsls r5, 7
|
|
||||||
ands r4, r5
|
|
||||||
lsrs r4, 10
|
|
||||||
mov r7, r9
|
|
||||||
mov r5, r8
|
|
||||||
subs r7, r5
|
|
||||||
mov r12, r7
|
|
||||||
mov r7, r12
|
|
||||||
muls r7, r1
|
|
||||||
adds r1, r7, 0
|
|
||||||
asrs r1, 4
|
|
||||||
add r8, r1
|
|
||||||
mov r5, r9
|
|
||||||
subs r1, r5, r6
|
|
||||||
muls r1, r2
|
|
||||||
asrs r1, 4
|
|
||||||
adds r6, r1
|
|
||||||
subs r5, r4
|
|
||||||
mov r9, r5
|
|
||||||
mov r1, r9
|
|
||||||
muls r1, r3
|
|
||||||
asrs r1, 4
|
|
||||||
adds r4, r1
|
|
||||||
mov r7, r8
|
|
||||||
lsls r7, 16
|
|
||||||
lsls r6, 21
|
|
||||||
orrs r6, r7
|
|
||||||
lsls r4, 26
|
|
||||||
orrs r4, r6
|
|
||||||
lsrs r4, 16
|
|
||||||
ldr r1, _08083B10 @ =gPlttBufferFaded
|
|
||||||
adds r0, r1
|
|
||||||
strh r4, [r0]
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08083B0C: .4byte gPlttBufferUnfaded
|
|
||||||
_08083B10: .4byte gPlttBufferFaded
|
|
||||||
thumb_func_end MultiplyInvertedPaletteRGBComponents
|
|
||||||
|
|
||||||
thumb_func_start MultiplyPaletteRGBComponents
|
|
||||||
MultiplyPaletteRGBComponents: @ 8083B14
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r8
|
|
||||||
push {r6}
|
|
||||||
lsls r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
ldr r4, _08083B84 @ =gPlttBufferUnfaded
|
|
||||||
lsrs r0, 15
|
|
||||||
adds r4, r0, r4
|
|
||||||
ldrh r4, [r4]
|
|
||||||
movs r5, 0x1F
|
|
||||||
mov r8, r5
|
|
||||||
mov r6, r8
|
|
||||||
ands r6, r4
|
|
||||||
mov r8, r6
|
|
||||||
movs r5, 0xF8
|
|
||||||
lsls r5, 2
|
|
||||||
ands r5, r4
|
|
||||||
lsrs r5, 5
|
|
||||||
movs r6, 0xF8
|
|
||||||
lsls r6, 7
|
|
||||||
ands r4, r6
|
|
||||||
lsrs r4, 10
|
|
||||||
mov r6, r8
|
|
||||||
muls r6, r1
|
|
||||||
adds r1, r6, 0
|
|
||||||
asrs r1, 4
|
|
||||||
mov r6, r8
|
|
||||||
subs r6, r1
|
|
||||||
adds r1, r5, 0
|
|
||||||
muls r1, r2
|
|
||||||
asrs r1, 4
|
|
||||||
subs r5, r1
|
|
||||||
adds r1, r4, 0
|
|
||||||
muls r1, r3
|
|
||||||
asrs r1, 4
|
|
||||||
subs r4, r1
|
|
||||||
lsls r6, 16
|
|
||||||
lsls r5, 21
|
|
||||||
orrs r5, r6
|
|
||||||
lsls r4, 26
|
|
||||||
orrs r4, r5
|
|
||||||
lsrs r4, 16
|
|
||||||
ldr r1, _08083B88 @ =gPlttBufferFaded
|
|
||||||
adds r0, r1
|
|
||||||
strh r4, [r0]
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08083B84: .4byte gPlttBufferUnfaded
|
|
||||||
_08083B88: .4byte gPlttBufferFaded
|
|
||||||
thumb_func_end MultiplyPaletteRGBComponents
|
|
||||||
|
|
||||||
thumb_func_start FldEff_PokecenterHeal
|
thumb_func_start FldEff_PokecenterHeal
|
||||||
FldEff_PokecenterHeal: @ 8083B8C
|
FldEff_PokecenterHeal: @ 8083B8C
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
|
|||||||
+3
-3
@@ -2698,8 +2698,8 @@ _0807B07C: .4byte gUnknown_2037F34
|
|||||||
_0807B080: .4byte 0x000006c6
|
_0807B080: .4byte 0x000006c6
|
||||||
thumb_func_end sub_807B070
|
thumb_func_end sub_807B070
|
||||||
|
|
||||||
thumb_func_start sub_807B084
|
thumb_func_start PreservePaletteInWeather
|
||||||
sub_807B084: @ 807B084
|
PreservePaletteInWeather: @ 807B084
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
lsls r4, 24
|
lsls r4, 24
|
||||||
@@ -2721,7 +2721,7 @@ sub_807B084: @ 807B084
|
|||||||
_0807B0A8: .4byte gUnknown_83C2CC0
|
_0807B0A8: .4byte gUnknown_83C2CC0
|
||||||
_0807B0AC: .4byte gUnknown_2038684
|
_0807B0AC: .4byte gUnknown_2038684
|
||||||
_0807B0B0: .4byte gUnknown_20386A4
|
_0807B0B0: .4byte gUnknown_20386A4
|
||||||
thumb_func_end sub_807B084
|
thumb_func_end PreservePaletteInWeather
|
||||||
|
|
||||||
thumb_func_start ResetPreservedPalettesInWeather
|
thumb_func_start ResetPreservedPalettesInWeather
|
||||||
ResetPreservedPalettesInWeather: @ 807B0B4
|
ResetPreservedPalettesInWeather: @ 807B0B4
|
||||||
|
|||||||
@@ -6,85 +6,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
gUnknown_83CA770:: @ 3CA770 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CA770.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CAF70:: @ 83CAF70 gbapal
|
|
||||||
.incbin "graphics/field_effects/unk_83CAF70.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83CAF90:: @ 83CAF90 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CAF90.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CAFB0:: @ 83CAFB0 gbapal
|
|
||||||
.incbin "graphics/field_effects/unk_83CAFB0.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83CAFD0:: @ 83CAFD0 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CAFD0.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CB3D0:: @ 83CB3D0 gbapal
|
|
||||||
.incbin "graphics/field_effects/unk_83CB3D0.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83CB3F0:: @ 83CB3F0 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CB3F0.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CB5F0:: @ 83CB5F0 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CB5F0.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CB7F0:: @ 83CB7F0 gbapal gUnknown_83CB5F0
|
|
||||||
.incbin "graphics/field_effects/unk_83CB7F0.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83CB810:: @ 83CB810 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CB810.bin"
|
|
||||||
|
|
||||||
gUnknown_83CBA90:: @ 83CBA90 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CBA90.4bpp"
|
|
||||||
|
|
||||||
gUnknown_83CBB10:: @ 83CBB10 gbapal gUnknown_83CBA90
|
|
||||||
.incbin "graphics/field_effects/unk_83CBB10.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83CBB30:: @ 83CBB30 4bpp
|
|
||||||
.incbin "graphics/field_effects/unk_83CBB30.bin"
|
|
||||||
|
|
||||||
gUnknown_83CBDB0::
|
|
||||||
.incbin "graphics/field_effects/unk_83CBDB0.4bpp"
|
|
||||||
|
|
||||||
.align 2
|
|
||||||
sFldEffScrcmdTable:: @ 83CBE30 dataptr
|
|
||||||
.4byte FieldEffectCmd_loadtiles
|
|
||||||
.4byte FieldEffectCmd_loadfadedpal
|
|
||||||
.4byte FieldEffectCmd_loadpal
|
|
||||||
.4byte FieldEffectCmd_callnative
|
|
||||||
.4byte FieldEffectCmd_end
|
|
||||||
.4byte FieldEffectCmd_loadgfx_callnative
|
|
||||||
.4byte FieldEffectCmd_loadtiles_callnative
|
|
||||||
.4byte FieldEffectCmd_loadfadedpal_callnative
|
|
||||||
|
|
||||||
gNewGameBirchOamAttributes:: @ 83CBE50 oamdata
|
|
||||||
.4byte 0xc0000000, 0x00000000
|
|
||||||
|
|
||||||
gOamData_83CBE58:: @ 83CBE58 oamdata
|
|
||||||
.4byte 0x00000000, 0x00000000
|
|
||||||
|
|
||||||
gOamData_83CBE60:: @ 83CBE60 oamdata
|
|
||||||
.4byte 0x40000000, 0x00000000
|
|
||||||
|
|
||||||
gUnknown_83CBE68:: @ 83CBE68 sprite_frames
|
|
||||||
obj_frame_tiles gUnknown_83CA770, 0x0800
|
|
||||||
|
|
||||||
gNewGameBirchObjectPaletteInfo:: @ 83CBE70 sprite_palette
|
|
||||||
obj_pal gUnknown_83CAF70, 4102
|
|
||||||
|
|
||||||
gUnknown_83CBE78:: @ 83CBE78
|
|
||||||
obj_image_anim_frame 0x0000, 1
|
|
||||||
obj_image_anim_end
|
|
||||||
|
|
||||||
.align 2
|
|
||||||
gUnknown_83CBE80:: @ 83CBE80 dataptr
|
|
||||||
.4byte gUnknown_83CBE78
|
|
||||||
|
|
||||||
gNewGameBirchObjectTemplate:: @ 83CBE84 spr_template
|
|
||||||
spr_template 65535, 4102, gNewGameBirchOamAttributes, gUnknown_83CBE80, gUnknown_83CBE68, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
|
||||||
|
|
||||||
gUnknown_83CBE9C:: @ 83CBE9C sprite_palette
|
gUnknown_83CBE9C:: @ 83CBE9C sprite_palette
|
||||||
obj_pal gUnknown_83CAFB0, 4103
|
obj_pal gUnknown_83CAFB0, 4103
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ extern const struct MonCoords gMonFrontPicCoords[];
|
|||||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||||
extern const struct MonCoords gMonBackPicCoords[];
|
extern const struct MonCoords gMonBackPicCoords[];
|
||||||
extern const struct CompressedSpriteSheet gMonBackPicTable[];
|
extern const struct CompressedSpriteSheet gMonBackPicTable[];
|
||||||
extern const struct CompressedSpritePalette gMonPaletteTable[];
|
extern struct CompressedSpritePalette gMonPaletteTable[];
|
||||||
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
|
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
|
||||||
extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
|
extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
|
||||||
extern const struct MonCoords gTrainerFrontPicCoords[];
|
extern const struct MonCoords gTrainerFrontPicCoords[];
|
||||||
|
|||||||
@@ -19,5 +19,7 @@ void sub_807B070(void);
|
|||||||
u8 GetCurrentWeather(void);
|
u8 GetCurrentWeather(void);
|
||||||
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
||||||
void sub_807AA8C(u8 palIdx);
|
void sub_807AA8C(u8 palIdx);
|
||||||
|
void ResetPreservedPalettesInWeather(void);
|
||||||
|
void PreservePaletteInWeather(u8 palIdx);
|
||||||
|
|
||||||
#endif // GUARD_WEATHER_H
|
#endif // GUARD_WEATHER_H
|
||||||
|
|||||||
@@ -445,6 +445,7 @@ SECTIONS {
|
|||||||
data/cable_club.o(.rodata);
|
data/cable_club.o(.rodata);
|
||||||
src/trainer_see.o(.rodata);
|
src/trainer_see.o(.rodata);
|
||||||
src/wild_encounter.o(.rodata);
|
src/wild_encounter.o(.rodata);
|
||||||
|
src/field_effect.o(.rodata);
|
||||||
data/field_effect.o(.rodata);
|
data/field_effect.o(.rodata);
|
||||||
src/option_menu.o(.rodata);
|
src/option_menu.o(.rodata);
|
||||||
src/trainer_card.o(.rodata);
|
src/trainer_card.o(.rodata);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const struct CompressedSpritePalette gMonPaletteTable[] =
|
// A dirty hack because field_effect.c requires this not be const
|
||||||
|
__attribute__((section(".rodata"))) struct CompressedSpritePalette gMonPaletteTable[] =
|
||||||
{
|
{
|
||||||
SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
|
SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
|
||||||
SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
|
SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
|
||||||
|
|||||||
+211
-1
@@ -1,16 +1,27 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "gflib.h"
|
#include "gflib.h"
|
||||||
|
#include "data.h"
|
||||||
|
#include "decompress.h"
|
||||||
#include "field_effect.h"
|
#include "field_effect.h"
|
||||||
#include "field_effect_scripts.h"
|
#include "field_effect_scripts.h"
|
||||||
#include "field_weather.h"
|
#include "field_weather.h"
|
||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
#include "quest_log.h"
|
#include "quest_log.h"
|
||||||
|
#include "trainer_pokemon_sprites.h"
|
||||||
|
|
||||||
#define FIELD_EFFECT_COUNT 32
|
#define FIELD_EFFECT_COUNT 32
|
||||||
|
|
||||||
static u8 sFieldEffectActiveList[FIELD_EFFECT_COUNT];
|
static u8 sFieldEffectActiveList[FIELD_EFFECT_COUNT];
|
||||||
|
|
||||||
void FieldEffectActiveListAdd(u8 fldeff);
|
void FieldEffectActiveListAdd(u8 fldeff);
|
||||||
|
bool8 FieldEffectCmd_loadtiles(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_loadfadedpal(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_loadpal(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_callnative(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_end(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_loadgfx_callnative(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_loadtiles_callnative(const u8 **script, u32 *result);
|
||||||
|
bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *result);
|
||||||
void FieldEffectScript_LoadTiles(const u8 **script);
|
void FieldEffectScript_LoadTiles(const u8 **script);
|
||||||
void FieldEffectScript_LoadFadedPal(const u8 **script);
|
void FieldEffectScript_LoadFadedPal(const u8 **script);
|
||||||
void FieldEffectScript_LoadPal(const u8 **script);
|
void FieldEffectScript_LoadPal(const u8 **script);
|
||||||
@@ -18,7 +29,106 @@ void FieldEffectScript_CallNative(const u8 **script, u32 *result);
|
|||||||
void FieldEffectFreeTilesIfUnused(u16 tilesTag);
|
void FieldEffectFreeTilesIfUnused(u16 tilesTag);
|
||||||
void FieldEffectFreePaletteIfUnused(u8 paletteNum);
|
void FieldEffectFreePaletteIfUnused(u8 paletteNum);
|
||||||
|
|
||||||
extern bool8 (*const sFldEffScrcmdTable[])(const u8 **script, u32 *result);
|
const u16 sNewGameOakObjectSpriteTiles[] = INCBIN_U16("graphics/field_effects/unk_83CA770.4bpp");
|
||||||
|
const u16 sNewGameOakObjectPals[] = INCBIN_U16("graphics/field_effects/unk_83CAF70.gbapal");
|
||||||
|
const u16 gUnknown_83CAF90[] = INCBIN_U16("graphics/field_effects/unk_83CAF90.4bpp");
|
||||||
|
const u16 gUnknown_83CAFB0[] = INCBIN_U16("graphics/field_effects/unk_83CAFB0.gbapal");
|
||||||
|
const u16 gUnknown_83CAFD0[] = INCBIN_U16("graphics/field_effects/unk_83CAFD0.4bpp");
|
||||||
|
const u16 gUnknown_83CB3D0[] = INCBIN_U16("graphics/field_effects/unk_83CB3D0.gbapal");
|
||||||
|
const u16 gUnknown_83CB3F0[] = INCBIN_U16("graphics/field_effects/unk_83CB3F0.4bpp");
|
||||||
|
const u16 gUnknown_83CB5F0[] = INCBIN_U16("graphics/field_effects/unk_83CB5F0.4bpp");
|
||||||
|
const u16 gUnknown_83CB7F0[] = INCBIN_U16("graphics/field_effects/unk_83CB7F0.gbapal");
|
||||||
|
const u16 gUnknown_83CB810[] = INCBIN_U16("graphics/field_effects/unk_83CB810.bin");
|
||||||
|
const u16 gUnknown_83CBA90[] = INCBIN_U16("graphics/field_effects/unk_83CBA90.4bpp");
|
||||||
|
const u16 gUnknown_83CBB10[] = INCBIN_U16("graphics/field_effects/unk_83CBB10.gbapal");
|
||||||
|
const u16 gUnknown_83CBB30[] = INCBIN_U16("graphics/field_effects/unk_83CBB30.bin");
|
||||||
|
const u16 gUnknown_83CBDB0[] = INCBIN_U16("graphics/field_effects/unk_83CBDB0.4bpp");
|
||||||
|
|
||||||
|
bool8 (*const sFldEffScrcmdTable[])(const u8 **script, u32 *result) = {
|
||||||
|
FieldEffectCmd_loadtiles,
|
||||||
|
FieldEffectCmd_loadfadedpal,
|
||||||
|
FieldEffectCmd_loadpal,
|
||||||
|
FieldEffectCmd_callnative,
|
||||||
|
FieldEffectCmd_end,
|
||||||
|
FieldEffectCmd_loadgfx_callnative,
|
||||||
|
FieldEffectCmd_loadtiles_callnative,
|
||||||
|
FieldEffectCmd_loadfadedpal_callnative
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct OamData gNewGameOakOamAttributes = {
|
||||||
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(64x64),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(64x64),
|
||||||
|
.tileNum = 0x000,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0x0,
|
||||||
|
.affineParam = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct OamData gOamData_83CBE58 = {
|
||||||
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(8x8),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(8x8),
|
||||||
|
.tileNum = 0x000,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0x0,
|
||||||
|
.affineParam = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct OamData gOamData_83CBE60 = {
|
||||||
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(16x16),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(16x16),
|
||||||
|
.tileNum = 0x000,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0x0,
|
||||||
|
.affineParam = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteFrameImage gNewGameOakObjectSpriteFrames[] = {
|
||||||
|
{sNewGameOakObjectSpriteTiles, 0x800}
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpritePalette gNewGameOakObjectPaletteInfo = {
|
||||||
|
sNewGameOakObjectPals, 4102
|
||||||
|
};
|
||||||
|
|
||||||
|
const union AnimCmd gNewGameOakAnim[] = {
|
||||||
|
ANIMCMD_FRAME(0, 1),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
const union AnimCmd *const gNewGameOakAnimTable[] = {
|
||||||
|
gNewGameOakAnim
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gNewGameOakObjectTemplate = {
|
||||||
|
.tileTag = 0xFFFF,
|
||||||
|
.paletteTag = 4102,
|
||||||
|
.oam = &gNewGameOakOamAttributes,
|
||||||
|
.anims = gNewGameOakAnimTable,
|
||||||
|
.images = gNewGameOakObjectSpriteFrames,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = SpriteCallbackDummy
|
||||||
|
};
|
||||||
|
|
||||||
u32 FieldEffectStart(u8 fldeff)
|
u32 FieldEffectStart(u8 fldeff)
|
||||||
{
|
{
|
||||||
@@ -241,3 +351,103 @@ bool8 FieldEffectActiveListContains(u8 fldeff)
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer)
|
||||||
|
{
|
||||||
|
struct SpriteTemplate spriteTemplate;
|
||||||
|
LoadCompressedSpritePaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer);
|
||||||
|
LoadCompressedSpriteSheetOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer);
|
||||||
|
spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag;
|
||||||
|
spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag;
|
||||||
|
spriteTemplate.oam = &gNewGameOakOamAttributes;
|
||||||
|
spriteTemplate.anims = gDummySpriteAnimTable;
|
||||||
|
spriteTemplate.images = NULL;
|
||||||
|
spriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||||
|
spriteTemplate.callback = SpriteCallbackDummy;
|
||||||
|
return CreateSprite(&spriteTemplate, x, y, subpriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest)
|
||||||
|
{
|
||||||
|
LZDecompressVram(gTrainerFrontPicTable[gender].data, dest);
|
||||||
|
LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, 0x20);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
|
||||||
|
{
|
||||||
|
LoadSpritePalette(&gNewGameOakObjectPaletteInfo);
|
||||||
|
return CreateSprite(&gNewGameOakObjectTemplate, x, y, subpriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
|
||||||
|
{
|
||||||
|
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, TRUE, x, y, 0, gMonPaletteTable[species].tag);
|
||||||
|
PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10);
|
||||||
|
if (spriteId == 0xFFFF)
|
||||||
|
return MAX_SPRITES;
|
||||||
|
else
|
||||||
|
return spriteId;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
|
||||||
|
{
|
||||||
|
const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g);
|
||||||
|
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, d, g, 1, x, y, 0, spritePalette->tag);
|
||||||
|
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
|
||||||
|
if (spriteId == 0xFFFF)
|
||||||
|
return MAX_SPRITES;
|
||||||
|
else
|
||||||
|
return spriteId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId)
|
||||||
|
{
|
||||||
|
ResetPreservedPalettesInWeather();
|
||||||
|
if (sprite->oam.affineMode != ST_OAM_AFFINE_OFF)
|
||||||
|
{
|
||||||
|
FreeOamMatrix(sprite->oam.matrixNum);
|
||||||
|
}
|
||||||
|
FreeAndDestroyMonPicSprite(spriteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// r, g, b are between 0 and 16
|
||||||
|
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
|
||||||
|
{
|
||||||
|
int curRed;
|
||||||
|
int curGreen;
|
||||||
|
int curBlue;
|
||||||
|
u16 outPal;
|
||||||
|
|
||||||
|
outPal = gPlttBufferUnfaded[i];
|
||||||
|
curRed = outPal & 0x1f;
|
||||||
|
curGreen = (outPal & (0x1f << 5)) >> 5;
|
||||||
|
curBlue = (outPal & (0x1f << 10)) >> 10;
|
||||||
|
curRed += (((0x1f - curRed) * r) >> 4);
|
||||||
|
curGreen += (((0x1f - curGreen) * g) >> 4);
|
||||||
|
curBlue += (((0x1f - curBlue) * b) >> 4);
|
||||||
|
outPal = curRed;
|
||||||
|
outPal |= curGreen << 5;
|
||||||
|
outPal |= curBlue << 10;
|
||||||
|
gPlttBufferFaded[i] = outPal;
|
||||||
|
}
|
||||||
|
|
||||||
|
// r, g, b are between 0 and 16
|
||||||
|
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
|
||||||
|
{
|
||||||
|
int curRed;
|
||||||
|
int curGreen;
|
||||||
|
int curBlue;
|
||||||
|
u16 outPal;
|
||||||
|
|
||||||
|
outPal = gPlttBufferUnfaded[i];
|
||||||
|
curRed = outPal & 0x1f;
|
||||||
|
curGreen = (outPal & (0x1f << 5)) >> 5;
|
||||||
|
curBlue = (outPal & (0x1f << 10)) >> 10;
|
||||||
|
curRed -= ((curRed * r) >> 4);
|
||||||
|
curGreen -= ((curGreen * g) >> 4);
|
||||||
|
curBlue -= ((curBlue * b) >> 4);
|
||||||
|
outPal = curRed;
|
||||||
|
outPal |= curGreen << 5;
|
||||||
|
outPal |= curBlue << 10;
|
||||||
|
gPlttBufferFaded[i] = outPal;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user