diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-11-18 23:35:08 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-11-18 23:35:08 -0800 |
commit | 9baa39f7082acfb1eb8b75603e440773504ad206 (patch) | |
tree | 915969d2d568693645c1f7a421b7c2334d6900c3 | |
parent | 4a365e9230962daf875a0444d51d76639c07c827 (diff) |
decompile fldeff_recordmixing
-rwxr-xr-x | asm/fldeff_recordmixing.s | 94 | ||||
-rwxr-xr-x | data/fldeff_recordmixing.s | 45 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/field/fldeff_recordmixing.c | 82 |
4 files changed, 84 insertions, 141 deletions
diff --git a/asm/fldeff_recordmixing.s b/asm/fldeff_recordmixing.s deleted file mode 100755 index 8c79cdef8..000000000 --- a/asm/fldeff_recordmixing.s +++ /dev/null @@ -1,94 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start CreateRecordMixingSprite -CreateRecordMixingSprite: @ 80C71D8 - push {r4,r5,lr} - ldr r0, _080C722C @ =gUnknown_083D2878 - bl LoadSpritePalette - ldr r0, _080C7230 @ =gSpriteTemplate_83D2894 - movs r1, 0 - movs r2, 0 - movs r3, 0x52 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _080C7238 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _080C7234 @ =gSprites - adds r4, r0, r1 - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r0, 0x10 - movs r1, 0xD - bl sub_8060388 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x20] - adds r0, 0x10 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x22] - adds r0, 0x2 - strh r0, [r4, 0x22] - adds r0, r5, 0 - b _080C723A - .align 2, 0 -_080C722C: .4byte gUnknown_083D2878 -_080C7230: .4byte gSpriteTemplate_83D2894 -_080C7234: .4byte gSprites -_080C7238: - movs r0, 0x40 -_080C723A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CreateRecordMixingSprite - - thumb_func_start DestroyRecordMixingSprite -DestroyRecordMixingSprite: @ 80C7240 - push {r4-r7,lr} - ldr r4, _080C7274 @ =gSprites - adds r7, r4, 0 - movs r6, 0 - movs r5, 0x3F -_080C724A: - adds r0, r7, 0 - adds r0, 0x14 - adds r0, r6, r0 - ldr r1, [r0] - ldr r0, _080C7278 @ =gSpriteTemplate_83D2894 - cmp r1, r0 - bne _080C7264 - adds r0, r4, 0 - bl FreeSpritePalette - adds r0, r4, 0 - bl DestroySprite -_080C7264: - adds r4, 0x44 - adds r6, 0x44 - subs r5, 0x1 - cmp r5, 0 - bge _080C724A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C7274: .4byte gSprites -_080C7278: .4byte gSpriteTemplate_83D2894 - thumb_func_end DestroyRecordMixingSprite - - .align 2, 0 @ Don't pad with nop. diff --git a/data/fldeff_recordmixing.s b/data/fldeff_recordmixing.s deleted file mode 100755 index ee9d6b8d6..000000000 --- a/data/fldeff_recordmixing.s +++ /dev/null @@ -1,45 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteImage_83D26C0:: @ 83D26C0 - .incbin "graphics/unknown_sprites/83D2860/0.4bpp" - - .align 2 -gSpriteImage_83D2740:: @ 83D2740 - .incbin "graphics/unknown_sprites/83D2860/1.4bpp" - - .align 2 -gSpriteImage_83D27C0:: @ 83D27C0 - .incbin "graphics/unknown_sprites/83D2860/2.4bpp" - - .align 2 -Palette_3D2840:: @ 83D2840 - .incbin "graphics/unknown/unknown_3D2840.gbapal" - - .align 2 -gSpriteImageTable_83D2860:: @ 83D2860 - obj_frame_tiles gSpriteImage_83D26C0, 0x80 - obj_frame_tiles gSpriteImage_83D2740, 0x80 - obj_frame_tiles gSpriteImage_83D27C0, 0x80 - - .align 2 -gUnknown_083D2878:: @ 83D2878 - obj_pal Palette_3D2840, 4096 - - .align 2 -gSpriteAnim_83D2880:: @ 83D2880 - obj_image_anim_frame 0, 30 - obj_image_anim_frame 1, 30 - obj_image_anim_frame 2, 30 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83D2890:: @ 83D2890 - .4byte gSpriteAnim_83D2880 - - .align 2 -gSpriteTemplate_83D2894:: @ 83D2894 - spr_template 0xFFFF, 4096, gFieldOamData_32x8, gSpriteAnimTable_83D2890, gSpriteImageTable_83D2860, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/ld_script.txt b/ld_script.txt index e5c6508ee..100afadf9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -164,7 +164,7 @@ SECTIONS { asm/fldeff_decoration.o(.text); asm/fldeff_poison.o(.text); asm/fldeff_berrytree.o(.text); - asm/fldeff_recordmixing.o(.text); + src/field/fldeff_recordmixing.o(.text); src/field/field_special_scene.o(.text); src/field/rotating_gate.o(.text); src/field/safari_zone.o(.text); @@ -410,7 +410,7 @@ SECTIONS { data/pc_screen_effect.o(.rodata); data/fldeff_secretpower.o(.rodata); data/fldeff_decoration.o(.rodata); - data/fldeff_recordmixing.o(.rodata); + src/field/fldeff_recordmixing.o(.rodata); src/field/field_special_scene.o(.rodata); src/field/rotating_gate.o(.rodata); src/field/item_use.o(.rodata); diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c new file mode 100644 index 000000000..e7a1f20c4 --- /dev/null +++ b/src/field/fldeff_recordmixing.c @@ -0,0 +1,82 @@ +#include "global.h" +#include "field_map_obj.h" +#include "sprite.h" + +extern const struct OamData gFieldOamData_32x8; + +static const u8 sSpriteImage_83D26C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/0.4bpp"); +static const u8 sSpriteImage_83D2740[] = INCBIN_U8("graphics/unknown_sprites/83D2860/1.4bpp"); +static const u8 sSpriteImage_83D27C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/2.4bpp"); +static const u16 sPalette_3D2840[] = INCBIN_U16("graphics/unknown/unknown_3D2840.gbapal"); + + +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + { sSpriteImage_83D26C0, sizeof(sSpriteImage_83D26C0) }, + { sSpriteImage_83D2740, sizeof(sSpriteImage_83D26C0) }, + { sSpriteImage_83D27C0, sizeof(sSpriteImage_83D26C0) }, +}; + +static const struct SpritePalette sUnknown_083D2878 = { sPalette_3D2840, 0x1000 }; + +static const union AnimCmd sSpriteAnim_83D2880[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(2, 30), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sSpriteAnimTable_83D2890[] = +{ + sSpriteAnim_83D2880, +}; + +static const struct SpriteTemplate sSpriteTemplate_83D2894 = +{ + .tileTag = 0xFFFF, + .paletteTag = 0x1000, + .oam = &gFieldOamData_32x8, + .anims = sSpriteAnimTable_83D2890, + .images = sSpriteImageTable_83FD950, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +u8 CreateRecordMixingSprite(void) +{ + u8 spriteId; + + LoadSpritePalette(&sUnknown_083D2878); + + spriteId = CreateSprite(&sSpriteTemplate_83D2894, 0, 0, 82); + + if (spriteId == MAX_SPRITES) + { + return MAX_SPRITES; + } + else + { + struct Sprite *sprite = &gSprites[spriteId]; + sub_8060388(16, 13, &sprite->pos1.x, &sprite->pos1.y); + sprite->coordOffsetEnabled = TRUE; + sprite->pos1.x += 16; + sprite->pos1.y += 2; + } + + return spriteId; +} + +void DestroyRecordMixingSprite(void) +{ + int i; + + for (i = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].template == &sSpriteTemplate_83D2894) + { + FreeSpritePalette(&gSprites[i]); + DestroySprite(&gSprites[i]); + } + } +} |