mirror of https://github.com/zeldaret/tmc.git
				
				
				
			some more documentation
This commit is contained in:
		
							parent
							
								
									61e780fb2a
								
							
						
					
					
						commit
						3297dc905c
					
				| 
						 | 
				
			
			@ -25,7 +25,6 @@ typedef union {
 | 
			
		|||
static_assert(sizeof(Droptable) == 0x20);
 | 
			
		||||
 | 
			
		||||
extern const Droptable gDroptablesEnemies[];
 | 
			
		||||
extern const Droptable gUnk_0800143C[];
 | 
			
		||||
extern const Droptable gDroptablesAreas[];
 | 
			
		||||
extern const Droptable gDroptablesObjects[];
 | 
			
		||||
extern const Droptable gUnk_0800191C[];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -206,14 +206,14 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
 | 
			
		|||
         ITEM_ENEMY_BEETLE, ITEM_NONE,    ITEM_NONE,   ITEM_NONE,           ITEM_NONE,          ITEM_NONE,
 | 
			
		||||
     }*/;
 | 
			
		||||
 | 
			
		||||
    int r0, r1, r2, r4, r5;
 | 
			
		||||
    int r0, r1, rand, summOdds, item;
 | 
			
		||||
    u32 r3;
 | 
			
		||||
    const Droptable *ptr2, *ptr3, *ptr4;
 | 
			
		||||
    Droptable s0;
 | 
			
		||||
    Droptable droptable;
 | 
			
		||||
    r3 = arg1;
 | 
			
		||||
    if (gRoomVars.field_0x2 != 1) {
 | 
			
		||||
        ptr2 = &gDroptablesModifiers[0];
 | 
			
		||||
        ptr4 = 0;
 | 
			
		||||
        ptr2 = &gDroptableModifierNone;
 | 
			
		||||
        ptr4 = NULL;
 | 
			
		||||
        switch (r3) {
 | 
			
		||||
            case 1 ... 12:
 | 
			
		||||
                ptr4 = &gDroptablesEnemies[r3];
 | 
			
		||||
| 
						 | 
				
			
			@ -246,24 +246,24 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
 | 
			
		|||
                ptr3 = &gDroptableModifierNone;
 | 
			
		||||
            } else {
 | 
			
		||||
#ifdef EU
 | 
			
		||||
                ptr3 = &gUnk_0800143C[r1 + 3];
 | 
			
		||||
                ptr3 = &gDroptablesEnemies[r1 + 9];
 | 
			
		||||
#else
 | 
			
		||||
                ptr3 = &gUnk_0800143C[r1];
 | 
			
		||||
                ptr3 = &gDroptablesEnemies[r1+6];
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
            // vector addition, s0 = ptr4 + ptr2 + ptr3
 | 
			
		||||
            sub_08000F14(s0.a, ptr4->a, ptr2->a, ptr3->a);
 | 
			
		||||
            sub_08000F14(droptable.a, ptr4->a, ptr2->a, ptr3->a);
 | 
			
		||||
            if (gSave.stats.health <= 8) {
 | 
			
		||||
                s0.s.hearts += 5;
 | 
			
		||||
                droptable.s.hearts += 5;
 | 
			
		||||
            }
 | 
			
		||||
            if (gSave.stats.bombCount == 0) {
 | 
			
		||||
                s0.s.bombs += 3;
 | 
			
		||||
                droptable.s.bombs += 3;
 | 
			
		||||
            }
 | 
			
		||||
            if (gSave.stats.arrowCount == 0) {
 | 
			
		||||
                s0.s.arrows += 3;
 | 
			
		||||
                droptable.s.arrows += 3;
 | 
			
		||||
            }
 | 
			
		||||
            if (gSave.stats.rupees <= 10) {
 | 
			
		||||
                s0.s.rupee5 += 1;
 | 
			
		||||
                droptable.s.rupee5 += 1;
 | 
			
		||||
            }
 | 
			
		||||
            ptr2 = &gDroptableModifierNone;
 | 
			
		||||
            r0 = gSave.stats.hasAllFigurines;
 | 
			
		||||
| 
						 | 
				
			
			@ -279,20 +279,20 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
 | 
			
		|||
            // vector addition, s0 = s0 + ptr2 + ptr3
 | 
			
		||||
            // resulting values are clamped to be >= 0
 | 
			
		||||
            // returns sum over s0
 | 
			
		||||
            r4 = sub_08000F2C(s0.a, s0.a, ptr2->a, ptr3->a);
 | 
			
		||||
            r2 = Random();
 | 
			
		||||
            r5 = (r2 >> 0x18);
 | 
			
		||||
            r5 &= 0xF;
 | 
			
		||||
            r2 = r2 % r4;
 | 
			
		||||
            summOdds = sub_08000F2C(droptable.a, droptable.a, ptr2->a, ptr3->a);
 | 
			
		||||
            rand = Random();
 | 
			
		||||
            item = (rand >> 0x18);
 | 
			
		||||
            item &= 0xF;
 | 
			
		||||
            rand = rand % summOdds;
 | 
			
		||||
            {
 | 
			
		||||
                u32 r3;
 | 
			
		||||
                for (r3 = 0, r1 = 0; r3 < 0x10; r3++, r5 = (r5 + 1) & 0xF) {
 | 
			
		||||
                    if ((r1 += s0.a[r5]) > r2) {
 | 
			
		||||
                for (r3 = 0, r1 = 0; r3 < 0x10; r3++, item = (item + 1) & 0xF) {
 | 
			
		||||
                    if ((r1 += droptable.a[item]) > rand) {
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            r1 = gUnk_080FE1B4[r5];
 | 
			
		||||
            r1 = gUnk_080FE1B4[item];
 | 
			
		||||
            if (r1 != ITEM_NONE) {
 | 
			
		||||
                return CreateItemDrop(arg0, r1, 0);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
#include "droptables.h"
 | 
			
		||||
 | 
			
		||||
const Droptable gDroptablesEnemies[] = {
 | 
			
		||||
    { {
 | 
			
		||||
    [0]={ {
 | 
			
		||||
        .none = -999,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [1]={ {
 | 
			
		||||
        .none = 300,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [2]={ {
 | 
			
		||||
        .none = -999,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [3]={ {
 | 
			
		||||
        .none = 36,
 | 
			
		||||
        .rupee1 = 28,
 | 
			
		||||
        .rupee5 = 20,
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [4]={ {
 | 
			
		||||
        .none = 74,
 | 
			
		||||
        .rupee1 = 10,
 | 
			
		||||
        .rupee5 = 5,
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [5]={ {
 | 
			
		||||
        .none = 100,
 | 
			
		||||
        .rupee1 = 0,
 | 
			
		||||
        .rupee5 = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -110,10 +110,7 @@ const Droptable gDroptablesEnemies[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
};
 | 
			
		||||
// not 100% sure
 | 
			
		||||
const Droptable gUnk_0800143C[] = {
 | 
			
		||||
    { {
 | 
			
		||||
    [6]={ {
 | 
			
		||||
        .none = 73,
 | 
			
		||||
        .rupee1 = 25,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +128,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [7]={ {
 | 
			
		||||
        .none = 55,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = 70,
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +146,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [8]={ {
 | 
			
		||||
        .none = 50,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = 26,
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +164,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [9]={ {
 | 
			
		||||
        .none = 45,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -185,7 +182,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [10]={ {
 | 
			
		||||
        .none = 300,
 | 
			
		||||
        .rupee1 = -999,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +200,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [11]={ {
 | 
			
		||||
        .none = 60,
 | 
			
		||||
        .rupee1 = 10,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -221,7 +218,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [12]={ {
 | 
			
		||||
        .none = 70,
 | 
			
		||||
        .rupee1 = 0,
 | 
			
		||||
        .rupee5 = -999,
 | 
			
		||||
| 
						 | 
				
			
			@ -239,7 +236,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [13]={ {
 | 
			
		||||
        .none = 63,
 | 
			
		||||
        .rupee1 = 10,
 | 
			
		||||
        .rupee5 = 20,
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +254,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [14]={ {
 | 
			
		||||
        .none = 50,
 | 
			
		||||
        .rupee1 = 10,
 | 
			
		||||
        .rupee5 = 20,
 | 
			
		||||
| 
						 | 
				
			
			@ -275,7 +272,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [15]={ {
 | 
			
		||||
        .none = 0,
 | 
			
		||||
        .rupee1 = 0,
 | 
			
		||||
        .rupee5 = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -293,7 +290,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [16]={ {
 | 
			
		||||
        .none = 0,
 | 
			
		||||
        .rupee1 = 0,
 | 
			
		||||
        .rupee5 = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -311,7 +308,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none4 = 0,
 | 
			
		||||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
    { {
 | 
			
		||||
    [17]={ {
 | 
			
		||||
        .none = 0,
 | 
			
		||||
        .rupee1 = 40,
 | 
			
		||||
        .rupee5 = 24,
 | 
			
		||||
| 
						 | 
				
			
			@ -330,7 +327,7 @@ const Droptable gUnk_0800143C[] = {
 | 
			
		|||
        .none5 = 0,
 | 
			
		||||
    } },
 | 
			
		||||
};
 | 
			
		||||
// not 100% sure
 | 
			
		||||
 | 
			
		||||
const Droptable gDroptablesAreas[] = {
 | 
			
		||||
    [0] = { {
 | 
			
		||||
        .none = 920,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ void sub_08081790(DeathFxObject* this) {
 | 
			
		|||
        DeathFx_DropRandom9, DeathFx_DropRandom9,  DeathFx_DropRandom9, DeathFx_DropRandom9,
 | 
			
		||||
        DeathFx_DropRandom9, DeathFx_DropRandom9,  DeathFx_DropRandom9, DeathFx_DropFixedItem,
 | 
			
		||||
    };
 | 
			
		||||
    static const u8 gUnk_0811EC64[] = {
 | 
			
		||||
    static const u8 DeathFx_EnemyDroptables[] = {
 | 
			
		||||
        [OCTOROK] = 6,
 | 
			
		||||
        [CHUCHU] = 6,
 | 
			
		||||
        [LEEVER] = 6,
 | 
			
		||||
| 
						 | 
				
			
			@ -228,7 +228,7 @@ void sub_08081790(DeathFxObject* this) {
 | 
			
		|||
        6,
 | 
			
		||||
    };
 | 
			
		||||
    if (this->parentId < 0xf0) {
 | 
			
		||||
        CreateRandomItemDrop(super, gUnk_0811EC64[this->parentId]);
 | 
			
		||||
        CreateRandomItemDrop(super, DeathFx_EnemyDroptables[this->parentId]);
 | 
			
		||||
    } else {
 | 
			
		||||
        DeathFx_DropFunctions[this->parentId - 0xf0](this);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue