through MultiplyPaletteRGBComponents
This commit is contained in:
@@ -5,419 +5,6 @@
|
||||
|
||||
.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
|
||||
FldEff_PokecenterHeal: @ 8083B8C
|
||||
push {r4,lr}
|
||||
|
||||
+3
-3
@@ -2698,8 +2698,8 @@ _0807B07C: .4byte gUnknown_2037F34
|
||||
_0807B080: .4byte 0x000006c6
|
||||
thumb_func_end sub_807B070
|
||||
|
||||
thumb_func_start sub_807B084
|
||||
sub_807B084: @ 807B084
|
||||
thumb_func_start PreservePaletteInWeather
|
||||
PreservePaletteInWeather: @ 807B084
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
@@ -2721,7 +2721,7 @@ sub_807B084: @ 807B084
|
||||
_0807B0A8: .4byte gUnknown_83C2CC0
|
||||
_0807B0AC: .4byte gUnknown_2038684
|
||||
_0807B0B0: .4byte gUnknown_20386A4
|
||||
thumb_func_end sub_807B084
|
||||
thumb_func_end PreservePaletteInWeather
|
||||
|
||||
thumb_func_start ResetPreservedPalettesInWeather
|
||||
ResetPreservedPalettesInWeather: @ 807B0B4
|
||||
|
||||
@@ -6,85 +6,6 @@
|
||||
.section .rodata
|
||||
.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
|
||||
obj_pal gUnknown_83CAFB0, 4103
|
||||
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ extern const struct MonCoords gMonFrontPicCoords[];
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const struct MonCoords gMonBackPicCoords[];
|
||||
extern const struct CompressedSpriteSheet gMonBackPicTable[];
|
||||
extern const struct CompressedSpritePalette gMonPaletteTable[];
|
||||
extern struct CompressedSpritePalette gMonPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
|
||||
extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
|
||||
extern const struct MonCoords gTrainerFrontPicCoords[];
|
||||
|
||||
@@ -19,5 +19,7 @@ void sub_807B070(void);
|
||||
u8 GetCurrentWeather(void);
|
||||
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
||||
void sub_807AA8C(u8 palIdx);
|
||||
void ResetPreservedPalettesInWeather(void);
|
||||
void PreservePaletteInWeather(u8 palIdx);
|
||||
|
||||
#endif // GUARD_WEATHER_H
|
||||
|
||||
@@ -445,6 +445,7 @@ SECTIONS {
|
||||
data/cable_club.o(.rodata);
|
||||
src/trainer_see.o(.rodata);
|
||||
src/wild_encounter.o(.rodata);
|
||||
src/field_effect.o(.rodata);
|
||||
data/field_effect.o(.rodata);
|
||||
src/option_menu.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(BULBASAUR, gMonPalette_Bulbasaur),
|
||||
|
||||
+211
-1
@@ -1,16 +1,27 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "data.h"
|
||||
#include "decompress.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_effect_scripts.h"
|
||||
#include "field_weather.h"
|
||||
#include "overworld.h"
|
||||
#include "quest_log.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
|
||||
#define FIELD_EFFECT_COUNT 32
|
||||
|
||||
static u8 sFieldEffectActiveList[FIELD_EFFECT_COUNT];
|
||||
|
||||
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_LoadFadedPal(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 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)
|
||||
{
|
||||
@@ -241,3 +351,103 @@ bool8 FieldEffectActiveListContains(u8 fldeff)
|
||||
}
|
||||
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