Random things by a frog (mostly mugs, some music, and a smidgen of C)

Everything I make is always F2U & F2E, whether it’s included here or not.

Portraits

I used Blade’s skin & hair colours and Lenh & Obsidian Daddy’s blinking FE6 frames for pretty much everything here.

OCs

Splices I made for (mostly dead) hacks.
Fey6RedFighterThiefAfdana5Harley5Lord Morbius5Moriel

WIP
AKA mugs missing minis/frames/polishing.
Mordred5

CCC

Splices based on FE characters made for the CCC. The earlier ones were my first splices ever.
S5FinalNoPalU5FinalMiniJ6Red1SaneA11Red4ErikErikAltRutger (Priest) {Frog}Allance

Non-splices/older stuff

Mostly older CCC entries. Didn’t include the oldest/worst stuff.
LachesisLarceiArran

Misc Graphics

AKA this Avalon Code-style status screen.
ACSS2Red3

Music

Everything here was modified from midis ripped from other games using VGMTrans/FEBuilder. I know nothing about music theory.

All .s files are available here!

The older ones (aka the Apollo Justice tracks) were made for FEBuilder’s version of NIMAP2 and might not work properly with buildfiles from my testing (and I’m too lazy to fix it now).

Ace Attorney Investigations: Miles Edgeworth - ‘‘Turnabout Airlines’’ (intro)

Ace Attorney Investigations: Miles Edgeworth - Yatagarasu ~ The Gentleman Thief Who Dances in the Black Night

Ace Attorney Investigations: Miles Edgeworth - Logic ~ The Way to the Truth

Ace Attorney Investigations: Miles Edgeworth - Crisis of Fate

Apollo Justice: Ace Attorney - Detention Center ~ Tragicomical Meeting

Apollo Justice: Ace Attorney - Confess the Truth 2007

FE7 - What Comes from Darkness

C

Most of the stuff I’ve written was extremely specific to one hack (AVALON X EMBLEM) and wouldn’t work properly/make sense outside of it, so this section is a bit empty right now.

Expand CG text box

Turns this:
OhNo
Into this:
NowItWorks
Could probably be done by changing like 1 byte in assembly, but I’m lazy and C is easier

.c
void sub_800E290(struct EventEngineProc * proc, u16 stringIndex, u32 flags)
{
    flags |= 0x0400;

    if (proc->evStateBits & EV_STATE_0020)
        flags |= 0x0040;

    if (proc->evStateBits & EV_STATE_0040)
        flags |= 0x2000 | 0x0800 | 0x0020;

    SetWinEnable(FALSE, FALSE, FALSE);

    LoadObjUIGfx();
    InitTalk(0x80, 0, 1);
    BG_EnableSyncByMask(BG0_SYNC_BIT);

    StartCgText(
        0, 0x12, 0x1A, 4, stringIndex, OBJ_VRAM0 + 0x1000, -1,
        NULL // parent proc
    );

    SetCgTextFlags(flags);
}
.lyn.event
PUSH
ORG $e290
ALIGN 4
WORD $46C04778 $E59FC000 $E12FFF1C
POIN sub_800E290
POP
ALIGN 4
PUSH
ORG CURRENTOFFSET+$1;sub_800E290:
POP
WORD $8F83B530 $14000D $69AB085 $2280D42E $431400D2 $D501065B $431C4B16 $4A16231F $400B7851 $4B157053 $F834F000 $21002201 $4B132080 $F82EF000 $4B122001 $F82AF000 $93032300 $93023B01 $221A4B0F $93012112 $23049500 $4D0D2000 $F81DF000 $4B0C0020 $F818F000 $BC30B005 $4700BC01 $D22288 $E7CF4314 $2820 $3003080 $8015681 $800680D $8001FAD $6011000 $808F129 $808E9D9 $47284718
Check if unit has item with durability ASMC

Title. Pretty useless for most hacks, but can be useful alongside durability-based items. Also includes a version which doesn’t check durability for convenience.

.c
void HasItem(void)
{
	struct Unit* unit = GetUnitFromCharId(gEventSlots[1] & 0xFF);
	int item = gEventSlots[2] & 0xFF;
	int i = 0;
    int result = 0;
    for (i = 0; i < 5; i++)
    {
        if ((unit->items[i] & 0xFF) == item)
        {
            result = 1;
            break;
        }
    }
    gEventSlots[0xC] = result; 
}

void HasItemWithDurability(void)
{
	struct Unit* unit = GetUnitFromCharId(gEventSlots[1] & 0xFF);
	int item = gEventSlots[2] & 0xFFFF;
	int i = 0;
    int result = 0;
    for (i = 0; i < 5; i++)
    {
        if ((unit->items[i] & 0xFFFF) == item)
        {
            result = 1;
            break;
        }
    }
    gEventSlots[0xC] = result; 
}
.lyn.event
ALIGN 4
PUSH
ORG CURRENTOFFSET+$1;HasItem:
ORG CURRENTOFFSET+$3c;HasItemWithDurability:
POP
WORD $4C0CB570 $79204B0C $F834F000 $21FF0003 $331E7A25 $881A3028 $42AA400A $3302D007 $D1F84283 $63232300 $BC01BC70 $23014700 $46C0E7F9 $30004B8 $801829D $4C0BB510 $79204B0B $F816F000 $89210003 $3028331E $428A881A $3302D007 $D1F94283 $63232300 $BC01BC10 $23014700 $46C0E7F9 $30004B8 $801829D $46C04718
Defines
#define HasItemCheck(Unit, Item) "SVAL 1 Unit; SVAL 2 Item; ASMC HasItem"
#define HasItemWithDurabilityCheck(Unit, Item) "SVAL 1 Unit; SVAL 2 Item; ASMC HasItemWithDurability"
13 Likes