1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 06:54:33 +00:00

Merge branch 'master' into doc_pause_menu

This commit is contained in:
Dragorn421 2022-12-13 13:33:58 +01:00
commit b4d3d1d6d2
No known key found for this signature in database
GPG key ID: 32B53D2D16FC4118
182 changed files with 5231 additions and 1600 deletions

View file

@ -1,24 +1,24 @@
<Root>
<File Name="icon_item_24_static" Segment="9">
<Texture Name="gForestMedallionIconTex" OutName="forest_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x0"/>
<Texture Name="gFireMedallionIconTex" OutName="fire_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x900"/>
<Texture Name="gWaterMedallionIconTex" OutName="water_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x1200"/>
<Texture Name="gSpiritMedallionIconTex" OutName="spirit_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x1B00"/>
<Texture Name="gShadowMedallionIconTex" OutName="shadow_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x2400"/>
<Texture Name="gLightMedallionIconTex" OutName="light_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x2D00"/>
<Texture Name="gKokiriEmeraldIconTex" OutName="kokiri_emerald_icon" Format="rgba32" Width="24" Height="24" Offset="0x3600"/>
<Texture Name="gGoronRubyIconTex" OutName="goron_ruby_icon" Format="rgba32" Width="24" Height="24" Offset="0x3F00"/>
<Texture Name="gZoraSapphireIconTex" OutName="zora_sapphire_icon" Format="rgba32" Width="24" Height="24" Offset="0x4800"/>
<Texture Name="gStoneOfAgonyIconTex" OutName="stone_of_agony_icon" Format="rgba32" Width="24" Height="24" Offset="0x5100"/>
<Texture Name="gGerudosCardIconTex" OutName="gerudos_card_icon" Format="rgba32" Width="24" Height="24" Offset="0x5A00"/>
<Texture Name="gGoldSkulltulaIconTex" OutName="gold_skulltula_icon" Format="rgba32" Width="24" Height="24" Offset="0x6300"/>
<Texture Name="gHeartContainerIconTex" OutName="heart_container_icon" Format="rgba32" Width="24" Height="24" Offset="0x6C00"/>
<Texture Name="gUnusedPieceOfHeartIconTex" OutName="unsed_piece_of_heart_icon" Format="rgba32" Width="24" Height="24" Offset="0x7500"/>
<Texture Name="gBossKeyIconTex" OutName="boss_key_icon" Format="rgba32" Width="24" Height="24" Offset="0x7E00"/>
<Texture Name="gCompassIconTex" OutName="compass_icon" Format="rgba32" Width="24" Height="24" Offset="0x8700"/>
<Texture Name="gDungeonMapIconTex" OutName="dungeon_map_icon" Format="rgba32" Width="24" Height="24" Offset="0x9000"/>
<Texture Name="gSmallKeyIconTex" OutName="small_key_icon" Format="rgba32" Width="24" Height="24" Offset="0x9900"/>
<Texture Name="gSmallMagicJarIconTex" OutName="small_magic_jar_icon" Format="rgba32" Width="24" Height="24" Offset="0xA200"/>
<Texture Name="gBigMagicJarIconTex" OutName="big_magic_jar_icon" Format="rgba32" Width="24" Height="24" Offset="0xAB00"/>
<Texture Name="gQuestIconMedallionForestTex" OutName="forest_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x0"/>
<Texture Name="gQuestIconMedallionFireTex" OutName="fire_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x900"/>
<Texture Name="gQuestIconMedallionWaterTex" OutName="water_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x1200"/>
<Texture Name="gQuestIconMedallionSpiritTex" OutName="spirit_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x1B00"/>
<Texture Name="gQuestIconMedallionShadowTex" OutName="shadow_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x2400"/>
<Texture Name="gQuestIconMedallionLightTex" OutName="light_medallion_icon" Format="rgba32" Width="24" Height="24" Offset="0x2D00"/>
<Texture Name="gQuestIconKokiriEmeraldTex" OutName="kokiri_emerald_icon" Format="rgba32" Width="24" Height="24" Offset="0x3600"/>
<Texture Name="gQuestIconGoronRubyTex" OutName="goron_ruby_icon" Format="rgba32" Width="24" Height="24" Offset="0x3F00"/>
<Texture Name="gQuestIconZoraSapphireTex" OutName="zora_sapphire_icon" Format="rgba32" Width="24" Height="24" Offset="0x4800"/>
<Texture Name="gQuestIconStoneOfAgonyTex" OutName="stone_of_agony_icon" Format="rgba32" Width="24" Height="24" Offset="0x5100"/>
<Texture Name="gQuestIconGerudosCardTex" OutName="gerudos_card_icon" Format="rgba32" Width="24" Height="24" Offset="0x5A00"/>
<Texture Name="gQuestIconGoldSkulltulaTex" OutName="gold_skulltula_icon" Format="rgba32" Width="24" Height="24" Offset="0x6300"/>
<Texture Name="gQuestIconHeartContainerTex" OutName="heart_container_icon" Format="rgba32" Width="24" Height="24" Offset="0x6C00"/>
<Texture Name="gQuestIconHeartPieceTex" OutName="heart_piece_icon" Format="rgba32" Width="24" Height="24" Offset="0x7500"/>
<Texture Name="gQuestIconDungeonBossKeyTex" OutName="boss_key_icon" Format="rgba32" Width="24" Height="24" Offset="0x7E00"/>
<Texture Name="gQuestIconDungeonCompassTex" OutName="compass_icon" Format="rgba32" Width="24" Height="24" Offset="0x8700"/>
<Texture Name="gQuestIconDungeonMapTex" OutName="dungeon_map_icon" Format="rgba32" Width="24" Height="24" Offset="0x9000"/>
<Texture Name="gQuestIconSmallKeyTex" OutName="small_key_icon" Format="rgba32" Width="24" Height="24" Offset="0x9900"/>
<Texture Name="gQuestIconMagicJarSmallTex" OutName="small_magic_jar_icon" Format="rgba32" Width="24" Height="24" Offset="0xA200"/>
<Texture Name="gQuestIconMagicJarBigTex" OutName="big_magic_jar_icon" Format="rgba32" Width="24" Height="24" Offset="0xAB00"/>
</File>
</Root>

View file

@ -1,95 +1,95 @@
<Root>
<File Name="icon_item_static" Segment="8">
<Texture Name="gDekuStickIconTex" OutName="deku_stick_icon" Format="rgba32" Width="32" Height="32" Offset="0x0"/>
<Texture Name="gDekuNutIconTex" OutName="deku_nut_icon" Format="rgba32" Width="32" Height="32" Offset="0x1000"/>
<Texture Name="gBombIconTex" OutName="bomb_icon" Format="rgba32" Width="32" Height="32" Offset="0x2000"/>
<Texture Name="gFairyBowIconTex" OutName="fairy_bow_icon" Format="rgba32" Width="32" Height="32" Offset="0x3000"/>
<Texture Name="gFireArrowIconTex" OutName="fire_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0x4000"/>
<Texture Name="gDinsFireIconTex" OutName="dins_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x5000"/>
<Texture Name="gFairySlingshotIconTex" OutName="fairy_slingshot_icon" Format="rgba32" Width="32" Height="32" Offset="0x6000"/>
<Texture Name="gFairyOcarinaIconTex" OutName="fairy_ocarina_icon" Format="rgba32" Width="32" Height="32" Offset="0x7000"/>
<Texture Name="gOcarinaofTimeIconTex" OutName="ocarina_of_time_icon" Format="rgba32" Width="32" Height="32" Offset="0x8000"/>
<Texture Name="gBombchuIconTex" OutName="bombchu_icon" Format="rgba32" Width="32" Height="32" Offset="0x9000"/>
<Texture Name="gHookshotIconTex" OutName="hookshot_icon" Format="rgba32" Width="32" Height="32" Offset="0xA000"/>
<Texture Name="gLongshotIconTex" OutName="longshot_icon" Format="rgba32" Width="32" Height="32" Offset="0xB000"/>
<Texture Name="gIceArrowIconTex" OutName="ice_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0xC000"/>
<Texture Name="gFaroresWindIconTex" OutName="farores_wind_icon" Format="rgba32" Width="32" Height="32" Offset="0xD000"/>
<Texture Name="gBoomerangIconTex" OutName="boomerang_icon" Format="rgba32" Width="32" Height="32" Offset="0xE000"/>
<Texture Name="gLensofTruthIconTex" OutName="lens_of_truth_icon" Format="rgba32" Width="32" Height="32" Offset="0xF000"/>
<Texture Name="gMagicBeansIconTex" OutName="magic_beans_icon" Format="rgba32" Width="32" Height="32" Offset="0x10000"/>
<Texture Name="gMegatonHammerIconTex" OutName="megaton_hammer_icon" Format="rgba32" Width="32" Height="32" Offset="0x11000"/>
<Texture Name="gLightArrowIconTex" OutName="light_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0x12000"/>
<Texture Name="gNayrusLoveIconTex" OutName="nayrus_love_icon" Format="rgba32" Width="32" Height="32" Offset="0x13000"/>
<Texture Name="gEmptyBottleIconTex" OutName="empty_bottle_icon" Format="rgba32" Width="32" Height="32" Offset="0x14000"/>
<Texture Name="gRedPotionIconTex" OutName="red_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x15000"/>
<Texture Name="gGreenPotionIconTex" OutName="green_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x16000"/>
<Texture Name="gBluePotionIconTex" OutName="blue_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x17000"/>
<Texture Name="gBottledFairyIconTex" OutName="bottled_fairy_icon" Format="rgba32" Width="32" Height="32" Offset="0x18000"/>
<Texture Name="gFishIconTex" OutName="fish_icon" Format="rgba32" Width="32" Height="32" Offset="0x19000"/>
<Texture Name="gMilkFullIconTex" OutName="milk_full_icon" Format="rgba32" Width="32" Height="32" Offset="0x1A000"/>
<Texture Name="gRutosLetterIconTex" OutName="rutos_letter_icon" Format="rgba32" Width="32" Height="32" Offset="0x1B000"/>
<Texture Name="gBlueFireIconTex" OutName="blue_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x1C000"/>
<Texture Name="gBugIconTex" OutName="bug_icon" Format="rgba32" Width="32" Height="32" Offset="0x1D000"/>
<Texture Name="gBigPoeIconTex" OutName="big_poe_icon" Format="rgba32" Width="32" Height="32" Offset="0x1E000"/>
<Texture Name="gMilkhalfIconTex" OutName="milk_half_icon" Format="rgba32" Width="32" Height="32" Offset="0x1F000"/>
<Texture Name="gPoeIconTex" OutName="poe_icon" Format="rgba32" Width="32" Height="32" Offset="0x20000"/>
<Texture Name="gWeirdEggIconTex" OutName="weird_egg_icon" Format="rgba32" Width="32" Height="32" Offset="0x21000"/>
<Texture Name="gCuccoIconTex" OutName="cucco_icon" Format="rgba32" Width="32" Height="32" Offset="0x22000"/>
<Texture Name="gZeldasLetterIconTex" OutName="zeldas_letter_icon" Format="rgba32" Width="32" Height="32" Offset="0x23000"/>
<Texture Name="gKeatonMaskIconTex" OutName="keaton_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x24000"/>
<Texture Name="gSkullMaskIconTex" OutName="skull_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x25000"/>
<Texture Name="gSpookyMaskIconTex" OutName="spooky_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x26000"/>
<Texture Name="gBunnyHoodIconTex" OutName="bunny_hood_icon" Format="rgba32" Width="32" Height="32" Offset="0x27000"/>
<Texture Name="gGoronMaskIconTex" OutName="goron_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x28000"/>
<Texture Name="gZoraMaskIconTex" OutName="zoras_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x29000"/>
<Texture Name="gGerudoMaskIconTex" OutName="gerudos_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x2A000"/>
<Texture Name="gMaskofTruthIconTex" OutName="mask_of_truth_icon" Format="rgba32" Width="32" Height="32" Offset="0x2B000"/>
<Texture Name="gSoldOutIconTex" OutName="sold_out_icon" Format="rgba32" Width="32" Height="32" Offset="0x2C000"/>
<Texture Name="gPocketEggIconTex" OutName="pocket_egg" Format="rgba32" Width="32" Height="32" Offset="0x2D000"/>
<Texture Name="gPocketCuccoIconTex" OutName="pocket_cucco_icon" Format="rgba32" Width="32" Height="32" Offset="0x2E000"/>
<Texture Name="gCojiroIconTex" OutName="cojiro_icon" Format="rgba32" Width="32" Height="32" Offset="0x2F000"/>
<Texture Name="gOddMushroomIconTex" OutName="odd_mushroom_icon" Format="rgba32" Width="32" Height="32" Offset="0x30000"/>
<Texture Name="gOddPotionIconTex" OutName="odd_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x31000"/>
<Texture Name="gPoachersSawIconTex" OutName="poachers_saw_icon" Format="rgba32" Width="32" Height="32" Offset="0x32000"/>
<Texture Name="gBrokenBiggoronSwordIconTex" OutName="broken_biggoron_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x33000"/>
<Texture Name="gPrescriptionIconTex" OutName="prescription_icon" Format="rgba32" Width="32" Height="32" Offset="0x34000"/>
<Texture Name="gEyeBallFrogIconTex" OutName="eyeball_frog_icon" Format="rgba32" Width="32" Height="32" Offset="0x35000"/>
<Texture Name="gEyeDropsIconTex" OutName="eye_drops_icon" Format="rgba32" Width="32" Height="32" Offset="0x36000"/>
<Texture Name="gClaimCheckIconTex" OutName="claim_check_icon" Format="rgba32" Width="32" Height="32" Offset="0x37000"/>
<Texture Name="gFairyBowFireIconTex" OutName="fairy_bow_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x38000"/>
<Texture Name="gFairyBowIceIconTex" OutName="fairy_bow_ice_icon" Format="rgba32" Width="32" Height="32" Offset="0x39000"/>
<Texture Name="gFairyBowLightIconTex" OutName="fairy_bow_light_icon" Format="rgba32" Width="32" Height="32" Offset="0x3A000"/>
<Texture Name="gKokiriSwordIconTex" OutName="kokiri_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3B000"/>
<Texture Name="gMasterSwordIconTex" OutName="master_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3C000"/>
<Texture Name="gBiggoronSwordIconTex" OutName="biggoron_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3D000"/>
<Texture Name="gDekuShieldIconTex" OutName="deku_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x3E000"/>
<Texture Name="gHylianShieldIconTex" OutName="hylian_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x3F000"/>
<Texture Name="gMirrorShieldIconTex" OutName="mirror_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x40000"/>
<Texture Name="gKokiriTunicIconTex" OutName="kokiri_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x41000"/>
<Texture Name="gGoronTunicIconTex" OutName="goron_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x42000"/>
<Texture Name="gZoraTunicIconTex" OutName="zora_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x43000"/>
<Texture Name="gKokiriBootsIconTex" OutName="kokiri_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x44000"/>
<Texture Name="gIronBootsIconTex" OutName="iron_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x45000"/>
<Texture Name="gHoverBootsIconTex" OutName="hover_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x46000"/>
<Texture Name="gBulletBag30IconTex" OutName="bullet_bag_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x47000"/>
<Texture Name="gBulletBag40IconTex" OutName="bullet_bag_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x48000"/>
<Texture Name="gBulletBag50IconTex" OutName="bullet_bag_50_icon" Format="rgba32" Width="32" Height="32" Offset="0x49000"/>
<Texture Name="gQuiver30IconTex" OutName="quiver_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x4A000"/>
<Texture Name="gQuiver40IconTex" OutName="quiver_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x4B000"/>
<Texture Name="gQuiver50IconTex" OutName="quiver_50_icon" Format="rgba32" Width="32" Height="32" Offset="0x4C000"/>
<Texture Name="gBombBag20IconTex" OutName="bomb_bag_20_icon" Format="rgba32" Width="32" Height="32" Offset="0x4D000"/>
<Texture Name="gBombBag30IconTex" OutName="bomb_bag_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x4E000"/>
<Texture Name="gBombBag40IconTex" OutName="bomb_bag_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x4F000"/>
<Texture Name="gGoronsBraceletIconTex" OutName="gorons_bracelet_icon" Format="rgba32" Width="32" Height="32" Offset="0x50000"/>
<Texture Name="gSilverGauntletsIconTex" OutName="silver_gauntlets_icon" Format="rgba32" Width="32" Height="32" Offset="0x51000"/>
<Texture Name="gGoldenGauntletsIconTex" OutName="golden_gauntlets_icon" Format="rgba32" Width="32" Height="32" Offset="0x52000"/>
<Texture Name="gSilverScaleIconTex" OutName="silver_scale_icon" Format="rgba32" Width="32" Height="32" Offset="0x53000"/>
<Texture Name="gGoldenScaleIconTex" OutName="golden_scale_icon" Format="rgba32" Width="32" Height="32" Offset="0x54000"/>
<Texture Name="gBrokenGiantsKnifeIconTex" OutName="broken_giants_knife_icon" Format="rgba32" Width="32" Height="32" Offset="0x55000"/>
<Texture Name="gAdultsWalletIconTex" OutName="adults_wallet_icon" Format="rgba32" Width="32" Height="32" Offset="0x56000"/>
<Texture Name="gGiantsWalletIconTex" OutName="giants_wallet_icon" Format="rgba32" Width="32" Height="32" Offset="0x57000"/>
<Texture Name="gDekuSeedsIconTex" OutName="deku_seeds_icon" Format="rgba32" Width="32" Height="32" Offset="0x58000"/>
<Texture Name="gFishingPoleIconTex" OutName="fishing_pole_icon" Format="rgba32" Width="32" Height="32" Offset="0x59000"/>
<Texture Name="gItemIconDekuStickTex" OutName="deku_stick_icon" Format="rgba32" Width="32" Height="32" Offset="0x0"/>
<Texture Name="gItemIconDekuNutTex" OutName="deku_nut_icon" Format="rgba32" Width="32" Height="32" Offset="0x1000"/>
<Texture Name="gItemIconBombTex" OutName="bomb_icon" Format="rgba32" Width="32" Height="32" Offset="0x2000"/>
<Texture Name="gItemIconBowTex" OutName="bow_icon" Format="rgba32" Width="32" Height="32" Offset="0x3000"/>
<Texture Name="gItemIconArrowFireTex" OutName="fire_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0x4000"/>
<Texture Name="gItemIconDinsFireTex" OutName="dins_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x5000"/>
<Texture Name="gItemIconSlingshotTex" OutName="slingshot_icon" Format="rgba32" Width="32" Height="32" Offset="0x6000"/>
<Texture Name="gItemIconOcarinaFairyTex" OutName="fairy_ocarina_icon" Format="rgba32" Width="32" Height="32" Offset="0x7000"/>
<Texture Name="gItemIconOcarinaOfTimeTex" OutName="ocarina_of_time_icon" Format="rgba32" Width="32" Height="32" Offset="0x8000"/>
<Texture Name="gItemIconBombchuTex" OutName="bombchu_icon" Format="rgba32" Width="32" Height="32" Offset="0x9000"/>
<Texture Name="gItemIconHookshotTex" OutName="hookshot_icon" Format="rgba32" Width="32" Height="32" Offset="0xA000"/>
<Texture Name="gItemIconLongshotTex" OutName="longshot_icon" Format="rgba32" Width="32" Height="32" Offset="0xB000"/>
<Texture Name="gItemIconArrowIceTex" OutName="ice_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0xC000"/>
<Texture Name="gItemIconFaroresWindTex" OutName="farores_wind_icon" Format="rgba32" Width="32" Height="32" Offset="0xD000"/>
<Texture Name="gItemIconBoomerangTex" OutName="boomerang_icon" Format="rgba32" Width="32" Height="32" Offset="0xE000"/>
<Texture Name="gItemIconLensOfTruthTex" OutName="lens_of_truth_icon" Format="rgba32" Width="32" Height="32" Offset="0xF000"/>
<Texture Name="gItemIconMagicBeanTex" OutName="magic_bean_icon" Format="rgba32" Width="32" Height="32" Offset="0x10000"/>
<Texture Name="gItemIconHammerTex" OutName="hammer_icon" Format="rgba32" Width="32" Height="32" Offset="0x11000"/>
<Texture Name="gItemIconArrowLightTex" OutName="light_arrow_icon" Format="rgba32" Width="32" Height="32" Offset="0x12000"/>
<Texture Name="gItemIconNayrusLoveTex" OutName="nayrus_love_icon" Format="rgba32" Width="32" Height="32" Offset="0x13000"/>
<Texture Name="gItemIconBottleEmptyTex" OutName="empty_bottle_icon" Format="rgba32" Width="32" Height="32" Offset="0x14000"/>
<Texture Name="gItemIconBottlePotionRedTex" OutName="red_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x15000"/>
<Texture Name="gItemIconBottlePotionGreenTex" OutName="green_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x16000"/>
<Texture Name="gItemIconBottlePotionBlueTex" OutName="blue_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x17000"/>
<Texture Name="gItemIconBottleFairyTex" OutName="bottled_fairy_icon" Format="rgba32" Width="32" Height="32" Offset="0x18000"/>
<Texture Name="gItemIconBottleFishTex" OutName="bottled_fish_icon" Format="rgba32" Width="32" Height="32" Offset="0x19000"/>
<Texture Name="gItemIconBottleMilkFullTex" OutName="bottled_milk_full_icon" Format="rgba32" Width="32" Height="32" Offset="0x1A000"/>
<Texture Name="gItemIconBottleRutosLetterTex" OutName="bottled_rutos_letter_icon" Format="rgba32" Width="32" Height="32" Offset="0x1B000"/>
<Texture Name="gItemIconBottleBlueFireTex" OutName="bottled_blue_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x1C000"/>
<Texture Name="gItemIconBottleBugTex" OutName="bottled_bug_icon" Format="rgba32" Width="32" Height="32" Offset="0x1D000"/>
<Texture Name="gItemIconBottleBigPoeTex" OutName="bottled_big_poe_icon" Format="rgba32" Width="32" Height="32" Offset="0x1E000"/>
<Texture Name="gItemIconBottleMilkHalfTex" OutName="bottled_milk_half_icon" Format="rgba32" Width="32" Height="32" Offset="0x1F000"/>
<Texture Name="gItemIconBottlePoeTex" OutName="bottled_poe_icon" Format="rgba32" Width="32" Height="32" Offset="0x20000"/>
<Texture Name="gItemIconWeirdEggTex" OutName="weird_egg_icon" Format="rgba32" Width="32" Height="32" Offset="0x21000"/>
<Texture Name="gItemIconChickenTex" OutName="chicken_icon" Format="rgba32" Width="32" Height="32" Offset="0x22000"/>
<Texture Name="gItemIconZeldasLetterTex" OutName="zeldas_letter_icon" Format="rgba32" Width="32" Height="32" Offset="0x23000"/>
<Texture Name="gItemIconMaskKeatonTex" OutName="keaton_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x24000"/>
<Texture Name="gItemIconMaskSkullTex" OutName="skull_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x25000"/>
<Texture Name="gItemIconMaskSpookyTex" OutName="spooky_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x26000"/>
<Texture Name="gItemIconMaskBunnyHoodTex" OutName="bunny_hood_icon" Format="rgba32" Width="32" Height="32" Offset="0x27000"/>
<Texture Name="gItemIconMaskGoronTex" OutName="goron_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x28000"/>
<Texture Name="gItemIconMaskZoraTex" OutName="zora_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x29000"/>
<Texture Name="gItemIconMaskGerudoTex" OutName="gerudo_mask_icon" Format="rgba32" Width="32" Height="32" Offset="0x2A000"/>
<Texture Name="gItemIconMaskTruthTex" OutName="mask_of_truth_icon" Format="rgba32" Width="32" Height="32" Offset="0x2B000"/>
<Texture Name="gItemIconSoldOutTex" OutName="sold_out_icon" Format="rgba32" Width="32" Height="32" Offset="0x2C000"/>
<Texture Name="gItemIconPocketEggTex" OutName="pocket_egg_icon" Format="rgba32" Width="32" Height="32" Offset="0x2D000"/>
<Texture Name="gItemIconPocketCuccoTex" OutName="pocket_cucco_icon" Format="rgba32" Width="32" Height="32" Offset="0x2E000"/>
<Texture Name="gItemIconCojiroTex" OutName="cojiro_icon" Format="rgba32" Width="32" Height="32" Offset="0x2F000"/>
<Texture Name="gItemIconOddMushroomTex" OutName="odd_mushroom_icon" Format="rgba32" Width="32" Height="32" Offset="0x30000"/>
<Texture Name="gItemIconOddPotionTex" OutName="odd_potion_icon" Format="rgba32" Width="32" Height="32" Offset="0x31000"/>
<Texture Name="gItemIconPoachersSawTex" OutName="poachers_saw_icon" Format="rgba32" Width="32" Height="32" Offset="0x32000"/>
<Texture Name="gItemIconBrokenGoronsSwordTex" OutName="broken_gorons_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x33000"/>
<Texture Name="gItemIconPrescriptionTex" OutName="prescription_icon" Format="rgba32" Width="32" Height="32" Offset="0x34000"/>
<Texture Name="gItemIconEyeballFrogTex" OutName="eyeball_frog_icon" Format="rgba32" Width="32" Height="32" Offset="0x35000"/>
<Texture Name="gItemIconEyeDropsTex" OutName="eye_drops_icon" Format="rgba32" Width="32" Height="32" Offset="0x36000"/>
<Texture Name="gItemIconClaimCheckTex" OutName="claim_check_icon" Format="rgba32" Width="32" Height="32" Offset="0x37000"/>
<Texture Name="gItemIconBowFireTex" OutName="bow_fire_icon" Format="rgba32" Width="32" Height="32" Offset="0x38000"/>
<Texture Name="gItemIconBowIceTex" OutName="bow_ice_icon" Format="rgba32" Width="32" Height="32" Offset="0x39000"/>
<Texture Name="gItemIconBowLightTex" OutName="bow_light_icon" Format="rgba32" Width="32" Height="32" Offset="0x3A000"/>
<Texture Name="gItemIconSwordKokiriTex" OutName="kokiri_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3B000"/>
<Texture Name="gItemIconSwordMasterTex" OutName="master_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3C000"/>
<Texture Name="gItemIconSwordBiggoronTex" OutName="biggoron_sword_icon" Format="rgba32" Width="32" Height="32" Offset="0x3D000"/>
<Texture Name="gItemIconShieldDekuTex" OutName="deku_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x3E000"/>
<Texture Name="gItemIconShieldHylianTex" OutName="hylian_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x3F000"/>
<Texture Name="gItemIconShieldMirrorTex" OutName="mirror_shield_icon" Format="rgba32" Width="32" Height="32" Offset="0x40000"/>
<Texture Name="gItemIconTunicKokiriTex" OutName="kokiri_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x41000"/>
<Texture Name="gItemIconTunicGoronTex" OutName="goron_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x42000"/>
<Texture Name="gItemIconTunicZoraTex" OutName="zora_tunic_icon" Format="rgba32" Width="32" Height="32" Offset="0x43000"/>
<Texture Name="gItemIconBootsKokiriTex" OutName="kokiri_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x44000"/>
<Texture Name="gItemIconBootsIronTex" OutName="iron_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x45000"/>
<Texture Name="gItemIconBootsHoverTex" OutName="hover_boots_icon" Format="rgba32" Width="32" Height="32" Offset="0x46000"/>
<Texture Name="gItemIconBulletBag30Tex" OutName="bullet_bag_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x47000"/>
<Texture Name="gItemIconBulletBag40Tex" OutName="bullet_bag_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x48000"/>
<Texture Name="gItemIconBulletBag50Tex" OutName="bullet_bag_50_icon" Format="rgba32" Width="32" Height="32" Offset="0x49000"/>
<Texture Name="gItemIconQuiver30Tex" OutName="quiver_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x4A000"/>
<Texture Name="gItemIconQuiver40Tex" OutName="quiver_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x4B000"/>
<Texture Name="gItemIconQuiver50Tex" OutName="quiver_50_icon" Format="rgba32" Width="32" Height="32" Offset="0x4C000"/>
<Texture Name="gItemIconBombBag20Tex" OutName="bomb_bag_20_icon" Format="rgba32" Width="32" Height="32" Offset="0x4D000"/>
<Texture Name="gItemIconBombBag30Tex" OutName="bomb_bag_30_icon" Format="rgba32" Width="32" Height="32" Offset="0x4E000"/>
<Texture Name="gItemIconBombBag40Tex" OutName="bomb_bag_40_icon" Format="rgba32" Width="32" Height="32" Offset="0x4F000"/>
<Texture Name="gItemIconGoronsBraceletTex" OutName="gorons_bracelet_icon" Format="rgba32" Width="32" Height="32" Offset="0x50000"/>
<Texture Name="gItemIconSilverGauntletsTex" OutName="silver_gauntlets_icon" Format="rgba32" Width="32" Height="32" Offset="0x51000"/>
<Texture Name="gItemIconGoldenGauntletsTex" OutName="golden_gauntlets_icon" Format="rgba32" Width="32" Height="32" Offset="0x52000"/>
<Texture Name="gItemIconScaleSilverTex" OutName="silver_scale_icon" Format="rgba32" Width="32" Height="32" Offset="0x53000"/>
<Texture Name="gItemIconScaleGoldenTex" OutName="golden_scale_icon" Format="rgba32" Width="32" Height="32" Offset="0x54000"/>
<Texture Name="gItemIconBrokenGiantsKnifeTex" OutName="broken_giants_knife_icon" Format="rgba32" Width="32" Height="32" Offset="0x55000"/>
<Texture Name="gItemIconAdultsWalletTex" OutName="adults_wallet_icon" Format="rgba32" Width="32" Height="32" Offset="0x56000"/>
<Texture Name="gItemIconGiantsWalletTex" OutName="giants_wallet_icon" Format="rgba32" Width="32" Height="32" Offset="0x57000"/>
<Texture Name="gItemIconDekuSeedsTex" OutName="deku_seeds_icon" Format="rgba32" Width="32" Height="32" Offset="0x58000"/>
<Texture Name="gItemIconFishingPoleTex" OutName="fishing_pole_icon" Format="rgba32" Width="32" Height="32" Offset="0x59000"/>
<Texture Name="gHeartPieceIcon1Tex" OutName="heart_piece_icon_1" Format="ia8" Width="48" Height="48" Offset="0x5A000"/>
<Texture Name="gHeartPieceIcon2Tex" OutName="heart_piece_icon_2" Format="ia8" Width="48" Height="48" Offset="0x5A900"/>
<Texture Name="gHeartPieceIcon3Tex" OutName="heart_piece_icon_3" Format="ia8" Width="48" Height="48" Offset="0x5B200"/>

View file

@ -23,11 +23,11 @@
<Texture Name="gMapChestIconTex" OutName="map_chest_icon" Format="rgba16" Width="8" Height="8" Offset="0x2580"/>
<Texture Name="gArcheryScoreIconTex" OutName="archery_score_icon" Format="rgba16" Width="24" Height="16" Offset="0x2600"/>
<Texture Name="gMapBossIconTex" OutName="map_boss_icon" Format="ia8" Width="8" Height="8" Offset="0x2900"/>
<Texture Name="gOcarinaATex" OutName="ocarina_a" Format="ia8" Width="16" Height="16" Offset="0x2940"/>
<Texture Name="gOcarinaCDownTex" OutName="ocarina_c_down" Format="ia8" Width="16" Height="16" Offset="0x2A40"/>
<Texture Name="gOcarinaCRightTex" OutName="ocarina_c_right" Format="ia8" Width="16" Height="16" Offset="0x2B40"/>
<Texture Name="gOcarinaCLeftTex" OutName="ocarina_c_left" Format="ia8" Width="16" Height="16" Offset="0x2C40"/>
<Texture Name="gOcarinaCUpTex" OutName="ocarina_c_up" Format="ia8" Width="16" Height="16" Offset="0x2D40"/>
<Texture Name="gOcarinaBtnIconATex" OutName="ocarina_a" Format="ia8" Width="16" Height="16" Offset="0x2940"/>
<Texture Name="gOcarinaBtnIconCDownTex" OutName="ocarina_c_down" Format="ia8" Width="16" Height="16" Offset="0x2A40"/>
<Texture Name="gOcarinaBtnIconCRightTex" OutName="ocarina_c_right" Format="ia8" Width="16" Height="16" Offset="0x2B40"/>
<Texture Name="gOcarinaBtnIconCLeftTex" OutName="ocarina_c_left" Format="ia8" Width="16" Height="16" Offset="0x2C40"/>
<Texture Name="gOcarinaBtnIconCUpTex" OutName="ocarina_c_up" Format="ia8" Width="16" Height="16" Offset="0x2D40"/>
<Texture Name="gOcarinaTrebleClefTex" OutName="ocarina_treble_clef" Format="i4" Width="16" Height="32" Offset="0x2E40"/>
<Texture Name="gNaviCUpJPTex" OutName="navi_c_up_jp" Format="ia4" Width="32" Height="8" Offset="0x2F40"/>
<Texture Name="gNaviCUpENGTex" OutName="navi_c_up_eng" Format="ia4" Width="32" Height="8" Offset="0x2FC0"/>

View file

@ -414,12 +414,12 @@ u32 Actor_TextboxIsClosing(Actor* actor, PlayState* play);
s8 func_8002F368(PlayState* play);
void Actor_GetScreenPos(PlayState* play, Actor* actor, s16* x, s16* y);
u32 Actor_HasParent(Actor* actor, PlayState* play);
s32 func_8002F434(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange);
void func_8002F554(Actor* actor, PlayState* play, s32 getItemId);
void func_8002F580(Actor* actor, PlayState* play);
s32 Actor_OfferGetItem(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange);
s32 Actor_OfferGetItemNearby(Actor* actor, PlayState* play, s32 getItemId);
s32 Actor_OfferCarry(Actor* actor, PlayState* play);
u32 Actor_HasNoParent(Actor* actor, PlayState* play);
void func_8002F5C4(Actor* actorA, Actor* actorB, PlayState* play);
void func_8002F5F0(Actor* actor, PlayState* play);
void Actor_SetClosestSecretDistance(Actor* actor, PlayState* play);
s32 Actor_IsMounted(PlayState* play, Actor* horse);
u32 Actor_SetRideActor(PlayState* play, Actor* horse, s32 mountSide);
s32 Actor_NotMounted(PlayState* play, Actor* horse);
@ -442,7 +442,7 @@ void Actor_InitContext(PlayState* play, ActorContext* actorCtx, ActorEntry* play
void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx);
s32 func_800314D4(PlayState* play, Actor* actor, Vec3f* arg2, f32 arg3);
void func_800315AC(PlayState* play, ActorContext* actorCtx);
void func_80031A28(PlayState* play, ActorContext* actorCtx);
void Actor_KillAllWithMissingObject(PlayState* play, ActorContext* actorCtx);
void func_80031B14(PlayState* play, ActorContext* actorCtx);
void func_80031C3C(ActorContext* actorCtx, PlayState* play);
Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ,
@ -481,7 +481,7 @@ f32 Rand_ZeroFloat(f32 f);
f32 Rand_CenteredFloat(f32 f);
void Actor_DrawDoorLock(PlayState* play, s32 frame, s32 type);
void func_8003424C(PlayState* play, Vec3f* arg1);
void Actor_SetColorFilter(Actor* actor, s16 colorFlag, s16 colorIntensityMax, s16 xluFlag, s16 duration);
void Actor_SetColorFilter(Actor* actor, s16 colorFlag, s16 colorIntensityMax, s16 bufFlag, s16 duration);
Hilite* func_800342EC(Vec3f* object, PlayState* play);
Hilite* func_8003435C(Vec3f* object, PlayState* play);
s32 Npc_UpdateTalking(PlayState* play, Actor* actor, s16* talkState, f32 interactRange,

View file

@ -100,7 +100,7 @@
#define R_TEXTBOX_HEIGHT YREG(23)
#define R_TEXTBOX_ICON_XPOS YREG(71)
#define R_TEXTBOX_ICON_YPOS YREG(72)
#define R_TEXTBOX_ICON_SIZE YREG(75)
#define R_TEXTBOX_ICON_DIMENSION YREG(75)
#define R_MESSAGE_DEBUGGER_SELECT YREG(78)
#define R_MESSAGE_DEBUGGER_TEXTID YREG(79)
#define R_C_UP_ICON_X YREG(88)

View file

@ -1236,7 +1236,7 @@ typedef struct PlayState {
/* 0x11D44 */ s32 (*isPlayerDroppingFish)(struct PlayState* play);
/* 0x11D48 */ s32 (*startPlayerFishing)(struct PlayState* play);
/* 0x11D4C */ s32 (*grabPlayer)(struct PlayState* play, Player* player);
/* 0x11D50 */ s32 (*startPlayerCutscene)(struct PlayState* play, Actor* actor, s32 mode);
/* 0x11D50 */ s32 (*startPlayerCutscene)(struct PlayState* play, Actor* actor, s32 csMode);
/* 0x11D54 */ void (*func_11D54)(Player* player, struct PlayState* play);
/* 0x11D58 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage);
/* 0x11D5C */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor);

View file

@ -169,6 +169,18 @@ typedef struct {
#define ACTOR_FLAG_27 (1 << 27)
#define ACTOR_FLAG_28 (1 << 28)
#define COLORFILTER_GET_COLORINTENSITY(colorFilterParams) (((colorFilterParams) & 0x1F00) >> 5)
#define COLORFILTER_GET_DURATION(colorFilterParams) ((colorFilterParams) & 0xFF)
#define COLORFILTER_COLORFLAG_GRAY 0x8000
#define COLORFILTER_COLORFLAG_RED 0x4000
#define COLORFILTER_COLORFLAG_BLUE 0x0000
#define COLORFILTER_INTENSITY_FLAG 0x8000
#define COLORFILTER_BUFFLAG_XLU 0x2000
#define COLORFILTER_BUFFLAG_OPA 0x0000
#define BGCHECKFLAG_GROUND (1 << 0) // Standing on the ground
#define BGCHECKFLAG_GROUND_TOUCH (1 << 1) // Has touched the ground (only active for 1 frame)
#define BGCHECKFLAG_GROUND_LEAVE (1 << 2) // Has left the ground (only active for 1 frame)

View file

@ -3,10 +3,11 @@
#include "ultra64.h"
#include "z64cutscene.h"
#include "z64math.h"
#include "z64save.h"
// these two angle conversion macros are slightly inaccurate
#define CAM_DEG_TO_BINANG(degrees) (s16)((degrees) * 182.04167f + .5f)
#define CAM_DEG_TO_BINANG(degrees) (s16)TRUNCF_BINANG((degrees) * 182.04167f + .5f)
#define CAM_BINANG_TO_DEG(binang) ((f32)(binang) * (360.0001525f / 65535.0f))
#define CAM_STAT_CUT 0
@ -1221,6 +1222,33 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef enum {
/* 0x1 */ ONEPOINT_CS_ACTION_ID_1 = 1,
/* 0x2 */ ONEPOINT_CS_ACTION_ID_2,
/* 0x3 */ ONEPOINT_CS_ACTION_ID_3,
/* 0x4 */ ONEPOINT_CS_ACTION_ID_4,
/* 0x9 */ ONEPOINT_CS_ACTION_ID_9 = 9,
/* 0xA */ ONEPOINT_CS_ACTION_ID_10,
/* 0xB */ ONEPOINT_CS_ACTION_ID_11,
/* 0xC */ ONEPOINT_CS_ACTION_ID_12,
/* 0xD */ ONEPOINT_CS_ACTION_ID_13,
/* 0xF */ ONEPOINT_CS_ACTION_ID_15 = 15,
/* 0x10 */ ONEPOINT_CS_ACTION_ID_16,
/* 0x11 */ ONEPOINT_CS_ACTION_ID_17,
/* 0x12 */ ONEPOINT_CS_ACTION_ID_18,
/* 0x13 */ ONEPOINT_CS_ACTION_ID_19,
/* 0x15 */ ONEPOINT_CS_ACTION_ID_21 = 21,
/* 0x18 */ ONEPOINT_CS_ACTION_ID_24 = 24
} OnePointCsAction;
#define ONEPOINT_CS_ACTION_FLAG_40 0x40
#define ONEPOINT_CS_ACTION_FLAG_BGCHECK 0x80
#define ONEPOINT_CS_ACTION(action, isBit40, checkBg) \
(((action) & 0x1F) | ((isBit40) ? ONEPOINT_CS_ACTION_FLAG_40 : 0) | ((checkBg) ? ONEPOINT_CS_ACTION_FLAG_BGCHECK : 0))
#define ONEPOINT_CS_GET_ACTION(onePointCsFull) ((onePointCsFull)->actionFlags & 0x1F)
/** initFlags
* & 0x00FF = atInitFlags
* & 0xFF00 = eyeInitFlags

View file

@ -1,6 +1,34 @@
#ifndef Z64INTERFACE_H
#define Z64INTERFACE_H
extern u8 _icon_item_staticSegmentRomStart[];
extern u8 _icon_item_24_staticSegmentRomStart[];
// An "item icon" (gItemIcon*Tex) is 32x32 rgba32
#define ITEM_ICON_WIDTH 32
#define ITEM_ICON_HEIGHT 32
#define ITEM_ICON_SIZE (ITEM_ICON_WIDTH * ITEM_ICON_HEIGHT * 4) // The size in bytes of an item icon
/**
* Get the VROM address of the item icon for the specified item.
*
* @param itemId An ItemId value in the range `ITEM_DEKU_STICK`..`ITEM_FISHING_POLE`
*/
#define GET_ITEM_ICON_VROM(itemId) ((uintptr_t)_icon_item_staticSegmentRomStart + ((itemId)*ITEM_ICON_SIZE))
// A "quest icon" (gQuestIcon*Tex) is 24x24 rgba32
#define QUEST_ICON_WIDTH 24
#define QUEST_ICON_HEIGHT 24
#define QUEST_ICON_SIZE (QUEST_ICON_WIDTH * QUEST_ICON_HEIGHT * 4) // The size in bytes of a quest icon
/**
* Get the VROM address of the quest icon for the specified item.
*
* @param itemId An ItemId value in the range `ITEM_MEDALLION_FOREST`..`ITEM_MAGIC_JAR_BIG`
*/
#define GET_QUEST_ICON_VROM(itemId) \
((uintptr_t)_icon_item_24_staticSegmentRomStart + (((itemId)-ITEM_MEDALLION_FOREST) * QUEST_ICON_SIZE))
/**
* Button HUD Positions (Upper Left)
*/

View file

@ -1,14 +1,6 @@
#ifndef Z64ITEM_H
#define Z64ITEM_H
#define ICON_ITEM_TEX_WIDTH 32
#define ICON_ITEM_TEX_HEIGHT 32
#define ICON_ITEM_TEX_SIZE ((ICON_ITEM_TEX_WIDTH * ICON_ITEM_TEX_HEIGHT) * 4) // 32x32 RGBA32 texture
#define ICON_ITEM_24_TEX_WIDTH 24
#define ICON_ITEM_24_TEX_HEIGHT 24
#define ICON_ITEM_24_TEX_SIZE ((ICON_ITEM_24_TEX_WIDTH * ICON_ITEM_24_TEX_HEIGHT) * 4) // 24x24 RGBA32 texture
// Note that z_kaleido_scope_PAL.c assumes that the dimensions and texture format here also matches the dimensions and
// texture format for MAP_NAME_TEX1_*
#define ITEM_NAME_TEX_WIDTH 128

View file

@ -100,9 +100,15 @@ typedef VecSphGeo VecGeo;
#define IS_ZERO(f) (fabsf(f) < 0.008f)
// Casting a float to an integer, when the float value is larger than what the integer type can hold,
// leads to undefined behavior. For example (f32)0x8000 doesn't fit in a s16, so it cannot be cast to s16.
// This isn't an issue with IDO, but is one with for example GCC.
// A partial workaround is to cast to s32 then s16, hoping all binang values used will fit a s32.
#define TRUNCF_BINANG(f) (s16)(s32)(f)
// Angle conversion macros
#define DEG_TO_BINANG(degrees) (s16)((degrees) * (0x8000 / 180.0f))
#define RAD_TO_BINANG(radians) (s16)((radians) * (0x8000 / M_PI))
#define DEG_TO_BINANG(degrees) (s16)TRUNCF_BINANG((degrees) * (0x8000 / 180.0f))
#define RAD_TO_BINANG(radians) (s16)TRUNCF_BINANG((radians) * (0x8000 / M_PI))
#define RAD_TO_DEG(radians) ((radians) * (180.0f / M_PI))
#define DEG_TO_RAD(degrees) ((degrees) * (M_PI / 180.0f))
#define BINANG_TO_DEG(binang) ((f32)(binang) * (180.0f / 0x8000))

View file

@ -352,6 +352,113 @@ typedef enum {
#define LIMB_BUF_COUNT(limbCount) ((ALIGN16((limbCount) * sizeof(Vec3s)) + sizeof(Vec3s) - 1) / sizeof(Vec3s))
#define PLAYER_LIMB_BUF_COUNT LIMB_BUF_COUNT(PLAYER_LIMB_MAX)
typedef enum {
/* 0x00 */ PLAYER_CSMODE_NONE,
/* 0x01 */ PLAYER_CSMODE_1,
/* 0x02 */ PLAYER_CSMODE_2,
/* 0x03 */ PLAYER_CSMODE_3,
/* 0x04 */ PLAYER_CSMODE_4,
/* 0x05 */ PLAYER_CSMODE_5,
/* 0x06 */ PLAYER_CSMODE_6,
/* 0x07 */ PLAYER_CSMODE_7,
/* 0x08 */ PLAYER_CSMODE_8,
/* 0x09 */ PLAYER_CSMODE_9,
/* 0x0A */ PLAYER_CSMODE_10,
/* 0x0B */ PLAYER_CSMODE_11,
/* 0x0C */ PLAYER_CSMODE_12,
/* 0x0D */ PLAYER_CSMODE_13,
/* 0x0E */ PLAYER_CSMODE_14,
/* 0x0F */ PLAYER_CSMODE_15,
/* 0x10 */ PLAYER_CSMODE_16,
/* 0x11 */ PLAYER_CSMODE_17,
/* 0x12 */ PLAYER_CSMODE_18,
/* 0x13 */ PLAYER_CSMODE_19,
/* 0x14 */ PLAYER_CSMODE_20,
/* 0x15 */ PLAYER_CSMODE_21,
/* 0x16 */ PLAYER_CSMODE_22,
/* 0x17 */ PLAYER_CSMODE_23,
/* 0x18 */ PLAYER_CSMODE_24,
/* 0x19 */ PLAYER_CSMODE_25,
/* 0x1A */ PLAYER_CSMODE_26,
/* 0x1B */ PLAYER_CSMODE_27,
/* 0x1C */ PLAYER_CSMODE_28,
/* 0x1D */ PLAYER_CSMODE_29,
/* 0x1E */ PLAYER_CSMODE_30,
/* 0x1F */ PLAYER_CSMODE_31,
/* 0x20 */ PLAYER_CSMODE_32,
/* 0x21 */ PLAYER_CSMODE_33,
/* 0x22 */ PLAYER_CSMODE_34,
/* 0x23 */ PLAYER_CSMODE_35,
/* 0x24 */ PLAYER_CSMODE_36,
/* 0x25 */ PLAYER_CSMODE_37,
/* 0x26 */ PLAYER_CSMODE_38,
/* 0x27 */ PLAYER_CSMODE_39,
/* 0x28 */ PLAYER_CSMODE_40,
/* 0x29 */ PLAYER_CSMODE_41,
/* 0x2A */ PLAYER_CSMODE_42,
/* 0x2B */ PLAYER_CSMODE_43,
/* 0x2C */ PLAYER_CSMODE_44,
/* 0x2D */ PLAYER_CSMODE_45,
/* 0x2E */ PLAYER_CSMODE_46,
/* 0x2F */ PLAYER_CSMODE_47,
/* 0x30 */ PLAYER_CSMODE_48,
/* 0x31 */ PLAYER_CSMODE_49,
/* 0x32 */ PLAYER_CSMODE_50,
/* 0x33 */ PLAYER_CSMODE_51,
/* 0x34 */ PLAYER_CSMODE_52,
/* 0x35 */ PLAYER_CSMODE_53,
/* 0x36 */ PLAYER_CSMODE_54,
/* 0x37 */ PLAYER_CSMODE_55,
/* 0x38 */ PLAYER_CSMODE_56,
/* 0x39 */ PLAYER_CSMODE_57,
/* 0x3A */ PLAYER_CSMODE_58,
/* 0x3B */ PLAYER_CSMODE_59,
/* 0x3C */ PLAYER_CSMODE_60,
/* 0x3D */ PLAYER_CSMODE_61,
/* 0x3E */ PLAYER_CSMODE_62,
/* 0x3F */ PLAYER_CSMODE_63,
/* 0x40 */ PLAYER_CSMODE_64,
/* 0x41 */ PLAYER_CSMODE_65,
/* 0x42 */ PLAYER_CSMODE_66,
/* 0x43 */ PLAYER_CSMODE_67,
/* 0x44 */ PLAYER_CSMODE_68,
/* 0x45 */ PLAYER_CSMODE_69,
/* 0x46 */ PLAYER_CSMODE_70,
/* 0x47 */ PLAYER_CSMODE_71,
/* 0x48 */ PLAYER_CSMODE_72,
/* 0x49 */ PLAYER_CSMODE_73,
/* 0x4A */ PLAYER_CSMODE_74,
/* 0x4B */ PLAYER_CSMODE_75,
/* 0x4C */ PLAYER_CSMODE_76,
/* 0x4D */ PLAYER_CSMODE_77,
/* 0x4E */ PLAYER_CSMODE_78,
/* 0x4F */ PLAYER_CSMODE_79,
/* 0x50 */ PLAYER_CSMODE_80,
/* 0x51 */ PLAYER_CSMODE_81,
/* 0x52 */ PLAYER_CSMODE_82,
/* 0x53 */ PLAYER_CSMODE_83,
/* 0x54 */ PLAYER_CSMODE_84,
/* 0x55 */ PLAYER_CSMODE_85,
/* 0x56 */ PLAYER_CSMODE_86,
/* 0x57 */ PLAYER_CSMODE_87,
/* 0x58 */ PLAYER_CSMODE_88,
/* 0x59 */ PLAYER_CSMODE_89,
/* 0x5A */ PLAYER_CSMODE_90,
/* 0x5B */ PLAYER_CSMODE_91,
/* 0x5C */ PLAYER_CSMODE_92,
/* 0x5D */ PLAYER_CSMODE_93,
/* 0x5E */ PLAYER_CSMODE_94,
/* 0x5F */ PLAYER_CSMODE_95,
/* 0x60 */ PLAYER_CSMODE_96,
/* 0x61 */ PLAYER_CSMODE_97,
/* 0x62 */ PLAYER_CSMODE_98,
/* 0x63 */ PLAYER_CSMODE_99,
/* 0x64 */ PLAYER_CSMODE_100,
/* 0x65 */ PLAYER_CSMODE_101,
/* 0x66 */ PLAYER_CSMODE_102,
/* 0x67 */ PLAYER_CSMODE_MAX
} PlayerCutsceneMode;
typedef struct {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
@ -556,7 +663,7 @@ typedef struct Player {
/* 0x0698 */ f32 targetActorDistance;
/* 0x069C */ char unk_69C[0x004];
/* 0x06A0 */ f32 unk_6A0;
/* 0x06A4 */ f32 unk_6A4;
/* 0x06A4 */ f32 closestSecretDistSq;
/* 0x06A8 */ Actor* unk_6A8;
/* 0x06AC */ s8 unk_6AC;
/* 0x06AD */ u8 unk_6AD;

2
spec
View file

@ -36,7 +36,7 @@ beginseg
include "build/src/libultra/os/initialize.o"
include "build/src/libultra/libc/ll.o"
include "build/src/libultra/os/exceptasm.o"
include "build/src/libultra/os/dequeuethread.o"
include "build/src/libultra/os/thread.o"
include "build/src/libultra/os/destroythread.o"
include "build/src/libultra/libc/bzero.o"
include "build/src/libultra/os/parameters.o"

View file

@ -78,136 +78,141 @@ u32 gGsFlagsMasks[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };
u32 gGsFlagsShifts[] = { 0, 8, 16, 24 };
void* gItemIcons[] = {
gDekuStickIconTex,
gDekuNutIconTex,
gBombIconTex,
gFairyBowIconTex,
gFireArrowIconTex,
gDinsFireIconTex,
gFairySlingshotIconTex,
gFairyOcarinaIconTex,
gOcarinaofTimeIconTex,
gBombchuIconTex,
gHookshotIconTex,
gLongshotIconTex,
gIceArrowIconTex,
gFaroresWindIconTex,
gBoomerangIconTex,
gLensofTruthIconTex,
gMagicBeansIconTex,
gMegatonHammerIconTex,
gLightArrowIconTex,
gNayrusLoveIconTex,
gEmptyBottleIconTex,
gRedPotionIconTex,
gGreenPotionIconTex,
gBluePotionIconTex,
gBottledFairyIconTex,
gFishIconTex,
gMilkFullIconTex,
gRutosLetterIconTex,
gBlueFireIconTex,
gBugIconTex,
gBigPoeIconTex,
gMilkhalfIconTex,
gPoeIconTex,
gWeirdEggIconTex,
gCuccoIconTex,
gZeldasLetterIconTex,
gKeatonMaskIconTex,
gSkullMaskIconTex,
gSpookyMaskIconTex,
gBunnyHoodIconTex,
gGoronMaskIconTex,
gZoraMaskIconTex,
gGerudoMaskIconTex,
gMaskofTruthIconTex,
gSoldOutIconTex,
gPocketEggIconTex,
gPocketCuccoIconTex,
gCojiroIconTex,
gOddMushroomIconTex,
gOddPotionIconTex,
gPoachersSawIconTex,
gBrokenBiggoronSwordIconTex,
gPrescriptionIconTex,
gEyeBallFrogIconTex,
gEyeDropsIconTex,
gClaimCheckIconTex,
gFairyBowFireIconTex,
gFairyBowIceIconTex,
gFairyBowLightIconTex,
gKokiriSwordIconTex,
gMasterSwordIconTex,
gBiggoronSwordIconTex,
gDekuShieldIconTex,
gHylianShieldIconTex,
gMirrorShieldIconTex,
gKokiriTunicIconTex,
gGoronTunicIconTex,
gZoraTunicIconTex,
gKokiriBootsIconTex,
gIronBootsIconTex,
gHoverBootsIconTex,
gBulletBag30IconTex,
gBulletBag40IconTex,
gBulletBag50IconTex,
gQuiver30IconTex,
gQuiver40IconTex,
gQuiver50IconTex,
gBombBag20IconTex,
gBombBag30IconTex,
gBombBag40IconTex,
gGoronsBraceletIconTex,
gSilverGauntletsIconTex,
gGoldenGauntletsIconTex,
gSilverScaleIconTex,
gGoldenScaleIconTex,
gBrokenGiantsKnifeIconTex,
gAdultsWalletIconTex,
gGiantsWalletIconTex,
gDekuSeedsIconTex,
gFishingPoleIconTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gSongNoteTex,
gForestMedallionIconTex,
gFireMedallionIconTex,
gWaterMedallionIconTex,
gSpiritMedallionIconTex,
gShadowMedallionIconTex,
gLightMedallionIconTex,
gKokiriEmeraldIconTex,
gGoronRubyIconTex,
gZoraSapphireIconTex,
gStoneOfAgonyIconTex,
gGerudosCardIconTex,
gGoldSkulltulaIconTex,
gHeartContainerIconTex,
gUnusedPieceOfHeartIconTex,
gBossKeyIconTex,
gDungeonMapIconTex,
gCompassIconTex,
gBossKeyIconTex,
gSmallMagicJarIconTex,
gBigMagicJarIconTex,
gHeartPieceIcon1Tex,
gHeartPieceIcon2Tex,
gHeartPieceIcon3Tex,
gOcarinaCUpTex,
gOcarinaCDownTex,
gOcarinaCLeftTex,
gOcarinaCRightTex,
gOcarinaATex,
// icon_item_static 32x32 rgba32
gItemIconDekuStickTex, // ITEM_DEKU_STICK
gItemIconDekuNutTex, // ITEM_DEKU_NUT
gItemIconBombTex, // ITEM_BOMB
gItemIconBowTex, // ITEM_BOW
gItemIconArrowFireTex, // ITEM_ARROW_FIRE
gItemIconDinsFireTex, // ITEM_DINS_FIRE
gItemIconSlingshotTex, // ITEM_SLINGSHOT
gItemIconOcarinaFairyTex, // ITEM_OCARINA_FAIRY
gItemIconOcarinaOfTimeTex, // ITEM_OCARINA_OF_TIME
gItemIconBombchuTex, // ITEM_BOMBCHU
gItemIconHookshotTex, // ITEM_HOOKSHOT
gItemIconLongshotTex, // ITEM_LONGSHOT
gItemIconArrowIceTex, // ITEM_ARROW_ICE
gItemIconFaroresWindTex, // ITEM_FARORES_WIND
gItemIconBoomerangTex, // ITEM_BOOMERANG
gItemIconLensOfTruthTex, // ITEM_LENS_OF_TRUTH
gItemIconMagicBeanTex, // ITEM_MAGIC_BEAN
gItemIconHammerTex, // ITEM_HAMMER
gItemIconArrowLightTex, // ITEM_ARROW_LIGHT
gItemIconNayrusLoveTex, // ITEM_NAYRUS_LOVE
gItemIconBottleEmptyTex, // ITEM_BOTTLE_EMPTY
gItemIconBottlePotionRedTex, // ITEM_BOTTLE_POTION_RED
gItemIconBottlePotionGreenTex, // ITEM_BOTTLE_POTION_GREEN
gItemIconBottlePotionBlueTex, // ITEM_BOTTLE_POTION_BLUE
gItemIconBottleFairyTex, // ITEM_BOTTLE_FAIRY
gItemIconBottleFishTex, // ITEM_BOTTLE_FISH
gItemIconBottleMilkFullTex, // ITEM_BOTTLE_MILK_FULL
gItemIconBottleRutosLetterTex, // ITEM_BOTTLE_RUTOS_LETTER
gItemIconBottleBlueFireTex, // ITEM_BOTTLE_BLUE_FIRE
gItemIconBottleBugTex, // ITEM_BOTTLE_BUG
gItemIconBottleBigPoeTex, // ITEM_BOTTLE_BIG_POE
gItemIconBottleMilkHalfTex, // ITEM_BOTTLE_MILK_HALF
gItemIconBottlePoeTex, // ITEM_BOTTLE_POE
gItemIconWeirdEggTex, // ITEM_WEIRD_EGG
gItemIconChickenTex, // ITEM_CHICKEN
gItemIconZeldasLetterTex, // ITEM_ZELDAS_LETTER
gItemIconMaskKeatonTex, // ITEM_MASK_KEATON
gItemIconMaskSkullTex, // ITEM_MASK_SKULL
gItemIconMaskSpookyTex, // ITEM_MASK_SPOOKY
gItemIconMaskBunnyHoodTex, // ITEM_MASK_BUNNY_HOOD
gItemIconMaskGoronTex, // ITEM_MASK_GORON
gItemIconMaskZoraTex, // ITEM_MASK_ZORA
gItemIconMaskGerudoTex, // ITEM_MASK_GERUDO
gItemIconMaskTruthTex, // ITEM_MASK_TRUTH
gItemIconSoldOutTex, // ITEM_SOLD_OUT
gItemIconPocketEggTex, // ITEM_POCKET_EGG
gItemIconPocketCuccoTex, // ITEM_POCKET_CUCCO
gItemIconCojiroTex, // ITEM_COJIRO
gItemIconOddMushroomTex, // ITEM_ODD_MUSHROOM
gItemIconOddPotionTex, // ITEM_ODD_POTION
gItemIconPoachersSawTex, // ITEM_POACHERS_SAW
gItemIconBrokenGoronsSwordTex, // ITEM_BROKEN_GORONS_SWORD
gItemIconPrescriptionTex, // ITEM_PRESCRIPTION
gItemIconEyeballFrogTex, // ITEM_EYEBALL_FROG
gItemIconEyeDropsTex, // ITEM_EYE_DROPS
gItemIconClaimCheckTex, // ITEM_CLAIM_CHECK
gItemIconBowFireTex, // ITEM_BOW_FIRE
gItemIconBowIceTex, // ITEM_BOW_ICE
gItemIconBowLightTex, // ITEM_BOW_LIGHT
gItemIconSwordKokiriTex, // ITEM_SWORD_KOKIRI
gItemIconSwordMasterTex, // ITEM_SWORD_MASTER
gItemIconSwordBiggoronTex, // ITEM_SWORD_BIGGORON
gItemIconShieldDekuTex, // ITEM_SHIELD_DEKU
gItemIconShieldHylianTex, // ITEM_SHIELD_HYLIAN
gItemIconShieldMirrorTex, // ITEM_SHIELD_MIRROR
gItemIconTunicKokiriTex, // ITEM_TUNIC_KOKIRI
gItemIconTunicGoronTex, // ITEM_TUNIC_GORON
gItemIconTunicZoraTex, // ITEM_TUNIC_ZORA
gItemIconBootsKokiriTex, // ITEM_BOOTS_KOKIRI
gItemIconBootsIronTex, // ITEM_BOOTS_IRON
gItemIconBootsHoverTex, // ITEM_BOOTS_HOVER
gItemIconBulletBag30Tex, // ITEM_BULLET_BAG_30
gItemIconBulletBag40Tex, // ITEM_BULLET_BAG_40
gItemIconBulletBag50Tex, // ITEM_BULLET_BAG_50
gItemIconQuiver30Tex, // ITEM_QUIVER_30
gItemIconQuiver40Tex, // ITEM_QUIVER_40
gItemIconQuiver50Tex, // ITEM_QUIVER_50
gItemIconBombBag20Tex, // ITEM_BOMB_BAG_20
gItemIconBombBag30Tex, // ITEM_BOMB_BAG_30
gItemIconBombBag40Tex, // ITEM_BOMB_BAG_40
gItemIconGoronsBraceletTex, // ITEM_STRENGTH_GORONS_BRACELET
gItemIconSilverGauntletsTex, // ITEM_STRENGTH_SILVER_GAUNTLETS
gItemIconGoldenGauntletsTex, // ITEM_STRENGTH_GOLD_GAUNTLETS
gItemIconScaleSilverTex, // ITEM_SCALE_SILVER
gItemIconScaleGoldenTex, // ITEM_SCALE_GOLDEN
gItemIconBrokenGiantsKnifeTex, // ITEM_GIANTS_KNIFE
gItemIconAdultsWalletTex, // ITEM_ADULTS_WALLET
gItemIconGiantsWalletTex, // ITEM_GIANTS_WALLET
gItemIconDekuSeedsTex, // ITEM_DEKU_SEEDS
gItemIconFishingPoleTex, // ITEM_FISHING_POLE
// icon_item_static 16x24 ia8
gSongNoteTex, // ITEM_SONG_MINUET
gSongNoteTex, // ITEM_SONG_BOLERO
gSongNoteTex, // ITEM_SONG_SERENADE
gSongNoteTex, // ITEM_SONG_REQUIEM
gSongNoteTex, // ITEM_SONG_NOCTURNE
gSongNoteTex, // ITEM_SONG_PRELUDE
gSongNoteTex, // ITEM_SONG_LULLABY
gSongNoteTex, // ITEM_SONG_EPONA
gSongNoteTex, // ITEM_SONG_SARIA
gSongNoteTex, // ITEM_SONG_SUN
gSongNoteTex, // ITEM_SONG_TIME
gSongNoteTex, // ITEM_SONG_STORMS
// icon_item_24static 24x24 rgba32
gQuestIconMedallionForestTex, // ITEM_MEDALLION_FOREST
gQuestIconMedallionFireTex, // ITEM_MEDALLION_FIRE
gQuestIconMedallionWaterTex, // ITEM_MEDALLION_WATER
gQuestIconMedallionSpiritTex, // ITEM_MEDALLION_SPIRIT
gQuestIconMedallionShadowTex, // ITEM_MEDALLION_SHADOW
gQuestIconMedallionLightTex, // ITEM_MEDALLION_LIGHT
gQuestIconKokiriEmeraldTex, // ITEM_KOKIRI_EMERALD
gQuestIconGoronRubyTex, // ITEM_GORON_RUBY
gQuestIconZoraSapphireTex, // ITEM_ZORA_SAPPHIRE
gQuestIconStoneOfAgonyTex, // ITEM_STONE_OF_AGONY
gQuestIconGerudosCardTex, // ITEM_GERUDOS_CARD
gQuestIconGoldSkulltulaTex, // ITEM_SKULL_TOKEN
gQuestIconHeartContainerTex, // ITEM_HEART_CONTAINER
gQuestIconHeartPieceTex, // ITEM_HEART_PIECE
gQuestIconDungeonBossKeyTex, // ITEM_DUNGEON_BOSS_KEY
gQuestIconDungeonMapTex, // ITEM_DUNGEON_COMPASS (swapped with map (inconsequential))
gQuestIconDungeonCompassTex, // ITEM_DUNGEON_MAP (swapped with compass (inconsequential))
gQuestIconDungeonBossKeyTex, // ITEM_SMALL_KEY (but texture is boss key (inconsequential))
gQuestIconMagicJarSmallTex, // ITEM_MAGIC_JAR_SMALL
gQuestIconMagicJarBigTex, // ITEM_MAGIC_JAR_BIG
// icon_item_static 48x48 ia8
gHeartPieceIcon1Tex, // ITEM_HEART_PIECE_2
gHeartPieceIcon2Tex, // ITEM_INVALID_1
gHeartPieceIcon3Tex, // ITEM_INVALID_2
// parameter_static 16x16 ia8
gOcarinaBtnIconCUpTex, // ITEM_INVALID_3
gOcarinaBtnIconCDownTex, // ITEM_INVALID_4
gOcarinaBtnIconCLeftTex, // ITEM_INVALID_5
gOcarinaBtnIconCRightTex, // ITEM_INVALID_6
gOcarinaBtnIconATex, // ITEM_INVALID_7
};
// Used to map item IDs to inventory slots

View file

@ -1025,7 +1025,7 @@ void Actor_MountHorse(PlayState* play, Player* player, Actor* horse) {
}
s32 func_8002DEEC(Player* player) {
return (player->stateFlags1 & (PLAYER_STATE1_7 | PLAYER_STATE1_29)) || (player->csMode != 0);
return (player->stateFlags1 & (PLAYER_STATE1_7 | PLAYER_STATE1_29)) || (player->csMode != PLAYER_CSMODE_NONE);
}
void func_8002DF18(PlayState* play, Player* player) {
@ -1570,7 +1570,30 @@ u32 Actor_HasParent(Actor* actor, PlayState* play) {
}
}
s32 func_8002F434(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange) {
/**
* This function covers various interactions with the player actor, using Get Item IDs (see `GetItemID` enum).
* It is typically used to give items to the player, but also has other purposes.
*
* This function carries a get item request to the player actor if context allows it (e.g. the player is in range and
* not busy with certain things). The player actor performs the requested action itself.
*
* The following description of what the `getItemId` values can do is provided here for completeness, but these
* behaviors are entirely out of the scope of this function. All behavior is defined by the player actor.
*
* - Positive values (`GI_NONE < getItemId < GI_MAX`):
* Give an item to the player. The player may not get it immediately (for example if diving), but is expected to
* in the near future.
* - Negative values (`-GI_MAX < getItemId < GI_NONE`):
* Used by treasure chests to indicate the chest can be opened (by pressing A).
* The item gotten corresponds to the positive Get Item ID `abs(getItemId)`.
* - `GI_NONE`:
* Allows the player to pick up the actor (by pressing A), to carry it around.
* - `GI_MAX`:
* Allows the player to catch specific actors in a bottle.
*
* @return true If the player actor is capable of accepting the offer.
*/
s32 Actor_OfferGetItem(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange) {
Player* player = GET_PLAYER(play);
if (!(player->stateFlags1 & (PLAYER_STATE1_7 | PLAYER_STATE1_12 | PLAYER_STATE1_13 | PLAYER_STATE1_14 |
@ -1596,12 +1619,12 @@ s32 func_8002F434(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32
return false;
}
void func_8002F554(Actor* actor, PlayState* play, s32 getItemId) {
func_8002F434(actor, play, getItemId, 50.0f, 10.0f);
s32 Actor_OfferGetItemNearby(Actor* actor, PlayState* play, s32 getItemId) {
return Actor_OfferGetItem(actor, play, getItemId, 50.0f, 10.0f);
}
void func_8002F580(Actor* actor, PlayState* play) {
func_8002F554(actor, play, GI_NONE);
s32 Actor_OfferCarry(Actor* actor, PlayState* play) {
return Actor_OfferGetItemNearby(actor, play, GI_NONE);
}
u32 Actor_HasNoParent(Actor* actor, PlayState* play) {
@ -1627,11 +1650,11 @@ void func_8002F5C4(Actor* actorA, Actor* actorB, PlayState* play) {
actorA->parent = NULL;
}
void func_8002F5F0(Actor* actor, PlayState* play) {
void Actor_SetClosestSecretDistance(Actor* actor, PlayState* play) {
Player* player = GET_PLAYER(play);
if (actor->xyzDistToPlayerSq < player->unk_6A4) {
player->unk_6A4 = actor->xyzDistToPlayerSq;
if (actor->xyzDistToPlayerSq < player->closestSecretDistSq) {
player->closestSecretDistSq = actor->xyzDistToPlayerSq;
}
}
@ -2218,25 +2241,25 @@ void Actor_Draw(PlayState* play, Actor* actor) {
if (actor->colorFilterTimer != 0) {
Color_RGBA8 color = { 0, 0, 0, 255 };
if (actor->colorFilterParams & 0x8000) {
color.r = color.g = color.b = ((actor->colorFilterParams & 0x1F00) >> 5) | 7;
} else if (actor->colorFilterParams & 0x4000) {
color.r = ((actor->colorFilterParams & 0x1F00) >> 5) | 7;
if (actor->colorFilterParams & COLORFILTER_COLORFLAG_GRAY) {
color.r = color.g = color.b = COLORFILTER_GET_COLORINTENSITY(actor->colorFilterParams) | 7;
} else if (actor->colorFilterParams & COLORFILTER_COLORFLAG_RED) {
color.r = COLORFILTER_GET_COLORINTENSITY(actor->colorFilterParams) | 7;
} else {
color.b = ((actor->colorFilterParams & 0x1F00) >> 5) | 7;
color.b = COLORFILTER_GET_COLORINTENSITY(actor->colorFilterParams) | 7;
}
if (actor->colorFilterParams & 0x2000) {
func_80026860(play, &color, actor->colorFilterTimer, actor->colorFilterParams & 0xFF);
if (actor->colorFilterParams & COLORFILTER_BUFFLAG_XLU) {
func_80026860(play, &color, actor->colorFilterTimer, COLORFILTER_GET_DURATION(actor->colorFilterParams));
} else {
func_80026400(play, &color, actor->colorFilterTimer, actor->colorFilterParams & 0xFF);
func_80026400(play, &color, actor->colorFilterTimer, COLORFILTER_GET_DURATION(actor->colorFilterParams));
}
}
actor->draw(actor, play);
if (actor->colorFilterTimer != 0) {
if (actor->colorFilterParams & 0x2000) {
if (actor->colorFilterParams & COLORFILTER_BUFFLAG_XLU) {
func_80026A6C(play);
} else {
func_80026608(play);
@ -2500,7 +2523,10 @@ void func_800315AC(PlayState* play, ActorContext* actorCtx) {
CLOSE_DISPS(play->state.gfxCtx, "../z_actor.c", 6563);
}
void func_80031A28(PlayState* play, ActorContext* actorCtx) {
/**
* Kill every actor which depends on an object that is not loaded.
*/
void Actor_KillAllWithMissingObject(PlayState* play, ActorContext* actorCtx) {
Actor* actor;
s32 i;
@ -2530,6 +2556,9 @@ void Actor_FreezeAllEnemies(PlayState* play, ActorContext* actorCtx, s32 duratio
}
}
/**
* Kill actors on room change and update flags accordingly
*/
void func_80031B14(PlayState* play, ActorContext* actorCtx) {
Actor* actor;
s32 i;
@ -3633,12 +3662,12 @@ void func_8003424C(PlayState* play, Vec3f* arg1) {
CollisionCheck_SpawnShieldParticlesMetal(play, arg1);
}
void Actor_SetColorFilter(Actor* actor, s16 colorFlag, s16 colorIntensityMax, s16 xluFlag, s16 duration) {
if ((colorFlag == 0x8000) && !(colorIntensityMax & 0x8000)) {
void Actor_SetColorFilter(Actor* actor, s16 colorFlag, s16 colorIntensityMax, s16 bufFlag, s16 duration) {
if ((colorFlag == COLORFILTER_COLORFLAG_GRAY) && !(colorIntensityMax & COLORFILTER_INTENSITY_FLAG)) {
Audio_PlayActorSfx2(actor, NA_SE_EN_LIGHT_ARROW_HIT);
}
actor->colorFilterParams = colorFlag | xluFlag | ((colorIntensityMax & 0xF8) << 5) | duration;
actor->colorFilterParams = colorFlag | bufFlag | ((colorIntensityMax & 0xF8) << 5) | duration;
actor->colorFilterTimer = duration;
}
@ -4061,7 +4090,7 @@ s32 func_80035124(Actor* actor, PlayState* play) {
ret = 1;
} else {
actor->shape.rot.x = actor->shape.rot.z = 0;
func_8002F580(actor, play);
Actor_OfferCarry(actor, play);
}
break;
case 1:

View file

@ -5260,7 +5260,7 @@ s32 Camera_Unique9(Camera* camera) {
CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY(rwData->curKeyFrame->unk_01), 0));
} else if (camera->player->stateFlags1 & PLAYER_STATE1_27 &&
player->currentBoots != PLAYER_BOOTS_IRON) {
func_8002DF38(camera->play, camera->target, 8);
func_8002DF38(camera->play, camera->target, PLAYER_CSMODE_8);
osSyncPrintf("camera: demo: player demo set WAIT\n");
} else {
osSyncPrintf("camera: demo: player demo set %d\n", rwData->curKeyFrame->unk_01);
@ -5464,9 +5464,9 @@ s32 Camera_Unique9(Camera* camera) {
rwData->rollTarget = CAM_DEG_TO_BINANG(rwData->curKeyFrame->rollTargetInit);
}
action = rwData->curKeyFrame->actionFlags & 0x1F;
action = ONEPOINT_CS_GET_ACTION(rwData->curKeyFrame);
switch (action) {
case 15:
case ONEPOINT_CS_ACTION_ID_15:
// static copy to at/eye/fov/roll
*at = rwData->atTarget;
*eyeNext = rwData->eyeTarget;
@ -5474,7 +5474,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->roll = rwData->rollTarget;
camera->stateFlags |= CAM_STATE_10;
break;
case 21:
case ONEPOINT_CS_ACTION_ID_21:
// same as 15, but with unk_38 ?
if (rwData->unk_38 == 0) {
rwData->unk_38 = 1;
@ -5487,7 +5488,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->fov = rwData->fovTarget;
camera->roll = rwData->rollTarget;
break;
case 16:
case ONEPOINT_CS_ACTION_ID_16:
// same as 21, but don't unset CAM_STATE_3 on stateFlags
if (rwData->unk_38 == 0) {
rwData->unk_38 = 1;
@ -5500,7 +5502,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->fov = rwData->fovTarget;
camera->roll = rwData->rollTarget;
break;
case 1:
case ONEPOINT_CS_ACTION_ID_1:
// linear interpolation of eye/at using the geographic coordinates
OLib_Vec3fDiffToVecGeo(&eyeNextAtOffset, at, eyeNext);
OLib_Vec3fDiffToVecGeo(&rwData->atEyeOffsetTarget, &rwData->atTarget, &rwData->eyeTarget);
@ -5512,7 +5515,8 @@ s32 Camera_Unique9(Camera* camera) {
eyeNextAtOffset.yaw + ((s16)(rwData->atEyeOffsetTarget.yaw - eyeNextAtOffset.yaw) * invKeyFrameTimer);
Camera_AddVecGeoToVec3f(&eyeTarget, at, &scratchGeo);
goto setEyeNext;
case 2:
case ONEPOINT_CS_ACTION_ID_2:
// linear interpolation of eye/at using the eyeTarget
invKeyFrameTimer = 1.0f / rwData->keyFrameTimer;
eyeTarget.x = F32_LERPIMP(camera->eyeNext.x, rwData->eyeTarget.x, invKeyFrameTimer);
@ -5527,8 +5531,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->eyeNext.z =
Camera_LERPFloorF(eyeTarget.z, camera->eyeNext.z, rwData->curKeyFrame->lerpStepScale, 1.0f);
FALLTHROUGH;
case 9:
case 10:
case ONEPOINT_CS_ACTION_ID_9:
case ONEPOINT_CS_ACTION_ID_10:
// linear interpolation of at/fov/roll
invKeyFrameTimer = 1.0f / rwData->keyFrameTimer;
atTarget.x = F32_LERPIMP(camera->at.x, rwData->atTarget.x, invKeyFrameTimer);
@ -5542,7 +5546,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->roll = Camera_LERPFloorS(BINANG_LERPIMPINV(camera->roll, rwData->rollTarget, rwData->keyFrameTimer),
camera->roll, rwData->curKeyFrame->lerpStepScale, 0xA);
break;
case 4:
case ONEPOINT_CS_ACTION_ID_4:
// linear interpolation of eye/at/fov/roll using the step scale, and spherical coordinates
OLib_Vec3fDiffToVecGeo(&eyeNextAtOffset, at, eyeNext);
OLib_Vec3fDiffToVecGeo(&rwData->atEyeOffsetTarget, &rwData->atTarget, &rwData->eyeTarget);
@ -5554,7 +5559,8 @@ s32 Camera_Unique9(Camera* camera) {
rwData->curKeyFrame->lerpStepScale, 1);
Camera_AddVecGeoToVec3f(eyeNext, at, &scratchGeo);
goto setAtFOVRoll;
case 3:
case ONEPOINT_CS_ACTION_ID_3:
// linear interplation of eye/at/fov/roll using the step scale using eyeTarget
camera->eyeNext.x =
Camera_LERPCeilF(rwData->eyeTarget.x, camera->eyeNext.x, rwData->curKeyFrame->lerpStepScale, 1.0f);
@ -5563,8 +5569,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->eyeNext.z =
Camera_LERPCeilF(rwData->eyeTarget.z, camera->eyeNext.z, rwData->curKeyFrame->lerpStepScale, 1.0f);
FALLTHROUGH;
case 11:
case 12:
case ONEPOINT_CS_ACTION_ID_11:
case ONEPOINT_CS_ACTION_ID_12:
setAtFOVRoll:
// linear interpolation of at/fov/roll using the step scale.
camera->at.x = Camera_LERPCeilF(rwData->atTarget.x, camera->at.x, rwData->curKeyFrame->lerpStepScale, 1.0f);
@ -5573,7 +5579,8 @@ s32 Camera_Unique9(Camera* camera) {
camera->fov = Camera_LERPCeilF(rwData->fovTarget, camera->fov, rwData->curKeyFrame->lerpStepScale, 1.0f);
camera->roll = Camera_LERPCeilS(rwData->rollTarget, camera->roll, rwData->curKeyFrame->lerpStepScale, 1);
break;
case 13:
case ONEPOINT_CS_ACTION_ID_13:
// linear interpolation of at, with rotation around eyeTargetInit.y
camera->at.x = Camera_LERPCeilF(rwData->atTarget.x, camera->at.x, rwData->curKeyFrame->lerpStepScale, 1.0f);
camera->at.y += camera->playerPosDelta.y * rwData->curKeyFrame->lerpStepScale;
@ -5603,18 +5610,20 @@ s32 Camera_Unique9(Camera* camera) {
camera->fov, rwData->curKeyFrame->lerpStepScale, 1.0f);
camera->roll = Camera_LERPCeilS(rwData->rollTarget, camera->roll, rwData->curKeyFrame->lerpStepScale, 1);
break;
case 24:
case ONEPOINT_CS_ACTION_ID_24:
// Set current keyframe to the roll target?
rwData->curKeyFrameIdx = rwData->rollTarget;
break;
case 19: {
case ONEPOINT_CS_ACTION_ID_19: {
// Change the parent camera (or default)'s mode to normal
s32 camIdx = camera->parentCamId <= CAM_ID_NONE ? CAM_ID_MAIN : camera->parentCamId;
Camera_ChangeModeFlags(camera->play->cameraPtrs[camIdx], CAM_MODE_NORMAL, 1);
}
FALLTHROUGH;
case 18: {
case ONEPOINT_CS_ACTION_ID_18: {
// copy the current camera to the parent (or default)'s camera.
s32 camIdx = camera->parentCamId <= CAM_ID_NONE ? CAM_ID_MAIN : camera->parentCamId;
Camera* cam = camera->play->cameraPtrs[camIdx];
@ -5632,11 +5641,11 @@ s32 Camera_Unique9(Camera* camera) {
*eye = *eyeNext;
if (rwData->curKeyFrame->actionFlags & 0x80) {
if (rwData->curKeyFrame->actionFlags & ONEPOINT_CS_ACTION_FLAG_BGCHECK) {
Camera_BGCheck(camera, at, eye);
}
if (rwData->curKeyFrame->actionFlags & 0x40) {
if (rwData->curKeyFrame->actionFlags & ONEPOINT_CS_ACTION_FLAG_40) {
// Set the player's position
camera->player->actor.world.pos.x = rwData->playerPos.x;
camera->player->actor.world.pos.z = rwData->playerPos.z;
@ -6072,7 +6081,7 @@ s32 Camera_Demo5(Camera* camera) {
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D79C);
if ((targetScreenPosX < 0x15) || (targetScreenPosX >= 0x12C) || (targetScreenPosY < 0x29) ||
(targetScreenPosY >= 0xC8)) {
D_8011D79C[0].actionFlags = 0x41;
D_8011D79C[0].actionFlags = ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, false);
D_8011D79C[0].atTargetInit.y = -30.0f;
D_8011D79C[0].atTargetInit.x = 0.0f;
D_8011D79C[0].atTargetInit.z = 0.0f;
@ -6156,8 +6165,8 @@ s32 Camera_Demo5(Camera* camera) {
targethead.pos.x += 50.0f * Math_SinS(sp4A - 0x7FFF);
targethead.pos.z += 50.0f * Math_CosS(sp4A - 0x7FFF);
if (Camera_BGCheck(camera, &playerhead.pos, &targethead.pos)) {
D_8011D954[1].actionFlags = 0xC1;
D_8011D954[2].actionFlags = 0x8F;
D_8011D954[1].actionFlags = ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, true);
D_8011D954[2].actionFlags = ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true);
} else {
D_8011D954[2].timerInit = (s16)(eyeTargetDist * 0.004f) + 6;
}
@ -6181,7 +6190,7 @@ s32 Camera_Demo5(Camera* camera) {
Actor_GetFocus(&targethead, camera->target);
if (Camera_BGCheck(camera, &playerhead.pos, &targethead.pos)) {
D_8011D9F4[1].timerInit = 4;
D_8011D9F4[1].actionFlags = 0x8F;
D_8011D9F4[1].actionFlags = ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true);
} else {
t = eyeTargetDist * 0.005f;
D_8011D9F4[1].timerInit = t + 8;
@ -6218,14 +6227,14 @@ s32 Camera_Demo5(Camera* camera) {
framesDiff = camera->play->state.frames - sDemo5PrevAction12Frame;
if (player->stateFlags1 & PLAYER_STATE1_11) {
// holding object over head.
func_8002DF54(camera->play, camera->target, 8);
func_8002DF54(camera->play, camera->target, PLAYER_CSMODE_8);
} else if (ABS(framesDiff) > 3000) {
func_8002DF54(camera->play, camera->target, 12);
func_8002DF54(camera->play, camera->target, PLAYER_CSMODE_12);
} else {
func_8002DF54(camera->play, camera->target, 69);
func_8002DF54(camera->play, camera->target, PLAYER_CSMODE_69);
}
} else {
func_8002DF54(camera->play, camera->target, 1);
func_8002DF54(camera->play, camera->target, PLAYER_CSMODE_1);
}
}
@ -6285,7 +6294,7 @@ s32 Camera_Demo6(Camera* camera) {
FALLTHROUGH;
case 1:
if (stateTimers[camera->animState] < rwData->animTimer) {
func_8002DF54(camera->play, &camera->player->actor, 8);
func_8002DF54(camera->play, &camera->player->actor, PLAYER_CSMODE_8);
Actor_GetWorld(&focusPosRot, camFocus);
rwData->atTarget.x = focusPosRot.pos.x;
rwData->atTarget.y = focusPosRot.pos.y - 20.0f;
@ -7813,8 +7822,8 @@ void Camera_Finish(Camera* camera) {
player->actor.freezeTimer = 0;
player->stateFlags1 &= ~PLAYER_STATE1_29;
if (player->csMode != 0) {
func_8002DF54(camera->play, &player->actor, 7);
if (player->csMode != PLAYER_CSMODE_NONE) {
func_8002DF54(camera->play, &player->actor, PLAYER_CSMODE_7);
osSyncPrintf("camera: player demo end!!\n");
}

View file

@ -2675,105 +2675,311 @@ s32 sDemo5PrevSfxFrame = -200;
// target is player, far from eye
OnePointCsFull D_8011D6AC[] = {
{ // initflags & 0x00FF (at): 2, atTarget is view lookAt + atInit
// initFlags & 0xFF00 (eye): none
// action: 15, copy at, eye, roll, fov to camera
// result: eye remains in the same locaiton, at is View's lookAt
0x8F,
0xFF,
0x0002,
0x0001,
0x0000,
60.0f,
1.0f,
{ 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f } },
{ // initFlags & 0x00FF (at): 3, atTarget is camera's current at + atInit
// initFlags & 0xFF00 (eye): 3, eyeTarget is the camera's current eye + eyeInit
// action: interplate eye and at.
// result: eye and at's y interpolate to become +20 from their current location.
0x81,
0xFF,
0x0303,
0x0013,
0x0000,
45.0f,
1.0f,
{ 0.0f, 20.0f, 0.0f },
{ 0.0f, 20.0f, 0.0f } },
{ // initFlags & 0x00FF (at): 0 none
// initFlags & 0xFF00 (eye): 0 none
// action: 18, copy this camera to default camera.
0x12,
0xFF,
0x0000,
0x0001,
0x0000,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f } },
{
// initflags & 0x00FF (at): 2, atTarget is view lookAt + atInit
// initFlags & 0xFF00 (eye): none
// action: 15, copy at, eye, roll, fov to camera
// result: eye remains in the same location, at is View's lookAt
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
0xFF,
0x0002,
1,
0,
60.0f,
1.0f,
{ 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f },
},
{
// initFlags & 0x00FF (at): 3, atTarget is camera's current at + atInit
// initFlags & 0xFF00 (eye): 3, eyeTarget is the camera's current eye + eyeInit
// action: interpolate eye and at.
// result: eye and at's y interpolate to become +20 from their current location.
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
0xFF,
0x0303,
19,
0,
45.0f,
1.0f,
{ 0.0f, 20.0f, 0.0f },
{ 0.0f, 20.0f, 0.0f },
},
{
// initFlags & 0x00FF (at): 0 none
// initFlags & 0xFF00 (eye): 0 none
// action: 18, copy this camera to default camera.
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// target is player close to current eye
OnePointCsFull D_8011D724[] = {
{ 0x8F, 0xFF, 0x2424, 0x0001, 0x0000, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 10.0f, -20.0f } },
{ 0x81, 0xFF, 0x2121, 0x0013, 0x0000, 50.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 0.0f, 60.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
0xFF,
0x2424,
1,
0,
60.0f,
1.0f,
{ 0.0f, 0.0f, 0.0f },
{ 0.0f, 10.0f, -20.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
0xFF,
0x2121,
19,
0,
50.0f,
1.0f,
{ 0.0f, -10.0f, 0.0f },
{ 0.0f, 0.0f, 60.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// target is close to player
OnePointCsFull D_8011D79C[] = {
{ 0xCF, 0xFF, 0x0002, 0x0001, 0x0000, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } },
{ 0xC1, 0xFF, 0x0303, 0x0013, 0x0000, 45.0f, 1.0f, { 0.0f, -20.0f, 0.0f }, { 0.0f, -10.0f, 5.0f } },
{
0xC1,
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, true),
0xFF,
0x0002,
1,
0,
60.0f,
1.0f,
{ 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, true),
0xFF,
0x0303,
0x0009,
0x0000,
19,
0,
45.0f,
1.0f,
{ 0.0f, -20.0f, 0.0f },
{ 0.0f, -10.0f, 5.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, true),
0xFF,
0x0303,
9,
0,
60.0f,
1.0f,
{ 0.0f, 10.0f, 0.0f },
{ 0.0f, 10.0f, 0.0f },
},
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// target is within 300 units of eye, and player is within 30 units of eye
OnePointCsFull D_8011D83C[] = {
{ 0x83, 0xFF, 0x2141, 0x0014, 0x0000, 45.0f, 0.2f, { 0.0f, 0.0f, 10.0f }, { 0.0f, 0.0f, 10.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true),
0xFF,
0x2141,
20,
0,
45.0f,
0.2f,
{ 0.0f, 0.0f, 10.0f },
{ 0.0f, 0.0f, 10.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// target is within 700 units of eye, angle between player/eye and target/eye is less than
// 76.9 degrees. The x/y coordinates of the target on screen is between (21, 41) and (300, 200),
// and the player is farther than 30 units of the eye
OnePointCsFull D_8011D88C[] = {
{ 0x81, 0xFF, 0x0303, 0x0014, 0x0000, 45.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
0xFF,
0x0303,
20,
0,
45.0f,
1.0f,
{ 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// same as above, but the target is NOT within the screen area.
OnePointCsFull D_8011D8DC[] = {
{ 0x8F, 0xFF, 0x0404, 0x0014, 0x0001, 50.0f, 1.0f, { 0.0f, 5.0f, 10.0f }, { 0.0f, 10.0f, -80.0f } },
{ 0x82, 0xFF, 0x2121, 0x0005, 0x0000, 60.0f, 1.0f, { 0.0f, 5.0f, 0.0f }, { 5.0f, 5.0f, -200.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
0xFF,
0x0404,
20,
1,
50.0f,
1.0f,
{ 0.0f, 5.0f, 10.0f },
{ 0.0f, 10.0f, -80.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
0xFF,
0x2121,
5,
0,
60.0f,
1.0f,
{ 0.0f, 5.0f, 0.0f },
{ 5.0f, 5.0f, -200.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// target is a door.
OnePointCsFull D_8011D954[] = {
{ 0x0F, 0xFF, 0xC1C1, 0x0014, 0x0000, 60.0f, 1.0f, { 0.0f, 0.0f, 50.0f }, { 0.0f, 0.0f, 250.0f } },
{ 0x83, 0xFF, 0x05B1, 0x0005, 0x0000, 60.0f, 0.1f, { 0.0f, 10.0f, 50.0f }, { 0.0f, 10.0f, 100.0f } },
{ 0x82, 0xFF, 0x2121, 0x0005, 0x0002, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { 0.0f, 20.0f, -150.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false),
0xFF,
0xC1C1,
20,
0,
60.0f,
1.0f,
{ 0.0f, 0.0f, 50.0f },
{ 0.0f, 0.0f, 250.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true),
0xFF,
0x05B1,
5,
0,
60.0f,
0.1f,
{ 0.0f, 10.0f, 50.0f },
{ 0.0f, 10.0f, 100.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
0xFF,
0x2121,
5,
2,
60.0f,
1.0f,
{ 0.0f, 10.0f, 0.0f },
{ 0.0f, 20.0f, -150.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
// otherwise
OnePointCsFull D_8011D9F4[] = {
{ 0x8F, 0xFF, 0x0504, 0x0014, 0x0002, 60.0f, 1.0f, { 0.0f, 5.0f, 50.0f }, { 0.0f, 20.0f, 300.0f } },
{ 0x82, 0xFF, 0x2121, 0x0005, 0x0002, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { 0.0f, 20.0f, -150.0f } },
{ 0x12, 0xFF, 0x0000, 0x0001, 0x0000, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
0xFF,
0x0504,
20,
2,
60.0f,
1.0f,
{ 0.0f, 5.0f, 50.0f },
{ 0.0f, 20.0f, 300.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
0xFF,
0x2121,
5,
2,
60.0f,
1.0f,
{ 0.0f, 10.0f, 0.0f },
{ 0.0f, 20.0f, -150.0f },
},
{
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
0xFF,
0x0000,
1,
0,
60.0f,
1.0f,
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
},
};
typedef enum {

View file

@ -4,6 +4,8 @@ void Interface_Destroy(PlayState* play) {
Map_Destroy(play);
}
#define ICON_ITEM_SEGMENT_SIZE (4 * ITEM_ICON_SIZE)
void Interface_Init(PlayState* play) {
InterfaceContext* interfaceCtx = &play->interfaceCtx;
u32 parameterSize;
@ -70,10 +72,10 @@ void Interface_Init(PlayState* play) {
(uintptr_t)_do_action_staticSegmentRomStart + doActionOffset, DO_ACTION_TEX_SIZE,
"../z_construct.c", 178);
interfaceCtx->iconItemSegment = GameState_Alloc(&play->state, 4 * ICON_ITEM_TEX_SIZE, "../z_construct.c", 190);
interfaceCtx->iconItemSegment = GameState_Alloc(&play->state, ICON_ITEM_SEGMENT_SIZE, "../z_construct.c", 190);
// "Icon Item Texture Initialization = %x"
osSyncPrintf("アイコンアイテム テクスチャ初期=%x\n", 4 * ICON_ITEM_TEX_SIZE);
osSyncPrintf("アイコンアイテム テクスチャ初期=%x\n", ICON_ITEM_SEGMENT_SIZE);
osSyncPrintf("parameter->icon_itemSegment=%x\n", interfaceCtx->iconItemSegment);
ASSERT(interfaceCtx->iconItemSegment != NULL, "parameter->icon_itemSegment != NULL", "../z_construct.c", 193);
@ -83,36 +85,31 @@ void Interface_Init(PlayState* play) {
gSaveContext.equips.buttonItems[3]);
if (gSaveContext.equips.buttonItems[0] < 0xF0) {
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment,
(uintptr_t)_icon_item_staticSegmentRomStart +
gSaveContext.equips.buttonItems[0] * ICON_ITEM_TEX_SIZE,
ICON_ITEM_TEX_SIZE, "../z_construct.c", 198);
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + (0 * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[0]), ITEM_ICON_SIZE,
"../z_construct.c", 198);
} else if (gSaveContext.equips.buttonItems[0] != 0xFF) {
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment,
(uintptr_t)_icon_item_staticSegmentRomStart +
gSaveContext.equips.buttonItems[0] * ICON_ITEM_TEX_SIZE,
ICON_ITEM_TEX_SIZE, "../z_construct.c", 203);
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + (0 * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[0]), ITEM_ICON_SIZE,
"../z_construct.c", 203);
}
if (gSaveContext.equips.buttonItems[1] < 0xF0) {
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + ICON_ITEM_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart +
gSaveContext.equips.buttonItems[1] * ICON_ITEM_TEX_SIZE,
ICON_ITEM_TEX_SIZE, "../z_construct.c", 209);
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + (1 * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[1]), ITEM_ICON_SIZE,
"../z_construct.c", 209);
}
if (gSaveContext.equips.buttonItems[2] < 0xF0) {
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + 2 * ICON_ITEM_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart +
gSaveContext.equips.buttonItems[2] * ICON_ITEM_TEX_SIZE,
ICON_ITEM_TEX_SIZE, "../z_construct.c", 214);
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + (2 * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[2]), ITEM_ICON_SIZE,
"../z_construct.c", 214);
}
if (gSaveContext.equips.buttonItems[3] < 0xF0) {
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + 3 * ICON_ITEM_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart +
gSaveContext.equips.buttonItems[3] * ICON_ITEM_TEX_SIZE,
ICON_ITEM_TEX_SIZE, "../z_construct.c", 219);
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + (3 * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[3]), ITEM_ICON_SIZE,
"../z_construct.c", 219);
}
osSyncPrintf("%d\n", ((void)0, gSaveContext.timerState));
@ -173,6 +170,9 @@ void Interface_Init(PlayState* play) {
R_A_BTN_COLOR(2) = 50;
}
#define TEXTBOX_SEGMENT_SIZE \
(MESSAGE_STATIC_TEX_SIZE + MAX(MAX(ITEM_ICON_SIZE, QUEST_ICON_SIZE), 2 * MESSAGE_TEXTURE_STATIC_TEX_SIZE))
void Message_Init(PlayState* play) {
MessageContext* msgCtx = &play->msgCtx;
s32 pad;
@ -188,15 +188,11 @@ void Message_Init(PlayState* play) {
View_Init(&msgCtx->view, play->state.gfxCtx);
msgCtx->textboxSegment =
GameState_Alloc(&play->state,
MESSAGE_STATIC_TEX_SIZE +
MAX(MAX(ICON_ITEM_TEX_SIZE, ICON_ITEM_24_TEX_SIZE), 2 * MESSAGE_TEXTURE_STATIC_TEX_SIZE),
"../z_construct.c", 349);
msgCtx->textboxSegment = GameState_Alloc(&play->state, TEXTBOX_SEGMENT_SIZE, "../z_construct.c", 349);
osSyncPrintf("message->fukidashiSegment=%x\n", msgCtx->textboxSegment);
osSyncPrintf("吹き出しgame_alloc=%x\n", 0x2200); // "Textbox game_alloc=%x"
osSyncPrintf("吹き出しgame_alloc=%x\n", TEXTBOX_SEGMENT_SIZE); // "Textbox game_alloc=%x"
ASSERT(msgCtx->textboxSegment != NULL, "message->fukidashiSegment != NULL", "../z_construct.c", 352);
Font_LoadOrderedFont(&play->msgCtx.font);
@ -257,7 +253,7 @@ void Regs_InitDataImpl(void) {
R_TEXTBOX_ICON_YPOS = 10;
YREG(73) = -8;
YREG(74) = 8;
R_TEXTBOX_ICON_SIZE = 24;
R_TEXTBOX_ICON_DIMENSION = 24;
YREG(76) = 32;
YREG(77) = 0;
R_MESSAGE_DEBUGGER_SELECT = 0;

View file

@ -351,7 +351,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
}
if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, play)) {
func_8002F554(&this->actor, play, getItemId);
Actor_OfferGetItemNearby(&this->actor, play, getItemId);
}
EnItem00_SetupAction(this, EnItem00_Collected);
@ -498,7 +498,7 @@ void EnItem00_Collected(EnItem00* this, PlayState* play) {
if (this->getItemId != GI_NONE) {
if (!Actor_HasParent(&this->actor, play)) {
func_8002F434(&this->actor, play, this->getItemId, 50.0f, 80.0f);
Actor_OfferGetItem(&this->actor, play, this->getItemId, 50.0f, 80.0f);
this->despawnTimer++;
} else {
this->getItemId = GI_NONE;
@ -696,7 +696,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
params = &this->actor.params;
if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, play)) {
func_8002F554(&this->actor, play, getItemId);
Actor_OfferGetItemNearby(&this->actor, play, getItemId);
}
switch (*params) {

View file

@ -755,17 +755,17 @@ u16 Message_DrawItemIcon(PlayState* play, u16 itemId, Gfx** p, u16 i) {
gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, msgCtx->textColorAlpha);
if (itemId >= ITEM_MEDALLION_FOREST) {
gDPLoadTextureBlock(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24,
24, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b,
QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
} else {
gDPLoadTextureBlock(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32,
32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b,
ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
}
gSPTextureRectangle(gfx++, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS) << 2, R_TEXTBOX_ICON_YPOS << 2,
(msgCtx->textPosX + R_TEXTBOX_ICON_XPOS + R_TEXTBOX_ICON_SIZE) << 2,
(R_TEXTBOX_ICON_YPOS + R_TEXTBOX_ICON_SIZE) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
(msgCtx->textPosX + R_TEXTBOX_ICON_XPOS + R_TEXTBOX_ICON_DIMENSION) << 2,
(R_TEXTBOX_ICON_YPOS + R_TEXTBOX_ICON_DIMENSION) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
gDPPipeSync(gfx++);
gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
@ -1164,21 +1164,18 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 y) {
}
if (itemId < ITEM_MEDALLION_FOREST) {
R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem32XOffsets[gSaveContext.language];
R_TEXTBOX_ICON_YPOS = y + 6;
R_TEXTBOX_ICON_SIZE = 32;
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart + (itemId * ICON_ITEM_TEX_SIZE),
ICON_ITEM_TEX_SIZE, "../z_message_PAL.c", 1473);
R_TEXTBOX_ICON_YPOS = y + ((44 - ITEM_ICON_HEIGHT) / 2);
R_TEXTBOX_ICON_DIMENSION = ITEM_ICON_WIDTH; // assumes the image is square
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, GET_ITEM_ICON_VROM(itemId),
ITEM_ICON_SIZE, "../z_message_PAL.c", 1473);
// "Item 32-0"
osSyncPrintf("アイテム32-0\n");
} else {
R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem24XOffsets[gSaveContext.language];
R_TEXTBOX_ICON_YPOS = y + 10;
R_TEXTBOX_ICON_SIZE = 24;
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
(uintptr_t)_icon_item_24_staticSegmentRomStart +
(itemId - ITEM_MEDALLION_FOREST) * ICON_ITEM_24_TEX_SIZE,
ICON_ITEM_24_TEX_SIZE, "../z_message_PAL.c", 1482);
R_TEXTBOX_ICON_YPOS = y + ((44 - QUEST_ICON_HEIGHT) / 2);
R_TEXTBOX_ICON_DIMENSION = QUEST_ICON_WIDTH; // assumes the image is square
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, GET_QUEST_ICON_VROM(itemId),
QUEST_ICON_SIZE, "../z_message_PAL.c", 1482);
// "Item 24"
osSyncPrintf("アイテム24%d (%d) {%d}\n", itemId, itemId - ITEM_KOKIRI_EMERALD, 84);
}
@ -1977,7 +1974,11 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
};
static s16 sOcarinaEffectActorParams[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000 };
static void* sOcarinaNoteTextures[] = {
gOcarinaATex, gOcarinaCDownTex, gOcarinaCRightTex, gOcarinaCLeftTex, gOcarinaCUpTex,
gOcarinaBtnIconATex, // OCARINA_BTN_A
gOcarinaBtnIconCDownTex, // OCARINA_BTN_C_DOWN
gOcarinaBtnIconCRightTex, // OCARINA_BTN_C_RIGHT
gOcarinaBtnIconCLeftTex, // OCARINA_BTN_C_LEFT
gOcarinaBtnIconCUpTex, // OCARINA_BTN_C_UP
};
static s16 sOcarinaButtonAPrimColors[][3] = {
{ 80, 255, 150 },

View file

@ -147,7 +147,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrameCnt = 11;
for (i = 0; i < csInfo->keyFrameCnt - 3; i++) {
if (D_80120B94[i].actionFlags != 0x8F) {
if (D_80120B94[i].actionFlags != ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true)) {
D_80120B94[i].atTargetInit.x = Rand_ZeroOne() * 5.0f;
D_80120B94[i].atTargetInit.z = (Rand_ZeroOne() * 30.0f) + 10.0f;
D_80120B94[i].eyeTargetInit.x = (Rand_ZeroOne() * 100.0f) + 20.0f;
@ -169,7 +169,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrameCnt = 7;
for (i = 0; i < csInfo->keyFrameCnt - 3; i++) {
if (D_80120D4C[i].actionFlags != 0x8F) {
if (D_80120D4C[i].actionFlags != ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true)) {
D_80120D4C[i].atTargetInit.x = Rand_ZeroOne() * 20.0f;
D_80120D4C[i].atTargetInit.z = (Rand_ZeroOne() * 40.0f) + 10.0f;
D_80120D4C[i].eyeTargetInit.x = (Rand_ZeroOne() * 40.0f) + 60.0f;
@ -264,7 +264,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
case 2290: {
Actor* rideActor = player->rideActor;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
if (rideActor != NULL) {
rideActor->freezeTimer = 180;
}
@ -275,7 +275,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
} break;
case 5120:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
csInfo->keyFrames = D_80121314;
csInfo->keyFrameCnt = 1;
@ -285,7 +285,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
case 4510:
D_8012133C[0].eyeTargetInit = actor->world.pos;
D_8012133C[0].eyeTargetInit.y = player->actor.world.pos.y + 40.0f;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
csInfo->keyFrames = D_8012133C;
csInfo->keyFrameCnt = 3;
@ -303,7 +303,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
OnePointCutscene_AddVecGeoToVec3f(&spB4, &spC0, &spD0);
Play_CameraChangeSetting(play, subCamId, CAM_SET_FREE2);
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
subCam->roll = 0;
subCam->fov = 50.0f;
if (subCam->childCamId != CAM_ID_MAIN) {
@ -317,7 +317,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
if (Rand_ZeroOne() < 0.0f) {
D_801213B4[3].eyeTargetInit.x = -D_801213B4[3].eyeTargetInit.x;
}
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
csInfo->keyFrames = D_801213B4;
csInfo->keyFrameCnt = 5;
@ -361,10 +361,10 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 6;
subCam->fov = 75.0f;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
break;
case 3040:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
D_8012151C[0].timerInit = timer - 1;
csInfo->keyFrames = D_8012151C;
@ -388,7 +388,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrameCnt = 2;
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
break;
case 3010:
D_801215BC[0].timerInit = timer;
@ -416,7 +416,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3090:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
csInfo->keyFrames = D_80121814;
csInfo->keyFrameCnt = 4;
@ -432,14 +432,14 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0;
subCam->fov = 70.0f;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
break;
case 3380:
case 3065:
csInfo->keyFrames = D_801218B4;
csInfo->keyFrameCnt = 2;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
i = Quake_Request(subCam, QUAKE_TYPE_1);
@ -451,12 +451,12 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80121904;
csInfo->keyFrameCnt = 2;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3050:
Play_CameraChangeSetting(play, subCamId, CAM_SET_CS_3);
func_8002DF54(play, &player->actor, 5);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_5);
OnePointCutscene_SetCsCamPoints(subCam, D_80120304 | 0x2000, D_80120300, D_8012013C, D_8012021C);
func_80078884(NA_SE_SY_CORRECT_CHIME);
OnePointCutscene_Vec3sToVec3f(&mainCam->at, &D_8012013C[D_801202FC - 2].pos);
@ -485,14 +485,14 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
subCam->stateFlags |= CAM_STATE_1;
csInfo->keyFrameCnt = 2;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3130:
csInfo->keyFrames = D_80121A44;
csInfo->keyFrameCnt = 12;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
subCam->stateFlags |= CAM_STATE_1;
break;
@ -517,7 +517,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0x50;
subCam->fov = 55.0f;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
break;
case 3170:
Actor_GetWorld(&spA0, actor);
@ -533,7 +533,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CopyCamera(play, CAM_ID_MAIN, subCamId);
subCam->roll = -1;
subCam->fov = 55.0f;
func_8002DF38(play, actor, 1);
func_8002DF38(play, actor, PLAYER_CSMODE_1);
break;
case 3160:
Actor_GetWorld(&spA0, actor);
@ -546,7 +546,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0;
subCam->fov = 55.0f;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
break;
case 3180:
Actor_GetWorldPosShapeRot(&spA0, actor);
@ -560,12 +560,12 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0;
subCam->fov = 60.0f;
func_8002DF38(play, actor, 1);
func_8002DF38(play, actor, PLAYER_CSMODE_1);
break;
case 3190:
Play_CameraChangeSetting(play, subCamId, CAM_SET_FOREST_DEFEAT_POE);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_8002DF38(play, actor, 0xC);
func_8002DF38(play, actor, PLAYER_CSMODE_12);
break;
case 3230:
spC0.x = 120.0f;
@ -578,7 +578,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0x1E;
subCam->fov = 75.0f;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
Actor_GetWorldPosShapeRot(&spA0, actor);
Actor_GetFocus(&sp8C, &player->actor);
spC0.x = sp8C.pos.x;
@ -607,7 +607,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
Play_CameraSetAtEye(play, subCamId, &spC0, &spB4);
subCam->roll = 0;
subCam->fov = 45.0f;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
break;
case 3220:
Actor_GetFocus(&spA0, actor);
@ -623,7 +623,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
subCam->roll = 0;
subCam->fov = 75.0f;
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = spD0.yaw + 0x7FFF;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
break;
case 3240:
D_80121D3C[2].timerInit = timer - 5;
@ -631,12 +631,12 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80121D3C;
csInfo->keyFrameCnt = 3;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 6001:
Play_CameraChangeSetting(play, subCamId, CAM_SET_CS_3);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
Actor_GetWorld(&spA0, actor);
if (spA0.pos.z > -750.0f) {
OnePointCutscene_SetCsCamPoints(subCam, D_801208E8, D_801208E4, D_801206A0, D_80120820);
@ -651,7 +651,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
break;
case 3400:
Play_CameraChangeSetting(play, subCamId, CAM_SET_CS_3);
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
OnePointCutscene_SetCsCamPoints(subCam, D_8012069C | 0x2000, D_80120698, D_801204D4, D_801205B4);
OnePointCutscene_Vec3sToVec3f(&mainCam->eye, &D_801205B4[D_80120694 - 2].pos);
OnePointCutscene_Vec3sToVec3f(&mainCam->at, &D_801204D4[D_80120694 - 2].pos);
@ -667,12 +667,12 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80121DB4;
csInfo->keyFrameCnt = 9;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3310:
Play_CameraChangeSetting(play, subCamId, CAM_SET_FIRE_STAIRCASE);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
Play_CopyCamera(play, subCamId, CAM_ID_MAIN);
i = Quake_Request(subCam, QUAKE_TYPE_1);
@ -705,7 +705,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80121FBC;
csInfo->keyFrameCnt = 4;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
i = Quake_Request(subCam, QUAKE_TYPE_3);
@ -717,7 +717,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_8012205C;
csInfo->keyFrameCnt = 3;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3350:
@ -732,7 +732,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
D_801220D4[1].eyeTargetInit.y = 80.0f;
D_801220D4[1].eyeTargetInit.x = -D_801220D4[1].eyeTargetInit.x;
}
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
csInfo->keyFrames = D_801220D4;
csInfo->keyFrameCnt = 5;
@ -743,14 +743,14 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_8012219C;
csInfo->keyFrameCnt = 7;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3410:
csInfo->keyFrames = D_801222B4;
csInfo->keyFrameCnt = 5;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
i = Quake_Request(subCam, QUAKE_TYPE_1);
@ -762,7 +762,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_8012237C;
csInfo->keyFrameCnt = 2;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
i = Quake_Request(subCam, QUAKE_TYPE_1);
@ -774,7 +774,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_801223CC;
csInfo->keyFrameCnt = 6;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
player->stateFlags1 |= PLAYER_STATE1_29;
player->actor.freezeTimer = 90;
@ -788,7 +788,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_801224BC;
csInfo->keyFrameCnt = 7;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
i = Quake_Request(subCam, QUAKE_TYPE_1);
@ -802,17 +802,17 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = 0x3FFC;
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
break;
case 4110:
csInfo->keyFrames = D_8012269C;
csInfo->keyFrameCnt = 3;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 4120:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
D_80122714[1].timerInit = 80;
csInfo->keyFrames = D_80122714;
csInfo->keyFrameCnt = 4;
@ -830,7 +830,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_801228A4;
csInfo->keyFrameCnt = 5;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
@ -838,7 +838,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_8012296C;
csInfo->keyFrameCnt = 4;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
@ -846,7 +846,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80122A0C;
csInfo->keyFrameCnt = 2;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
@ -854,7 +854,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80122A5C;
csInfo->keyFrameCnt = 8;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
@ -862,7 +862,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80122B9C;
csInfo->keyFrameCnt = 3;
func_8002DF38(play, &player->actor, 8);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_8);
Camera_ChangeMode(mainCam, CAM_MODE_NORMAL);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
@ -884,7 +884,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrameCnt = 1;
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
func_8002DF38(play, &player->actor, 1);
func_8002DF38(play, &player->actor, PLAYER_CSMODE_1);
i = Quake_Request(subCam, QUAKE_TYPE_3);
Quake_SetSpeed(i, 12000);
@ -895,11 +895,11 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
csInfo->keyFrames = D_80122C8C;
csInfo->keyFrameCnt = 1;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3260:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
D_80122CB4[1].timerInit = timer - 5;
csInfo->keyFrames = D_80122CB4;
@ -908,7 +908,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
func_800C0808(play, subCamId, player, CAM_SET_CS_C);
break;
case 3261:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
D_80122D04[1].timerInit = timer - 10;
csInfo->keyFrames = D_80122D04;

File diff suppressed because it is too large Load diff

View file

@ -1298,10 +1298,9 @@ void Interface_LoadItemIcon1(PlayState* play, u16 button) {
InterfaceContext* interfaceCtx = &play->interfaceCtx;
osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1);
DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_160, interfaceCtx->iconItemSegment + button * ICON_ITEM_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart +
(gSaveContext.equips.buttonItems[button] * ICON_ITEM_TEX_SIZE),
ICON_ITEM_TEX_SIZE, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1171);
DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_160, interfaceCtx->iconItemSegment + (button * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[button]), ITEM_ICON_SIZE, 0,
&interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1171);
osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
}
@ -1309,10 +1308,9 @@ void Interface_LoadItemIcon2(PlayState* play, u16 button) {
InterfaceContext* interfaceCtx = &play->interfaceCtx;
osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1);
DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_180, interfaceCtx->iconItemSegment + button * ICON_ITEM_TEX_SIZE,
(uintptr_t)_icon_item_staticSegmentRomStart +
(gSaveContext.equips.buttonItems[button] * ICON_ITEM_TEX_SIZE),
ICON_ITEM_TEX_SIZE, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1193);
DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_180, interfaceCtx->iconItemSegment + (button * ITEM_ICON_SIZE),
GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[button]), ITEM_ICON_SIZE, 0,
&interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1193);
osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
}
@ -3377,8 +3375,8 @@ void Interface_Draw(PlayState* play) {
gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[PAUSE_QUAD_CURSOR_4 * 4], 4, 0);
gDPLoadTextureBlock(OVERLAY_DISP++, gItemIcons[pauseCtx->equipTargetItem], G_IM_FMT_RGBA, G_IM_SIZ_32b,
32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
} else {
// Magic Arrow Equip Effect
svar1 = pauseCtx->equipTargetItem - 0xBF;
@ -3803,7 +3801,7 @@ void Interface_Draw(PlayState* play) {
gSaveContext.subTimerState = SUBTIMER_STATE_RESPAWN;
gSaveContext.cutsceneIndex = 0;
Message_StartTextbox(play, 0x71B0, NULL);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
} else {
sSubTimerStateTimer = 40;
gSaveContext.subTimerState = SUBTIMER_STATE_STOP;

View file

@ -488,7 +488,7 @@ void Player_SetBootData(PlayState* play, Player* this) {
}
s32 Player_InBlockingCsMode(PlayState* play, Player* this) {
return (this->stateFlags1 & (PLAYER_STATE1_7 | PLAYER_STATE1_29)) || (this->csMode != 0) ||
return (this->stateFlags1 & (PLAYER_STATE1_7 | PLAYER_STATE1_29)) || (this->csMode != PLAYER_CSMODE_NONE) ||
(play->transitionTrigger == TRANS_TRIGGER_START) || (this->stateFlags1 & PLAYER_STATE1_0) ||
(this->stateFlags3 & PLAYER_STATE3_7) ||
((gSaveContext.magicState != MAGIC_STATE_IDLE) && (Player_ActionToMagicSpell(this, this->itemAction) >= 0));
@ -577,7 +577,7 @@ void func_8008EC70(Player* this) {
}
void Player_SetEquipmentData(PlayState* play, Player* this) {
if (this->csMode != 0x56) {
if (this->csMode != PLAYER_CSMODE_86) {
this->currentShield = SHIELD_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD));
this->currentTunic = TUNIC_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC));
this->currentBoots = BOOTS_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_BOOTS));

View file

@ -269,7 +269,7 @@ void Scene_CommandObjectList(PlayState* play, SceneCmd* cmd) {
status2++;
}
play->objectCtx.num = i;
func_80031A28(play, &play->actorCtx);
Actor_KillAllWithMissingObject(play, &play->actorCtx);
continue;
}

View file

@ -1,12 +1,6 @@
#include "global.h"
#include "ultra64/asm.h"
__OSThreadTail __osThreadTail = { NULL, OS_PRIORITY_THREADTAIL };
OSThread* __osRunQueue = (OSThread*)&__osThreadTail;
OSThread* __osActiveQueue = (OSThread*)&__osThreadTail;
OSThread* __osRunningThread = NULL;
OSThread* __osFaultedThread = NULL;
void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, void* sp, OSPri pri) {
register u32 prevInt;
OSIntMask mask;

View file

@ -3,13 +3,13 @@
#define STEP 0x100000
u32 osGetMemSize(void) {
u32* ptr;
vu32* ptr;
u32 size = 0x400000;
u32 data0;
u32 data1;
while (size < 0x800000) {
ptr = (u32*)(0xA0000000 + size);
ptr = (vu32*)(K1BASE + size);
data0 = *ptr;
data1 = ptr[STEP / 4 - 1];

View file

@ -1,5 +1,11 @@
#include "global.h"
__OSThreadTail __osThreadTail = { NULL, OS_PRIORITY_THREADTAIL };
OSThread* __osRunQueue = (OSThread*)&__osThreadTail;
OSThread* __osActiveQueue = (OSThread*)&__osThreadTail;
OSThread* __osRunningThread = NULL;
OSThread* __osFaultedThread = NULL;
void __osDequeueThread(OSThread** queue, OSThread* thread) {
register OSThread** a2 = queue;
register OSThread* a3 = *a2;

View file

@ -254,7 +254,7 @@ void BgBreakwall_Wait(BgBreakwall* this, PlayState* play) {
gSaveContext.cutsceneTrigger = 1;
Audio_PlaySfxGeneral(NA_SE_SY_CORRECT_CHIME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
func_8002DF54(play, NULL, 0x31);
func_8002DF54(play, NULL, PLAYER_CSMODE_49);
}
if (this->dyna.actor.params < 0) {

View file

@ -191,7 +191,7 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
return;
}
}
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->actionFunc = BgDyYoseizo_ChooseType;
}
}
@ -199,7 +199,7 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
s32 givingReward;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
// "Mode"
osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ もうど ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode);
givingReward = false;
@ -315,12 +315,12 @@ void BgDyYoseizo_SetupSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
}
Audio_PlayActorSfx2(&this->actor, NA_SE_VO_FR_LAUGH_0);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->actionFunc = BgDyYoseizo_SpinGrow_NoReward;
}
void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
Math_ApproachF(&this->actor.world.pos.y, this->grownHeight, this->heightFraction, 100.0f);
Math_ApproachF(&this->scale, 0.035f, this->scaleFraction, 0.005f);
Math_ApproachF(&this->heightFraction, 0.8f, 0.1f, 0.02f);
@ -346,7 +346,7 @@ void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
f32 curFrame = this->skelAnime.curFrame;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
if ((this->frameCount * 1273.0f) <= this->bobTimer) {
this->bobTimer = 0.0f;
@ -360,7 +360,7 @@ void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
}
void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingAnim);
@ -380,7 +380,7 @@ void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
}
void BgDyYoseizo_GreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->bobTimer = this->skelAnime.curFrame * 1273.0f;
if ((this->frameCount * 1273.0f) <= this->bobTimer) {
@ -547,7 +547,7 @@ void BgDyYoseizo_Vanish(BgDyYoseizo* this, PlayState* play) {
Actor* findOcarinaSpot;
if (this->vanishTimer == 0) {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
play->envCtx.lightSettingOverride = 0;
findOcarinaSpot = play->actorCtx.actorLists[ACTORCAT_PROP].head;
@ -569,7 +569,7 @@ void BgDyYoseizo_SetupSpinGrow_Reward(BgDyYoseizo* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
if ((play->csCtx.npcActions[0] != NULL) && (play->csCtx.npcActions[0]->action == 2)) {
this->actor.draw = BgDyYoseizo_Draw;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->finishedSpinGrow = false;
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {

View file

@ -239,7 +239,7 @@ void BgGndIceblock_Idle(BgGndIceblock* this, PlayState* play) {
if (this->dyna.unk_150 > 0.0f) {
BgGndIceblock_SetNextPosition(this);
if (Actor_WorldDistXZToPoint(&this->dyna.actor, &this->targetPos) > 1.0f) {
func_8002DF54(play, &this->dyna.actor, 8);
func_8002DF54(play, &this->dyna.actor, PLAYER_CSMODE_8);
this->actionFunc = BgGndIceblock_Slide;
}
}
@ -280,7 +280,7 @@ void BgGndIceblock_Fall(BgGndIceblock* this, PlayState* play) {
thisx->world.pos.y = thisx->home.pos.y - 100.0f;
thisx->world.pos.z = thisx->home.pos.z;
if (Player_InCsMode(play)) {
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
}
this->actionFunc = BgGndIceblock_Reset;
}
@ -293,7 +293,7 @@ void BgGndIceblock_Hole(BgGndIceblock* this, PlayState* play) {
if (Math_StepToF(&thisx->world.pos.y, thisx->home.pos.y - 100.0f, thisx->velocity.y)) {
thisx->velocity.y = 0.0f;
if (Player_InCsMode(play)) {
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
}
this->actionFunc = BgGndIceblock_Idle;
}
@ -317,7 +317,7 @@ void BgGndIceblock_Slide(BgGndIceblock* this, PlayState* play) {
switch (BgGndIceblock_NextAction(this)) {
case GNDICE_IDLE:
this->actionFunc = BgGndIceblock_Idle;
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
break;
case GNDICE_FALL:
this->actionFunc = BgGndIceblock_Fall;

View file

@ -367,7 +367,7 @@ void BgHeavyBlock_LiftedUp(BgHeavyBlock* this, PlayState* play) {
this->timer++;
func_8002DF54(play, &player->actor, 8);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
// if parent is NULL, link threw it
if (Actor_HasNoParent(&this->dyna.actor, play)) {

View file

@ -138,7 +138,7 @@ void BgHidanDalm_Wait(BgHidanDalm* this, PlayState* play) {
this->dyna.actor.world.pos.x += 32.5f * Math_SinS(this->dyna.actor.world.rot.y);
this->dyna.actor.world.pos.z += 32.5f * Math_CosS(this->dyna.actor.world.rot.y);
func_8002DF54(play, &this->dyna.actor, 8);
func_8002DF54(play, &this->dyna.actor, PLAYER_CSMODE_8);
this->dyna.actor.flags |= ACTOR_FLAG_4;
this->actionFunc = BgHidanDalm_Shrink;
this->dyna.actor.bgCheckFlags &= ~BGCHECKFLAG_GROUND_TOUCH;
@ -159,7 +159,7 @@ void BgHidanDalm_Shrink(BgHidanDalm* this, PlayState* play) {
Vec3f pos;
if (Math_StepToF(&this->dyna.actor.scale.x, 0.0f, 0.004f)) {
func_8002DF54(play, &this->dyna.actor, 7);
func_8002DF54(play, &this->dyna.actor, PLAYER_CSMODE_7);
Actor_Kill(&this->dyna.actor);
}

View file

@ -125,7 +125,7 @@ void BgIceObjects_CheckPits(BgIceObjects* this, PlayState* play) {
thisx->world.pos.y = thisx->home.pos.y - 60.0f;
thisx->world.pos.z = thisx->home.pos.z;
if (thisx->params != 0) {
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
}
this->actionFunc = BgIceObjects_Reset;
}
@ -142,7 +142,7 @@ void BgIceObjects_Idle(BgIceObjects* this, PlayState* play) {
BgIceObjects_SetNextTarget(this, play);
if (Actor_WorldDistXZToPoint(thisx, &this->targetPos) > 1.0f) {
thisx->flags |= ACTOR_FLAG_4;
func_8002DF54(play, thisx, 8);
func_8002DF54(play, thisx, PLAYER_CSMODE_8);
thisx->params = 1;
this->actionFunc = BgIceObjects_Slide;
}
@ -172,7 +172,7 @@ void BgIceObjects_Slide(BgIceObjects* this, PlayState* play) {
thisx->flags &= ~ACTOR_FLAG_4;
}
thisx->params = 0;
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
Audio_PlayActorSfx2(thisx, NA_SE_EV_BLOCK_BOUND);
if ((fabsf(thisx->world.pos.x + 1387.0f) < 1.0f) && (fabsf(thisx->world.pos.z + 260.0f) < 1.0f)) {
this->actionFunc = BgIceObjects_Stuck;

View file

@ -164,7 +164,7 @@ void BgMoriBigst_Fall(BgMoriBigst* this, PlayState* play) {
BgMoriBigst_SetupLanding(this, play);
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_STONE_BOUND);
OnePointCutscene_Init(play, 1020, 8, &this->dyna.actor, CAM_ID_MAIN);
func_8002DF38(play, NULL, 0x3C);
func_8002DF38(play, NULL, PLAYER_CSMODE_60);
}
}

View file

@ -95,7 +95,7 @@ void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, PlayState* play) {
this->timer++;
if ((this->timer > 28) && !Player_InCsMode(play)) {
BgMoriKaitenkabe_SetupRotate(this);
func_8002DF54(play, &this->dyna.actor, 8);
func_8002DF54(play, &this->dyna.actor, PLAYER_CSMODE_8);
Math_Vec3f_Copy(&this->lockedPlayerPos, &player->actor.world.pos);
push.x = Math_SinS(this->dyna.unk_158);
push.y = 0.0f;
@ -129,7 +129,7 @@ void BgMoriKaitenkabe_Rotate(BgMoriKaitenkabe* this, PlayState* play) {
Math_StepToF(&this->rotSpeed, 0.6f, 0.02f);
if (Math_StepToF(&this->rotYdeg, this->rotDirection * 45.0f, this->rotSpeed)) {
BgMoriKaitenkabe_SetupWait(this);
func_8002DF54(play, thisx, 7);
func_8002DF54(play, thisx, PLAYER_CSMODE_7);
if (this->rotDirection > 0.0f) {
thisx->home.rot.y += 0x2000;
} else {

View file

@ -320,7 +320,7 @@ void BgPoEvent_BlockFall(BgPoEvent* this, PlayState* play) {
if (firstFall == 0) {
firstFall = 1;
} else {
func_8002DF54(play, &GET_PLAYER(play)->actor, 7);
func_8002DF54(play, &GET_PLAYER(play)->actor, PLAYER_CSMODE_7);
}
}
this->direction = 0;
@ -356,7 +356,7 @@ void BgPoEvent_BlockIdle(BgPoEvent* this, PlayState* play) {
if (sPuzzleState == 0x10) {
sPuzzleState = 0x40;
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_BLOCK_RISING);
func_8002DF54(play, &player->actor, 8);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
}
} else if (this->dyna.unk_150 != 0.0f) {
if (this->direction == 0) {
@ -449,7 +449,7 @@ void BgPoEvent_AmyWait(BgPoEvent* this, PlayState* play) {
if (this->collider.base.acFlags & AC_HIT) {
sPuzzleState |= 0x20;
this->timer = 5;
Actor_SetColorFilter(&this->dyna.actor, 0x4000, 0xFF, 0, 5);
Actor_SetColorFilter(&this->dyna.actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 5);
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EN_PO_LAUGH2);
this->actionFunc = BgPoEvent_AmyPuzzle;
}

View file

@ -218,7 +218,7 @@ void BgSpot00Hanebasi_Update(Actor* thisx, PlayState* play) {
SET_EVENTCHKINF(EVENTCHKINF_80);
Flags_SetEventChkInf(EVENTCHKINF_82);
this->actionFunc = BgSpot00Hanebasi_DoNothing;
func_8002DF54(play, &player->actor, 8);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
play->nextEntranceIndex = ENTR_HYRULE_FIELD_0;
gSaveContext.nextCutsceneIndex = 0xFFF1;
play->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -114,7 +114,7 @@ void func_808BAF40(BgTokiSwd* this, PlayState* play) {
BgTokiSwd_SetupAction(this, func_808BB0AC);
} else {
if (Actor_IsFacingPlayer(&this->actor, 0x2000)) {
func_8002F580(&this->actor, play);
Actor_OfferCarry(&this->actor, play);
}
}
}

View file

@ -269,7 +269,7 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) {
break;
case 1:
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
Play_ClearAllSubCameras(play);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@ -297,11 +297,11 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) {
}
if (this->unk_198 == 110) {
func_8002DF54(play, &this->actor, 9);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_9);
}
if (this->unk_198 == 5) {
func_8002DF54(play, &this->actor, 12);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_12);
}
if (this->unk_198 < 6) {
@ -417,7 +417,7 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossDodongo_SetupWalk(this);
this->unk_1DA = 50;
this->unk_1BC = 0;
@ -950,7 +950,7 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) {
magmaScale = ((s16)(Rand_ZeroOne() * 50)) - 50;
}
if (player2->csMode >= 10) {
if (player2->csMode >= PLAYER_CSMODE_10) {
phi_s0_3 = -1;
}
@ -1305,7 +1305,7 @@ void BossDodongo_DeathCutscene(BossDodongo* this, PlayState* play) {
case 0:
this->csState = 5;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -1615,7 +1615,7 @@ void BossDodongo_DeathCutscene(BossDodongo* this, PlayState* play) {
this->csState = 100;
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, -890.0f, -1523.76f, -3304.0f,
0, 0, 0, WARP_DUNGEON_CHILD);
this->skelAnime.playSpeed = 0.0f;

View file

@ -312,7 +312,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
this->introState = BFD_CS_START;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -389,7 +389,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
Math_ApproachF(&this->subCamShake, 2.0f, 1.0f, 0.8 * 0.01f);
}
if (this->timers[0] == 40) {
func_8002DF54(play, &this->actor, 0x13);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_19);
}
if (this->timers[0] == 0) {
this->introState = BFD_CS_LOOK_GROUND;
@ -418,7 +418,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
this->timers[0] = 170;
this->subCamVelFactor = 0.0f;
this->subCamAccel = 0.0f;
func_8002DF54(play, &this->actor, 0x14);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_20);
}
break;
case BFD_CS_COLLAPSE:
@ -468,7 +468,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
if (this->timers[3] == 190) {
this->subCamAtMaxVelFrac.x = this->subCamAtMaxVelFrac.y = this->subCamAtMaxVelFrac.z = 0.05f;
this->platformSignal = VBSIMA_KILL;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
}
if (this->actor.world.pos.y > 120.0f) {
this->subCamAtNext = this->actor.world.pos;
@ -538,7 +538,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
// BFD_CS_NONE / BOSSFD_FLY_MAIN / SUB_CAM_ID_DONE
this->introState = this->introFlyState = this->subCamId = 0;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->actionFunc = BossFd_Wait;
this->handoffSignal = FD2_SIGNAL_GROUND;
SET_EVENTCHKINF(EVENTCHKINF_73);
@ -847,7 +847,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
Audio_PlaySfxGeneral(NA_SE_EN_VALVAISA_LAND2, &this->actor.projectedPos, 4,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultReverb);
func_8002DF54(play, &this->actor, 5);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_5);
for (i1 = 0; i1 < 15; i1++) {
Vec3f sp144 = { 0.0f, 0.0f, 0.0f };
Vec3f sp138 = { 0.0f, 0.0f, 0.0f };

View file

@ -653,7 +653,7 @@ void BossFd2_Death(BossFd2* this, PlayState* play) {
case DEATH_START:
this->deathState = DEATH_RETREAT;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -747,7 +747,7 @@ void BossFd2_Death(BossFd2* this, PlayState* play) {
this->work[FD2_ACTION_STATE]++;
this->subCamVelFactor = 0.0f;
this->subCamAccel = 0.02f;
func_8002DF54(play, &bossFd->actor, 1);
func_8002DF54(play, &bossFd->actor, PLAYER_CSMODE_1);
}
}
if ((bossFd->work[BFD_ACTION_STATE] == BOSSFD_BONES_FALL) && (bossFd->timers[0] == 5)) {
@ -781,7 +781,7 @@ void BossFd2_Death(BossFd2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 100.0f, 0.0f, 0, 0, 0,
WARP_DUNGEON_ADULT);
Flags_SetClear(play, play->roomCtx.curRoom.num);

View file

@ -558,7 +558,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
this->actor.shape.rot.y = 0;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->csCamIndex, CAM_STAT_ACTIVE);
@ -600,7 +600,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
BossGanon_SetIntroCsCamera(this, 1);
if (this->csTimer == 10) {
func_8002DF54(play, &this->actor, 5);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_5);
}
if (this->csTimer == 13) {
@ -633,7 +633,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
break;
}
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csState = 4;
BossGanon_SetIntroCsCamera(this, 2);
this->csTimer = 0;
@ -665,7 +665,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
}
if (this->csTimer == 10) {
func_8002DF54(play, &this->actor, 0x4B);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_75);
}
if (this->csTimer == 70) {
@ -731,7 +731,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
this->csState = 9;
this->csTimer = 0;
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
sZelda->unk_3C8 = 0;
this->triforceType = GDF_TRIFORCE_ZELDA;
this->fwork[GDF_TRIFORCE_SCALE] = 10.0f;
@ -785,7 +785,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
player->actor.world.pos.z = 20.0f;
if (this->csTimer == 20) {
func_8002DF54(play, &this->actor, 0x17);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_23);
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_HEARTS);
}
@ -1005,7 +1005,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
}
if (this->csTimer == 30) {
func_8002DF54(play, &this->actor, 0x4A);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_74);
}
if (this->csTimer <= 50) {
@ -1128,7 +1128,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
func_800C08AC(play, this->csCamIndex, 0);
this->csState = this->csCamIndex = 0;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossGanon_SetupWait(this, play);
}
@ -1234,7 +1234,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
switch (this->csState) {
case 0:
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->csCamIndex, CAM_STAT_ACTIVE);
@ -1469,7 +1469,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GANON_BODY_SPARK - SFX_FLAG);
if (this->csTimer == 2) {
func_8002DF54(play, &this->actor, 0x39);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
}
if (this->csTimer > 50) {
@ -1505,7 +1505,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
case 100:
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->csCamIndex, CAM_STAT_ACTIVE);
@ -1594,11 +1594,11 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
this->csCamAt.z = -135.0f;
if (this->csTimer == 5) {
func_8002DF54(play, &this->actor, 0x4C);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_76);
}
if (this->csTimer == 70) {
func_8002DF54(play, &this->actor, 0x4D);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_77);
}
if (this->csTimer == 90) {
@ -1683,7 +1683,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
if (this->csTimer == 20) {
sZelda->unk_3C8 = 5;
func_8002DF54(play, &this->actor, 0x39);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
}
if (this->csTimer == 40) {
@ -1750,7 +1750,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
this->csState = 107;
this->csTimer = 0;
Message_StartTextbox(play, 0x70D2, NULL);
func_8002DF54(play, &this->actor, 0x39);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
}
break;
@ -1792,7 +1792,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
this->csState = 109;
this->csCamIndex = 0;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Flags_SetSwitch(play, 0x37);
}
break;

View file

@ -196,7 +196,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
objectIdx = Object_GetIndex(&play->objectCtx, OBJECT_GANON_ANIME3);
if (Object_IsLoaded(&play->objectCtx, objectIdx)) {
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -267,11 +267,11 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
}
if (this->unk_398 == 40) {
sZelda->unk_3C8 = 1;
func_8002DF54(play, &this->actor, 0x4E);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_78);
}
if (this->unk_398 == 85) {
sZelda->unk_3C8 = 2;
func_8002DF54(play, &this->actor, 0x4F);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_79);
}
this->subCamEye.x = 930.0f;
this->subCamEye.y = 1129.0f;
@ -300,14 +300,14 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
}
if (this->unk_398 == 20) {
sZelda->unk_3C8 = 3;
func_8002DF54(play, &this->actor, 0x50);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_80);
}
if (this->unk_398 == 55) {
this->unk_39C = 4;
this->unk_398 = 0;
this->unk_410.x = 0.0f;
sZelda->unk_3C8 = 4;
func_8002DF54(play, &this->actor, 0x50);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_80);
}
break;
case 4:
@ -324,7 +324,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 5;
this->unk_398 = 0;
}
@ -371,7 +371,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
}
if (this->unk_398 == 30) {
sZelda->unk_3C8 = 5;
func_8002DF54(play, &this->actor, 0x51);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_81);
}
if (this->unk_398 == 50) {
this->unk_398 = 0;
@ -402,7 +402,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
func_80078884(NA_SE_EV_STONE_BOUND);
}
if (this->unk_398 == 30) {
func_8002DF54(play, &this->actor, 0x52);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_82);
}
if (this->unk_398 == 50) {
this->unk_398 = 0;
@ -469,7 +469,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
this->subCamAt.y = player->actor.world.pos.y;
this->subCamAt.z = player->actor.world.pos.z - 200.0f;
if (this->unk_398 == 20) {
func_8002DF54(play, &this->actor, 0x1E);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_30);
}
if (this->unk_398 == 60) {
this->subCamEye.x = (this->actor.world.pos.x + 200.0f) - 154.0f;
@ -558,7 +558,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
SkelAnime_Free(&this->skelAnime, play);
SkelAnime_InitFlex(play, &this->skelAnime, &gGanonSkel, NULL, NULL, NULL, 0);
BossGanon2_SetObjectSegment(this, play, OBJECT_GANON_ANIME3, false);
func_8002DF54(play, &this->actor, 0x54);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_84);
this->unk_314 = 3;
}
// fake, tricks the compiler into using stack the way we need it to
@ -614,7 +614,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
this->actor.world.pos.x += 250;
this->actor.world.pos.y = 1886.0f;
this->unk_394 = 0.0f;
func_8002DF54(play, &this->actor, 0x53);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_83);
this->unk_30C = 5.0f;
this->unk_228 = 1.0f;
}
@ -699,7 +699,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
if (this->unk_398 == 215) {
this->unk_39C = 23;
this->unk_224 = 0.0f;
func_8002DF54(play, &this->actor, 0x55);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_85);
}
break;
case 23:
@ -719,7 +719,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_398 == 228) {
func_80078884(NA_SE_IT_SHIELD_REFLECT_SW);
func_8002DF54(play, &this->actor, 0x56);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_86);
Rumble_Override(0.0f, 255, 10, 50);
}
if (this->unk_398 >= 229) {
@ -756,7 +756,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
func_80078884(NA_SE_IT_SWORD_SWING);
}
if (this->unk_398 == 25) {
func_8002DF54(play, &this->actor, 0x57);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_87);
this->unk_39C = 25;
this->unk_398 = 0;
}
@ -804,7 +804,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
case 27:
this->subCamUp.z = 0.0f;
if (this->unk_398 == 4) {
func_8002DF54(play, &this->actor, 0x58);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_88);
}
this->subCamEye.x = player->actor.world.pos.x - 20.0f;
this->subCamEye.y = player->actor.world.pos.y + 50.0f;
@ -877,7 +877,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 0;
this->unk_337 = 1;
func_808FFDB0(this, play);
@ -1299,7 +1299,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->unk_39C = 1;
this->subCamEye = mainCam1->eye;
this->subCamAt = mainCam1->at;
@ -1348,7 +1348,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 3;
}
break;
@ -1359,7 +1359,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
this->unk_39C = 11;
this->unk_334 = 1;
func_8002DF54(play, &this->actor, 0x60);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_96);
this->unk_398 = 0;
FALLTHROUGH;
case 11:
@ -1381,7 +1381,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
}
@ -1485,7 +1485,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->unk_39C = 1;
this->unk_398 = 0;
sZelda->unk_3C8 = 9;
@ -1522,7 +1522,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
this->skelAnime.playSpeed = 3.0f;
}
if (this->unk_398 == 120) {
func_8002DF54(play, &this->actor, 0x63);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_99);
}
this->actor.world.rot.y = 0x4000;
this->actor.world.pos.x = this->actor.world.pos.z = 0.0f;
@ -1590,7 +1590,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
this->unk_39C = 5;
this->unk_398 = 40;
this->skelAnime.playSpeed = 1.0f;
func_8002DF54(play, &this->actor, 0x64);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_100);
}
break;
case 5:
@ -1604,10 +1604,10 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
Math_ApproachZeroF(&this->unk_38C, 1.0f, 8.0f);
}
if (this->unk_398 == 70) {
func_8002DF54(play, &this->actor, 0x65);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_101);
}
if (this->unk_398 == 150) {
func_8002DF54(play, &this->actor, 0x66);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_102);
}
this->unk_30C = 10.0f;
player->actor.world.pos.x = 250.0f;
@ -1626,7 +1626,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 6;
}
break;
@ -1645,7 +1645,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
this->unk_398 = 0;
Animation_MorphToPlayOnce(&this->skelAnime, &gGanonFinalBlowAnim, 0.0f);
this->unk_194 = Animation_GetLastFrame(&gGanonFinalBlowAnim);
play->startPlayerCutscene(play, &this->actor, 0x61);
play->startPlayerCutscene(play, &this->actor, PLAYER_CSMODE_97);
} else {
break;
}
@ -1712,7 +1712,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
if (this->unk_398 == 55) {
Animation_MorphToPlayOnce(&this->skelAnime, &gGanonDeadStartAnim, 0.0f);
this->unk_194 = Animation_GetLastFrame(&gGanonDeadStartAnim);
func_8002DF54(play, &this->actor, 0x62);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_98);
this->unk_39C = 8;
this->unk_398 = 1000;
}

View file

@ -956,7 +956,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
switch (this->deathState) {
case DEATH_START:
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
osSyncPrintf("7\n");
@ -1118,7 +1118,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, GND_BOSSROOM_CENTER_X, GND_BOSSROOM_CENTER_Y,
GND_BOSSROOM_CENTER_Z + 200.0f, 0, 0, 0, 0);
this->actor.child = &horse->actor;

View file

@ -629,7 +629,7 @@ void BossGoma_SetupEncounterState4(BossGoma* this, PlayState* play) {
this->actionState = 4;
this->actor.flags |= ACTOR_FLAG_0;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -686,7 +686,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_SHUTTER, 164.72f, -480.0f,
397.68002f, 0, -0x705C, 0, 0x180);
} else {
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->actionState = 1;
}
}
@ -757,7 +757,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
}
if (this->frameCount == 190) {
func_8002DF54(play, &this->actor, 2);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_2);
}
if (this->frameCount >= 228) {
@ -768,7 +768,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->actionState = 3;
}
break;
@ -964,7 +964,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
this->disableGameplayLogic = false;
this->patienceTimer = 200;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
}
@ -1053,7 +1053,7 @@ void BossGoma_Defeated(BossGoma* this, PlayState* play) {
case 0:
this->actionState = 1;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -1181,7 +1181,7 @@ void BossGoma_Defeated(BossGoma* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_Kill(&this->actor);
}

View file

@ -835,7 +835,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
if (&this->actor == player->actor.parent) {
player->unk_850 = 0x65;
player->actor.parent = NULL;
player->csMode = 0;
player->csMode = PLAYER_CSMODE_NONE;
if (this->timers[0] == 0) {
func_8002F6D4(play, &this->actor, 20.0f, this->actor.shape.rot.y + 0x8000, 10.0f, 0);
}
@ -865,7 +865,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
if (&this->actor == player->actor.parent) {
player->unk_850 = 0x65;
player->actor.parent = NULL;
player->csMode = 0;
player->csMode = PLAYER_CSMODE_NONE;
}
Math_ApproachF(&this->tentRippleSize, 0.15f, 0.5f, 0.01);
if (this->meltIndex < 41) {
@ -1225,7 +1225,7 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) {
(fabsf(player->actor.world.pos.x - -180.0f) < 40.0f))) {
// checks if Link is on one of the four platforms
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -1333,11 +1333,11 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) {
Math_ApproachF(&this->actor.speedXZ, sp80, 1.0f, sp78);
Math_ApproachF(&this->subCamYawRate, sp7C, 1.0f, 128.0f);
if (this->work[MO_TENT_MOVE_TIMER] == 525) {
func_8002DF54(play, &this->actor, 2);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_2);
}
if (this->work[MO_TENT_MOVE_TIMER] > 540) {
this->csState = MO_INTRO_REVEAL;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
sMorphaTent1->drawActor = true;
player->actor.world.pos.x = 180.0f;
player->actor.world.pos.z = -210.0f;
@ -1446,7 +1446,7 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) {
// MO_BATTLE / SUB_CAM_ID_DONE
this->csState = this->subCamId = 0;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
}
@ -1511,7 +1511,7 @@ void BossMo_DeathCs(BossMo* this, PlayState* play) {
switch (this->csState) {
case MO_DEATH_START:
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -1681,7 +1681,7 @@ void BossMo_DeathCs(BossMo* this, PlayState* play) {
func_800C08AC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sMorphaTent1->actor.world.pos.y = -1000.0f;
}
} else {
@ -1786,7 +1786,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
if (player->actor.parent != NULL) {
player->unk_850 = 0x65;
player->actor.parent = NULL;
player->csMode = 0;
player->csMode = PLAYER_CSMODE_NONE;
}
} else {
this->actor.colChkInfo.health = 1;
@ -1805,7 +1805,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
if (player->actor.parent == &sMorphaTent1->actor) {
player->unk_850 = 0x65;
player->actor.parent = NULL;
player->csMode = 0;
player->csMode = PLAYER_CSMODE_NONE;
}
}
this->work[MO_TENT_ACTION_STATE] = MO_CORE_STUNNED;

View file

@ -371,7 +371,7 @@ void BossSst_HeadSetupIntro(BossSst* this, PlayState* play) {
player->stateFlags1 |= PLAYER_STATE1_5;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
sSubCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_ACTIVE);
@ -404,7 +404,7 @@ void BossSst_HeadIntro(BossSst* this, PlayState* play) {
sHands[LEFT]->actor.flags |= ACTOR_FLAG_0;
player->stateFlags1 &= ~PLAYER_STATE1_5;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sSubCamAt.y += 30.0f;
sSubCamAt.z += 300.0f;
Play_CameraSetAtEye(play, sSubCamId, &sSubCamAt, &sSubCamEye);
@ -814,7 +814,8 @@ void BossSst_HeadUnfreezeHand(BossSst* this, PlayState* play) {
void BossSst_HeadSetupStunned(BossSst* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadKnockoutAnim, -5.0f);
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, Animation_GetLastFrame(&gBongoHeadKnockoutAnim));
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gBongoHeadKnockoutAnim));
this->colliderJntSph.base.atFlags &= ~(AT_ON | AT_HIT);
this->colliderCyl.base.acFlags &= ~AC_ON;
this->vVanish = false;
@ -904,9 +905,12 @@ void BossSst_HeadVulnerable(BossSst* this, PlayState* play) {
void BossSst_HeadSetupDamage(BossSst* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadDamageAnim, -3.0f);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, Animation_GetLastFrame(&gBongoHeadDamageAnim));
Actor_SetColorFilter(&sHands[LEFT]->actor, 0x4000, 0xFF, 0, Animation_GetLastFrame(&gBongoHeadDamageAnim));
Actor_SetColorFilter(&sHands[RIGHT]->actor, 0x4000, 0xFF, 0, Animation_GetLastFrame(&gBongoHeadDamageAnim));
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gBongoHeadDamageAnim));
Actor_SetColorFilter(&sHands[LEFT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gBongoHeadDamageAnim));
Actor_SetColorFilter(&sHands[RIGHT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gBongoHeadDamageAnim));
this->colliderCyl.base.acFlags &= ~AC_ON;
BossSst_HeadSfx(this, NA_SE_EN_SHADEST_DAMAGE);
this->actionFunc = BossSst_HeadDamage;
@ -1007,9 +1011,9 @@ void BossSst_HeadSetupDeath(BossSst* this, PlayState* play) {
Animation_MorphToLoop(&this->skelAnime, &gBongoHeadEyeOpenIdleAnim, -5.0f);
BossSst_HeadSfx(this, NA_SE_EN_SHADEST_DEAD);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 60);
Actor_SetColorFilter(&sHands[LEFT]->actor, 0x4000, 0xFF, 0, 60);
Actor_SetColorFilter(&sHands[RIGHT]->actor, 0x4000, 0xFF, 0, 60);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 60);
Actor_SetColorFilter(&sHands[LEFT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 60);
Actor_SetColorFilter(&sHands[RIGHT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 60);
this->timer = 60;
this->colliderCyl.base.acFlags &= ~AC_ON;
this->colliderJntSph.base.ocFlags1 &= ~OC1_ON;
@ -1020,7 +1024,7 @@ void BossSst_HeadSetupDeath(BossSst* this, PlayState* play) {
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_ACTIVE);
Play_CopyCamera(play, sSubCamId, CAM_ID_MAIN);
func_8002DF54(play, &player->actor, 8);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
func_80064520(play, &play->csCtx);
Math_Vec3f_Copy(&sSubCamEye, &GET_ACTIVE_CAM(play)->eye);
this->actionFunc = BossSst_HeadDeath;
@ -1183,7 +1187,7 @@ void BossSst_HeadFinish(BossSst* this, PlayState* play) {
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
Play_ClearCamera(play, sSubCamId);
func_8002DF54(play, &GET_PLAYER(play)->actor, 7);
func_8002DF54(play, &GET_PLAYER(play)->actor, PLAYER_CSMODE_7);
func_80064534(play, &play->csCtx);
Actor_Kill(&this->actor);
Actor_Kill(&sHands[LEFT]->actor);
@ -1962,7 +1966,7 @@ void BossSst_HandSetupReel(BossSst* this) {
Animation_MorphToPlayOnce(&this->skelAnime, sHandFlatPoses[this->actor.params], 4.0f);
this->timer = 36;
Math_Vec3f_Copy(&this->center, &this->actor.world.pos);
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 200);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 200);
this->actionFunc = BossSst_HandReel;
}
@ -2086,7 +2090,8 @@ void BossSst_HandSetupStunned(BossSst* hand) {
hand->colliderJntSph.base.atFlags &= ~(AT_ON | AT_HIT);
hand->colliderJntSph.base.acFlags |= AC_ON;
BossSst_HandSetInvulnerable(hand, true);
Actor_SetColorFilter(&hand->actor, 0, 0xFF, 0, Animation_GetLastFrame(&gBongoHeadKnockoutAnim));
Actor_SetColorFilter(&hand->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gBongoHeadKnockoutAnim));
hand->actionFunc = BossSst_HandStunned;
}
@ -2286,7 +2291,7 @@ void BossSst_HandSetupFrozen(BossSst* this) {
}
BossSst_SpawnIceCrystal(this, 0);
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 0xA);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 10);
this->handAngSpeed = 0;
this->actionFunc = BossSst_HandFrozen;
}

View file

@ -1499,7 +1499,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
case 0:
this->csState2 = 1;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 0x39);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -1639,7 +1639,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaIntroAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaIntroAnim);
this->timers[0] = 50;
func_8002DF54(play, &this->actor, 2);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_2);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_TWINROBA_TRANSFORM);
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_BOSS);
}
@ -1682,7 +1682,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
}
if (this->timers[3] == 19) {
func_8002DF54(play, &this->actor, 5);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_5);
}
if (this->timers[3] == 16) {
@ -1715,7 +1715,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
this->subCamId = SUB_CAM_ID_DONE;
this->csState2 = this->subCamId;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->work[TW_PLLR_IDX] = 0;
this->targetPos = sTwinrovaPillarPos[0];
BossTw_TwinrovaSetupFly(this, play);
@ -1795,7 +1795,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
player->actor.world.pos.x = player->actor.world.pos.z = .0f;
this->csState2 = 1;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 0x39);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -2278,7 +2278,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
this->subCamId = SUB_CAM_ID_DONE;
this->csState2 = this->subCamId;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossTw_SetupWait(this, play);
}
break;
@ -2682,7 +2682,7 @@ void BossTw_TwinrovaDeathCS(BossTw* this, PlayState* play) {
case 0:
this->csState2 = 1;
func_80064520(play, &play->csCtx);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@ -2721,7 +2721,7 @@ void BossTw_TwinrovaDeathCS(BossTw* this, PlayState* play) {
sKoumePtr->actor.world.pos.z = sKotakePtr->actor.world.pos.z;
sKoumePtr->work[YAW_TGT] = sKotakePtr->work[YAW_TGT] = sKoumePtr->actor.shape.rot.x =
sKotakePtr->actor.shape.rot.x = sKoumePtr->actor.shape.rot.y = sKotakePtr->actor.shape.rot.y = 0;
func_8002DF54(play, &sKoumePtr->actor, 1);
func_8002DF54(play, &sKoumePtr->actor, PLAYER_CSMODE_1);
sKoumePtr->actor.flags |= ACTOR_FLAG_0;
}
break;
@ -2810,7 +2810,7 @@ void BossTw_TwinrovaDeathCS(BossTw* this, PlayState* play) {
this->csState2 = 4;
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_BOSS_CLEAR);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 600.0f, 230.0f, 0.0f, 0, 0, 0,
WARP_DUNGEON_ADULT);

View file

@ -640,7 +640,7 @@ void BossVa_Init(Actor* thisx, PlayState* play2) {
if (GET_EVENTCHKINF(EVENTCHKINF_76)) {
sCsState = INTRO_CALL_BARI;
sDoorState = 100;
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
play->envCtx.screenFillColor[0] = 0xDC;
play->envCtx.screenFillColor[1] = 0xDC;
play->envCtx.screenFillColor[2] = 0xBE;
@ -781,7 +781,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
play->envCtx.screenFillColor[1] = 0xDC;
play->envCtx.screenFillColor[2] = 0xBE;
play->envCtx.screenFillColor[3] = 0xD2;
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
player->actor.world.rot.y = player->actor.shape.rot.y = 0x7FFF;
sCsState++;
break;
@ -809,7 +809,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
case INTRO_CLOSE_DOOR:
this->timer--;
if (this->timer == 0) {
func_8002DF54(play, &this->actor, 2);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_2);
sCsState++;
this->timer = 30;
}
@ -824,7 +824,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
}
break;
case INTRO_CRACKLE:
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
sCsState++;
break;
case INTRO_SPAWN_BARI:
@ -955,7 +955,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
sSubCamAtMaxVelFrac = sSubCamEyeMaxVelFrac;
if (this->timer >= 45000) {
play->envCtx.lightSettingOverride = 1;
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
} else if (this->timer >= 35000) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_BOSS);
}
@ -1012,7 +1012,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
sSubCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sCsState++;
SET_EVENTCHKINF(EVENTCHKINF_76);
player->actor.shape.rot.y = player->actor.world.rot.y = this->actor.yawTowardsPlayer + 0x8000;
@ -1075,7 +1075,7 @@ void BossVa_BodyPhase1(BossVa* this, PlayState* play) {
if (sBodyState & 0x7F) {
this->skelAnime.curFrame = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 12);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_DAMAGE);
}
@ -1126,7 +1126,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
if (this->actor.colorFilterTimer == 0) {
sPhase2Timer++;
if ((this->invincibilityTimer != 0) && (this->actor.colorFilterParams & 0x4000)) {
Actor_SetColorFilter(&this->actor, 0, 255, 0, 160);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160);
this->actor.colorFilterTimer = this->invincibilityTimer;
} else {
this->colliderBody.info.bumper.dmgFlags = DMG_BOOMERANG;
@ -1138,7 +1138,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
if (this->colliderBody.base.ac->id == ACTOR_EN_BOOM) {
sPhase2Timer &= 0xFE00;
Actor_SetColorFilter(&this->actor, 0, 255, 0, 160);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160);
this->colliderBody.info.bumper.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK;
} else {
sKillBari++;
@ -1149,7 +1149,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
}
}
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 12);
}
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_FAINT);
@ -1243,7 +1243,7 @@ void BossVa_BodyPhase3(BossVa* this, PlayState* play) {
if (this->colliderBody.base.acFlags & AC_HIT) {
this->skelAnime.curFrame = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 12);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_FAINT);
sBodyState = 1;
this->timer = 131;
@ -1374,7 +1374,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) {
if (this->actor.colChkInfo.damageEffect != 1) {
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_DAMAGE);
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 12);
sPhase4HP -= this->actor.colChkInfo.damage;
if (sPhase4HP <= 0) {
this->timer = 0;
@ -1392,7 +1392,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) {
this->timer = (s16)Rand_CenteredFloat(40.0f) + 160;
this->vaBodySpinRate = 0;
this->actor.speedXZ = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 125, 0, 255);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 125, COLORFILTER_BUFFLAG_OPA, 255);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_FAINT);
}
}
@ -1530,7 +1530,7 @@ void BossVa_BodyDeath(BossVa* this, PlayState* play) {
switch (sCsState) {
case DEATH_START:
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
func_80064520(play, &play->csCtx);
sSubCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@ -1592,7 +1592,7 @@ void BossVa_BodyDeath(BossVa* this, PlayState* play) {
EffectSsDeadSound_SpawnStationary(play, &this->actor.projectedPos, NA_SE_EN_BALINADE_DEAD, 1, 1, 0x28);
this->onCeiling = 2; // Not used by body
BossVa_SetDeathEnv(play);
func_8002DF54(play, &this->actor, 8);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
}
break;
case DEATH_CORE_BURST:
@ -1633,7 +1633,7 @@ void BossVa_BodyDeath(BossVa* this, PlayState* play) {
mainCam->at = sSubCamAt;
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sCsState++;
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, this->actor.world.pos.x, this->actor.world.pos.y,
@ -1718,7 +1718,7 @@ void BossVa_SetupSupportAttached(BossVa* this, PlayState* play) {
void BossVa_SupportAttached(BossVa* this, PlayState* play) {
this->timer++;
if (sBodyState & 0x7F) {
Actor_SetColorFilter(&this->actor, 0, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 12);
if (Rand_ZeroOne() > 0.5f) {
Animation_Change(&this->skelAnime, &gBarinadeSupportDamage1Anim, 1.0f, 0.0f,
Animation_GetLastFrame(&gBarinadeSupportDamage1Anim), ANIMMODE_ONCE, 0.0f);
@ -2114,7 +2114,7 @@ void BossVa_SetupZapperDamaged(BossVa* this, PlayState* play) {
Animation_GetLastFrame(&gBarinadeZapperDamage2Anim), ANIMMODE_ONCE_INTERP, 4.0f);
}
Actor_SetColorFilter(&this->actor, 0, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 12);
this->burst = false;
BossVa_SetupAction(this, BossVa_ZapperDamaged);
}
@ -2417,7 +2417,7 @@ void BossVa_BariIntro(BossVa* this, PlayState* play) {
switch (sCsState) {
case INTRO_LOOK_BARI:
if (this->actor.params == BOSSVA_BARI_UPPER_1) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
if (Math_SmoothStepToF(&this->actor.world.pos.y, 60.0f, 0.3f, 1.0f, 0.15f) == 0.0f) {
this->timer--;
if (this->timer == 0) {
@ -2687,7 +2687,8 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) {
} else {
this->unk_1AC = 0;
if (this->actor.colorFilterTimer == 0) {
Actor_SetColorFilter(&this->actor, 0, 255, 0x2000, GET_BODY(this)->actor.colorFilterTimer);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU,
GET_BODY(this)->actor.colorFilterTimer);
}
}
@ -2722,7 +2723,7 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) {
void BossVa_SetupBariPhase3Stunned(BossVa* this, PlayState* play) {
this->actor.flags |= ACTOR_FLAG_0;
this->timer = GET_BODY(this)->timer;
Actor_SetColorFilter(&this->actor, 0, 255, 0x2000, this->timer);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU, this->timer);
BossVa_SetupAction(this, BossVa_BariPhase3Stunned);
}

View file

@ -868,7 +868,7 @@ void func_80986B2C(PlayState* play) {
play->nextEntranceIndex = ENTR_HYRULE_FIELD_0;
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
play->transitionTrigger = TRANS_TRIGGER_START;
func_8002DF54(play, &player->actor, 8);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
}
}

View file

@ -118,7 +118,7 @@ void DoorAna_WaitClosed(DoorAna* this, PlayState* play) {
Audio_PlaySfxGeneral(NA_SE_SY_CORRECT_CHIME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
func_8002F5F0(&this->actor, play);
Actor_SetClosestSecretDistance(&this->actor, play);
}
// update routine for grottos that are open

View file

@ -750,7 +750,7 @@ void func_80997220(DoorShutter* this, PlayState* play) {
this->dyna.actor.velocity.y = 0.0f;
if (DoorShutter_SetupDoor(this, play) && !(player->stateFlags1 & PLAYER_STATE1_11)) {
DoorShutter_SetupAction(this, func_80997568);
func_8002DF54(play, NULL, 2);
func_8002DF54(play, NULL, PLAYER_CSMODE_2);
}
}
@ -784,7 +784,7 @@ void DoorShutter_JabuDoorClose(DoorShutter* this, PlayState* play) {
void func_80997568(DoorShutter* this, PlayState* play) {
if (this->unk_16F++ > 30) {
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
DoorShutter_SetupDoor(this, play);
}
}

View file

@ -466,7 +466,7 @@ void DoorWarp1_ChildWarpIdle(DoorWarp1* this, PlayState* play) {
Audio_PlaySfxGeneral(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
OnePointCutscene_Init(play, 0x25E7, 999, &this->actor, CAM_ID_MAIN);
func_8002DF54(play, &this->actor, 10);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_10);
player->unk_450.x = this->actor.world.pos.x;
player->unk_450.z = this->actor.world.pos.z;
@ -542,7 +542,7 @@ void DoorWarp1_RutoWarpIdle(DoorWarp1* this, PlayState* play) {
if (this->rutoWarpState != WARP_BLUE_RUTO_STATE_INITIAL && DoorWarp1_PlayerInRange(this, play)) {
this->rutoWarpState = WARP_BLUE_RUTO_STATE_ENTERED;
func_8002DF54(play, &this->actor, 10);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_10);
this->unk_1B2 = 1;
DoorWarp1_SetupAction(this, func_80999EE0);
}
@ -650,7 +650,7 @@ void DoorWarp1_AdultWarpIdle(DoorWarp1* this, PlayState* play) {
player = GET_PLAYER(play);
OnePointCutscene_Init(play, 0x25E8, 999, &this->actor, CAM_ID_MAIN);
func_8002DF54(play, &this->actor, 10);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_10);
player->unk_450.x = this->actor.world.pos.x;
player->unk_450.z = this->actor.world.pos.z;
this->unk_1B2 = 20;

View file

@ -379,7 +379,7 @@ void EnAm_Sleep(EnAm* this, PlayState* play) {
if (this->textureBlend == 0) {
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EN_AMOS_WAVE);
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EN_AMOS_VOICE);
Actor_SetColorFilter(&this->dyna.actor, 0x4000, 255, 0, 8);
Actor_SetColorFilter(&this->dyna.actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
}
if (this->textureBlend >= 240) {
@ -717,7 +717,7 @@ void EnAm_SetupStunned(EnAm* this, PlayState* play) {
this->dyna.actor.speedXZ = -6.0f;
}
Actor_SetColorFilter(&this->dyna.actor, 0, 120, 0, 100);
Actor_SetColorFilter(&this->dyna.actor, COLORFILTER_COLORFLAG_BLUE, 120, COLORFILTER_BUFFLAG_OPA, 100);
if (this->damageEffect == AM_DMGEFF_ICE) {
this->iceTimer = 48;
@ -881,7 +881,7 @@ void EnAm_Update(Actor* thisx, PlayState* play) {
}
if ((this->deathTimer % 4) == 0) {
Actor_SetColorFilter(&this->dyna.actor, 0x4000, 255, 0, 4);
Actor_SetColorFilter(&this->dyna.actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 4);
}
}

View file

@ -125,7 +125,7 @@ void func_809B0558(EnAni* this, PlayState* play) {
}
SET_ITEMGETINF(ITEMGETINF_15);
} else {
func_8002F434(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
}
}
@ -133,7 +133,7 @@ void func_809B05F0(EnAni* this, PlayState* play) {
if (Actor_TextboxIsClosing(&this->actor, play)) {
EnAni_SetupAction(this, func_809B0558);
}
func_8002F434(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
}
void func_809B064C(EnAni* this, PlayState* play) {

View file

@ -344,7 +344,7 @@ void EnAnubice_Die(EnAnubice* this, PlayState* play) {
rotatedFireEffectPos.x += this->actor.world.pos.x + Rand_CenteredFloat(40.0f);
rotatedFireEffectPos.y += this->actor.world.pos.y + Rand_CenteredFloat(40.0f);
rotatedFireEffectPos.z += this->actor.world.pos.z + Rand_CenteredFloat(30.0f);
Actor_SetColorFilter(&this->actor, 0x4000, 128, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 128, COLORFILTER_BUFFLAG_OPA, 8);
EffectSsEnFire_SpawnVec3f(play, &this->actor, &rotatedFireEffectPos, 100, 0, 0, -1);
if ((this->animLastFrame <= curFrame) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {

View file

@ -325,7 +325,7 @@ void func_809B7174(EnBa* this) {
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
this->actor.speedXZ = 10.0f;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BALINADE_HAND_DAMAGE);
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 12);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 12);
EnBa_SetupAction(this, EnBa_RecoilFromDamage);
}

View file

@ -516,7 +516,7 @@ void EnBb_SetupDamage(EnBb* this) {
if (this->actor.params == ENBB_RED) {
EnBb_KillFlameTrail(this);
}
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 0xC);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 12);
this->timer = 5;
EnBb_SetupAction(this, EnBb_Damage);
}
@ -1083,14 +1083,14 @@ void EnBb_SetupStunned(EnBb* this) {
}
switch (this->dmgEffect) {
case 8:
Actor_SetColorFilter(&this->actor, -0x8000, 0xC8, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_GRAY, 200, COLORFILTER_BUFFLAG_OPA, 80);
break;
case 9:
this->fireIceTimer = 0x30;
FALLTHROUGH;
case 15:
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
Actor_SetColorFilter(&this->actor, 0, 0xB4, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 180, COLORFILTER_BUFFLAG_OPA, 80);
break;
}
this->actor.bgCheckFlags &= ~BGCHECKFLAG_GROUND;
@ -1205,7 +1205,7 @@ void EnBb_CollisionCheck(EnBb* this, PlayState* play) {
//! the bug in EnBb_Draw below to crash the game.
} else if ((this->actor.params == ENBB_WHITE) &&
((this->action == BB_WHITE) || (this->action == BB_STUNNED))) {
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 0xC);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 12);
this->actor.speedXZ = -8.0f;
this->maxSpeed = 0.0f;
this->actor.world.rot.y = this->actor.yawTowardsPlayer;

View file

@ -340,7 +340,7 @@ void func_809BD524(EnBigokuta* this) {
this->unk_195 = false;
this->unk_196 = 80;
}
Actor_SetColorFilter(&this->actor, 0, 255, 0, this->unk_196);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, this->unk_196);
this->actionFunc = func_809BE058;
}
@ -349,7 +349,7 @@ void func_809BD5E0(EnBigokuta* this) {
this->unk_196 = 24;
this->unk_19A = 0;
this->cylinder[0].base.atFlags &= ~AT_ON;
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 24);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 24);
this->actionFunc = func_809BE180;
}
void func_809BD658(EnBigokuta* this) {

View file

@ -221,7 +221,7 @@ void EnBili_SetupBurnt(EnBili* this) {
this->collider.base.acFlags &= ~AC_ON;
this->actor.flags |= ACTOR_FLAG_4;
this->actor.speedXZ = 0.0f;
Actor_SetColorFilter(&this->actor, 0x4000, 0xC8, 0x2000, 0x14);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_XLU, 20);
this->actionFunc = EnBili_Burnt;
}
@ -240,7 +240,7 @@ void EnBili_SetupStunned(EnBili* this) {
this->collider.info.bumper.effect = 0;
this->actor.gravity = -1.0f;
this->actor.speedXZ = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 0x96, 0x2000, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 150, COLORFILTER_BUFFLAG_XLU, 80);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
this->collider.base.atFlags &= ~AT_ON;
this->actionFunc = EnBili_Stunned;
@ -268,7 +268,7 @@ void EnBili_SetupFrozen(EnBili* this, PlayState* play) {
}
this->actor.speedXZ = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 0x96, 0x2000, 0xA);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 150, COLORFILTER_BUFFLAG_XLU, 10);
this->collider.base.atFlags &= ~AT_ON;
this->collider.base.acFlags &= ~AC_ON;
this->timer = 300;
@ -566,7 +566,7 @@ void EnBili_UpdateDamage(EnBili* this, PlayState* play) {
}
} else if (damageEffect == BIRI_DMGEFF_SWORD) {
if (this->actionFunc != EnBili_Stunned) {
Actor_SetColorFilter(&this->actor, 0x4000, 0xC8, 0x2000, 0xA);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_XLU, 10);
if (this->actor.colChkInfo.health == 0) {
this->actor.params = EN_BILI_TYPE_DYING;

View file

@ -150,7 +150,7 @@ void EnBom_Move(EnBom* this, PlayState* play) {
this->actor.velocity.y *= -0.3f;
this->actor.bgCheckFlags &= ~BGCHECKFLAG_GROUND_TOUCH;
} else if (this->timer >= 4) {
func_8002F580(&this->actor, play);
Actor_OfferCarry(&this->actor, play);
}
}

View file

@ -262,7 +262,7 @@ void EnBomBowMan_RunGame(EnBomBowlMan* this, PlayState* play) {
Message_StartTextbox(play, this->actor.textId, NULL);
if (this->gameResult == 2) {
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
}
this->actionFunc = EnBomBowlMan_HandlePlayChoice;
} else {
@ -307,7 +307,7 @@ void EnBomBowlMan_HandlePlayChoice(EnBomBowlMan* this, PlayState* play) {
Message_ContinueTextbox(play, this->actor.textId);
this->dialogState = TEXT_STATE_EVENT;
OnePointCutscene_Init(play, 8010, -99, NULL, CAM_ID_MAIN);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnBomBowMan_SetupChooseShowPrize;
}
} else {
@ -343,11 +343,11 @@ void func_809C41FC(EnBomBowlMan* this, PlayState* play) {
Message_ContinueTextbox(play, this->actor.textId);
this->dialogState = TEXT_STATE_EVENT;
OnePointCutscene_Init(play, 8010, -99, NULL, CAM_ID_MAIN);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnBomBowMan_SetupChooseShowPrize;
} else {
if (this->gameResult == 2) {
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
}
this->actionFunc = EnBomBowMan_SetupRunGame;
}
@ -459,7 +459,7 @@ void EnBomBowlMan_BeginPlayGame(EnBomBowlMan* this, PlayState* play) {
// "Wow"
osSyncPrintf(VT_FGCOL(YELLOW) "☆ わー ☆ %d\n" VT_RST, play->bombchuBowlingStatus);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actionFunc = EnBomBowMan_SetupRunGame;
}
}

View file

@ -67,7 +67,7 @@ void EnBomBowlPit_DetectHit(EnBomBowlPit* this, PlayState* play) {
if (((fabsf(chuPosDiff.x) < 40.0f) || (BREG(2))) && ((fabsf(chuPosDiff.y) < 40.0f) || (BREG(2))) &&
((fabsf(chuPosDiff.z) < 40.0f) || (BREG(2)))) {
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
chu->timer = 1;
this->subCamId = Play_CreateSubCamera(play);
@ -106,7 +106,7 @@ void EnBomBowlPit_DetectHit(EnBomBowlPit* this, PlayState* play) {
Message_StartTextbox(play, this->actor.textId, NULL);
this->unk_154 = TEXT_STATE_EVENT;
func_80078884(NA_SE_EV_HIT_SOUND);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->status = 1;
this->actionFunc = EnBomBowlPit_CameraDollyIn;
break;
@ -169,7 +169,7 @@ void EnBomBowlPit_SetupGivePrize(EnBomBowlPit* this, PlayState* play) {
Play_ClearCamera(play, this->subCamId);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnBomBowlPit_GivePrize;
}
}
@ -177,7 +177,7 @@ void EnBomBowlPit_SetupGivePrize(EnBomBowlPit* this, PlayState* play) {
void EnBomBowlPit_GivePrize(EnBomBowlPit* this, PlayState* play) {
Player* player = GET_PLAYER(play);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->getItemId = sGetItemIds[this->prizeIndex];
if ((this->getItemId == GI_BOMB_BAG_30) && (CUR_CAPACITY(UPG_BOMB_BAG) == 30)) {
@ -186,7 +186,7 @@ void EnBomBowlPit_GivePrize(EnBomBowlPit* this, PlayState* play) {
player->stateFlags1 &= ~PLAYER_STATE1_29;
this->actor.parent = NULL;
func_8002F434(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
player->stateFlags1 |= PLAYER_STATE1_29;
this->actionFunc = EnBomBowlPit_WaitTillPrizeGiven;
}
@ -195,7 +195,7 @@ void EnBomBowlPit_WaitTillPrizeGiven(EnBomBowlPit* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
this->actionFunc = EnBomBowlPit_Reset;
} else {
func_8002F434(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
}
}

View file

@ -191,7 +191,7 @@ void EnBombf_GrowBomb(EnBombf* this, PlayState* play) {
}
} else {
if (!Actor_HasParent(&this->actor, play)) {
func_8002F580(&this->actor, play);
Actor_OfferCarry(&this->actor, play);
} else {
player->actor.child = NULL;
player->heldActor = NULL;
@ -241,7 +241,7 @@ void EnBombf_Move(EnBombf* this, PlayState* play) {
func_8002F850(play, &this->actor);
this->actor.velocity.y *= -0.5f;
} else if (this->timer >= 4) {
func_8002F580(&this->actor, play);
Actor_OfferCarry(&this->actor, play);
}
}
}

View file

@ -267,7 +267,7 @@ void EnBox_FallOnSwitchFlag(EnBox* this, PlayState* play) {
s32 treasureFlag = this->dyna.actor.params & 0x1F;
if (treasureFlag >= ENBOX_TREASURE_FLAG_UNK_MIN && treasureFlag < ENBOX_TREASURE_FLAG_UNK_MAX) {
func_8002F5F0(&this->dyna.actor, play);
Actor_SetClosestSecretDistance(&this->dyna.actor, play);
}
if (this->unk_1A8 >= 0) {
@ -287,7 +287,7 @@ void func_809C9700(EnBox* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (treasureFlag >= ENBOX_TREASURE_FLAG_UNK_MIN && treasureFlag < ENBOX_TREASURE_FLAG_UNK_MAX) {
func_8002F5F0(&this->dyna.actor, play);
Actor_SetClosestSecretDistance(&this->dyna.actor, play);
}
if (Math3D_Vec3fDistSq(&this->dyna.actor.world.pos, &player->actor.world.pos) > SQ(150.0f)) {
@ -323,7 +323,7 @@ void EnBox_AppearOnSwitchFlag(EnBox* this, PlayState* play) {
s32 treasureFlag = this->dyna.actor.params & 0x1F;
if (treasureFlag >= ENBOX_TREASURE_FLAG_UNK_MIN && treasureFlag < ENBOX_TREASURE_FLAG_UNK_MAX) {
func_8002F5F0(&this->dyna.actor, play);
Actor_SetClosestSecretDistance(&this->dyna.actor, play);
}
if (Flags_GetSwitch(play, this->switchFlag)) {
@ -337,7 +337,7 @@ void EnBox_AppearOnRoomClear(EnBox* this, PlayState* play) {
s32 treasureFlag = this->dyna.actor.params & 0x1F;
if (treasureFlag >= ENBOX_TREASURE_FLAG_UNK_MIN && treasureFlag < ENBOX_TREASURE_FLAG_UNK_MAX) {
func_8002F5F0(&this->dyna.actor, play);
Actor_SetClosestSecretDistance(&this->dyna.actor, play);
}
if (Flags_GetTempClear(play, this->dyna.actor.room) && !Player_InCsMode(play)) {
@ -424,7 +424,7 @@ void EnBox_WaitOpen(EnBox* this, PlayState* play) {
func_8002DBD0(&this->dyna.actor, &sp4C, &player->actor.world.pos);
if (sp4C.z > -50.0f && sp4C.z < 0.0f && fabsf(sp4C.y) < 10.0f && fabsf(sp4C.x) < 20.0f &&
Player_IsFacingActor(&this->dyna.actor, 0x3000, play)) {
func_8002F554(&this->dyna.actor, play, 0 - (this->dyna.actor.params >> 5 & 0x7F));
Actor_OfferGetItemNearby(&this->dyna.actor, play, 0 - (this->dyna.actor.params >> 5 & 0x7F));
}
if (Flags_GetTreasure(play, this->dyna.actor.params & 0x1F)) {
EnBox_SetupAction(this, EnBox_Open);

View file

@ -127,7 +127,7 @@ void func_809CAEA0(EnBrob* this) {
void func_809CAEF4(EnBrob* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_brob_Anim_000290, -5.0f);
this->unk_1AE -= 125.0f;
Actor_SetColorFilter(&this->dyna.actor, 0, 0xFF, 0, 0x50);
Actor_SetColorFilter(&this->dyna.actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 80);
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EN_GOMA_JR_FREEZE);
this->actionFunc = func_809CB2B8;
}

View file

@ -694,7 +694,7 @@ void func_809D0584(EnBw* this, PlayState* play) {
if ((this->damageEffect == 1) || (this->damageEffect == 0xE)) {
if (this->unk_23C == 0) {
Actor_ApplyDamage(&this->actor);
Actor_SetColorFilter(&this->actor, 0, 0x78, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 120, COLORFILTER_BUFFLAG_OPA, 80);
func_809D03CC(this);
this->unk_248 = 0.0f;
}
@ -705,7 +705,7 @@ void func_809D0584(EnBw* this, PlayState* play) {
}
if (((this->unk_221 == 1) || (this->unk_221 == 4)) && (this->actor.colChkInfo.health == 0)) {
if (this->unk_220 != 0) {
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
if (func_800355E4(play, &this->collider2.base)) {
this->unk_230 = 0;
this->actor.scale.y -= 0.009f;
@ -719,7 +719,7 @@ void func_809D0584(EnBw* this, PlayState* play) {
}
} else if ((this->unk_220 != 1) && (this->unk_220 != 6)) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_BUBLEWALK_DAMAGE);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
if (this->unk_220 != 5) {
func_809D01CC(this);
}

View file

@ -348,7 +348,7 @@ void EnClearTag_Update(Actor* thisx, PlayState* play2) {
this->collider.base.acFlags &= ~AC_HIT;
this->crashingTimer = 20;
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 5);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 5);
this->acceleration.x = Rand_CenteredFloat(15.0f);
this->acceleration.y = Rand_CenteredFloat(15.0f);
this->acceleration.z = Rand_CenteredFloat(15.0f);

View file

@ -213,7 +213,7 @@ void func_809DF778(EnCow* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = func_809DF730;
} else {
func_8002F434(&this->actor, play, GI_MILK, 10000.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_MILK, 10000.0f, 100.0f);
}
}
@ -222,7 +222,7 @@ void func_809DF7D8(EnCow* this, PlayState* play) {
this->actor.flags &= ~ACTOR_FLAG_16;
Message_CloseTextbox(play);
this->actionFunc = func_809DF778;
func_8002F434(&this->actor, play, GI_MILK, 10000.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_MILK, 10000.0f, 100.0f);
}
}

View file

@ -157,7 +157,7 @@ void EnCrow_SetupDamaged(EnCrow* this, PlayState* play) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_KAICHO_DEAD);
if (this->actor.colChkInfo.damageEffect == 3) { // Ice arrows
Actor_SetColorFilter(&this->actor, 0, 255, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 40);
for (i = 0; i < 8; i++) {
iceParticlePos.x = ((i & 1 ? 7.0f : -7.0f) * scale) + this->actor.world.pos.x;
iceParticlePos.y = ((i & 2 ? 7.0f : -7.0f) * scale) + this->actor.world.pos.y;
@ -166,13 +166,13 @@ void EnCrow_SetupDamaged(EnCrow* this, PlayState* play) {
((Rand_ZeroOne() * 0.15f) + 0.85f) * scale);
}
} else if (this->actor.colChkInfo.damageEffect == 2) { // Fire arrows and Din's Fire
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 40);
for (i = 0; i < 4; i++) {
EffectSsEnFire_SpawnVec3f(play, &this->actor, &this->actor.world.pos, 50.0f * scale, 0, 0, i);
}
} else {
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 40);
}
if (this->actor.flags & ACTOR_FLAG_15) {
@ -196,7 +196,7 @@ void EnCrow_SetupTurnAway(EnCrow* this) {
this->aimRotX = -0x1000;
this->aimRotY = this->actor.yawTowardsPlayer + 0x8000;
this->skelAnime.playSpeed = 2.0f;
Actor_SetColorFilter(&this->actor, 0, 255, 0, 5);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 5);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
this->actionFunc = EnCrow_TurnAway;
}

View file

@ -469,7 +469,7 @@ void EnDaiku_InitSubCamera(EnDaiku* this, PlayState* play) {
Play_CameraSetAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye);
Play_CameraSetFov(play, this->subCamId, play->mainCamera.fov);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
}
void EnDaiku_UpdateSubCamera(EnDaiku* this, PlayState* play) {
@ -505,7 +505,7 @@ void EnDaiku_EscapeSuccess(EnDaiku* this, PlayState* play) {
Actor_Kill(&this->actor);
}
} else {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
}

View file

@ -386,9 +386,9 @@ void EnDekubaba_SetupHit(EnDekubaba* this, s32 arg1) {
Actor_SetScale(&this->actor, this->size * 0.01f);
if (arg1 == 2) {
Actor_SetColorFilter(&this->actor, 0, 155, 0, 62);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 155, COLORFILTER_BUFFLAG_OPA, 62);
} else {
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 42);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 42);
}
this->actionFunc = EnDekubaba_Hit;
@ -442,7 +442,7 @@ void EnDekubaba_SetupSway(EnDekubaba* this) {
this->stemSectionAngle[1] = -0x4800;
EnDekubaba_DisableHitboxes(this);
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 35);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 35);
this->collider.base.acFlags &= ~AC_ON;
this->actionFunc = EnDekubaba_Sway;
}
@ -1020,7 +1020,7 @@ void EnDekubaba_DeadStickDrop(EnDekubaba* this, PlayState* play) {
return;
}
func_8002F554(&this->actor, play, GI_DEKU_STICKS_1);
Actor_OfferGetItemNearby(&this->actor, play, GI_DEKU_STICKS_1);
}
// Update and associated functions

View file

@ -214,7 +214,8 @@ void EnDekunuts_SetupBeDamaged(EnDekunuts* this) {
this->actor.speedXZ = 10.0f;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_NUTS_DAMAGE);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_NUTS_CUTBODY);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, Animation_GetLastFrame(&gDekuNutsDamageAnim));
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gDekuNutsDamageAnim));
}
void EnDekunuts_SetupBeStunned(EnDekunuts* this) {
@ -223,7 +224,7 @@ void EnDekunuts_SetupBeStunned(EnDekunuts* this) {
this->actionFunc = EnDekunuts_BeStunned;
this->actor.speedXZ = 0.0f;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0,
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA,
Animation_GetLastFrame(&gDekuNutsDamageAnim) * this->animFlagAndTimer);
}

View file

@ -482,7 +482,7 @@ void EnDh_CollisionCheck(EnDh* this, PlayState* play) {
if (player->unk_844 != 0) {
this->unk_258 = player->unk_845;
}
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
lastHealth = this->actor.colChkInfo.health;
if (Actor_ApplyDamage(&this->actor) == 0) {
EnDh_SetupDeath(this);

View file

@ -383,7 +383,7 @@ void EnDha_UpdateHealth(EnDha* this, PlayState* play) {
if (this->actor.colChkInfo.damageEffect == 0 || this->actor.colChkInfo.damageEffect == 6) {
return;
} else {
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
if (Actor_ApplyDamage(&this->actor) == 0) {
EnDha_SetupDeath(this);
this->actor.colChkInfo.health = 8;

View file

@ -134,7 +134,7 @@ s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) {
Message_StartTextbox(play, this->actor.textId, NULL);
this->unk_292 = TEXT_STATE_EVENT;
this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = func_809EE048;
return true;
} else {
@ -159,7 +159,7 @@ s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) {
this->unk_292 = TEXT_STATE_EVENT;
func_800F5B58();
Audio_PlayFanfare(NA_BGM_SMALL_ITEM_GET);
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
if (!GET_EVENTCHKINF(EVENTCHKINF_38)) {
this->actionFunc = func_809EE96C;
} else {
@ -187,7 +187,7 @@ void EnDivingGame_Talk(EnDivingGame* this, PlayState* play) {
if (this->unk_292 != TEXT_STATE_DONE) {
switch (this->state) {
case ENDIVINGGAME_STATE_NOTPLAYING:
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnDivingGame_HandlePlayChoice;
break;
case ENDIVINGGAME_STATE_AWARDPRIZE:
@ -254,7 +254,7 @@ void EnDivingGame_HandlePlayChoice(EnDivingGame* this, PlayState* play) {
this->actionFunc = func_809EE048;
} else {
play->msgCtx.msgMode = MSGMODE_PAUSED;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = func_809EE0FC;
}
}
@ -266,11 +266,11 @@ void func_809EE048(EnDivingGame* this, PlayState* play) {
if (this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play)) {
if (this->phase == ENDIVINGGAME_PHASE_ENDED) {
Message_CloseTextbox(play);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actionFunc = func_809EDCB0;
} else {
play->msgCtx.msgMode = MSGMODE_PAUSED;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = func_809EE0FC;
}
}
@ -423,7 +423,7 @@ void func_809EE800(EnDivingGame* this, PlayState* play) {
Interface_SetTimer(50 + BREG(2));
}
func_800F5ACC(NA_BGM_TIMED_MINI_GAME);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actor.textId = 0x405B;
this->unk_292 = TEXT_STATE_EVENT;
this->state = ENDIVINGGAME_STATE_PLAYING;
@ -446,7 +446,7 @@ void func_809EE96C(EnDivingGame* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
if ((this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play))) {
Message_CloseTextbox(play);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actor.textId = 0x4056;
this->unk_292 = TEXT_STATE_EVENT;
this->state = ENDIVINGGAME_STATE_AWARDPRIZE;
@ -459,7 +459,7 @@ void func_809EEA00(EnDivingGame* this, PlayState* play) {
if ((this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play))) {
Message_CloseTextbox(play);
this->actor.parent = NULL;
func_8002F434(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
Actor_OfferGetItem(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
this->actionFunc = func_809EEA90;
}
}
@ -469,7 +469,7 @@ void func_809EEA90(EnDivingGame* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
this->actionFunc = func_809EEAF8;
} else {
func_8002F434(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
Actor_OfferGetItem(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
}
}

View file

@ -370,18 +370,18 @@ void EnDns_Talk(EnDns* this, PlayState* play) {
void func_809EFDD0(EnDns* this, PlayState* play) {
if (this->actor.params == 0x9) {
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < 2) {
func_8002F434(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f);
} else {
func_8002F434(&this->actor, play, GI_DEKU_STICK_UPGRADE_30, 130.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_30, 130.0f, 100.0f);
}
} else if (this->actor.params == 0xA) {
if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < 2) {
func_8002F434(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f);
} else {
func_8002F434(&this->actor, play, GI_DEKU_NUT_UPGRADE_40, 130.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_40, 130.0f, 100.0f);
}
} else {
func_8002F434(&this->actor, play, this->dnsItemEntry->getItemId, 130.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, this->dnsItemEntry->getItemId, 130.0f, 100.0f);
}
}

View file

@ -119,7 +119,7 @@ void EnDntJiji_Wait(EnDntJiji* this, PlayState* play) {
!(player->stateFlags1 & PLAYER_STATE1_11)) {
OnePointCutscene_Init(play, 2230, -99, &this->actor, CAM_ID_MAIN);
this->timer = 0;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnDntJiji_SetupUnburrow;
}
}
@ -253,9 +253,9 @@ void EnDntJiji_Talk(EnDntJiji* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
func_8005B1A4(GET_ACTIVE_CAM(play));
Message_CloseTextbox(play);
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actor.parent = NULL;
func_8002F434(&this->actor, play, this->getItemId, 400.0f, 200.0f);
Actor_OfferGetItem(&this->actor, play, this->getItemId, 400.0f, 200.0f);
this->actionFunc = EnDntJiji_SetupGivePrize;
}
}
@ -265,7 +265,7 @@ void EnDntJiji_SetupGivePrize(EnDntJiji* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
this->actionFunc = EnDntJiji_GivePrize;
} else {
func_8002F434(&this->actor, play, this->getItemId, 400.0f, 200.0f);
Actor_OfferGetItem(&this->actor, play, this->getItemId, 400.0f, 200.0f);
}
}

View file

@ -250,7 +250,7 @@ void EnDntNomal_TargetWait(EnDntNomal* this, PlayState* play) {
this->hitCounter++;
if (this->hitCounter >= 3) {
OnePointCutscene_Init(play, 4140, -99, &this->actor, CAM_ID_MAIN);
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->timer4 = 50;
this->actionFunc = EnDntNomal_SetupTargetUnburrow;
}
@ -339,7 +339,7 @@ void EnDntNomal_TargetTalk(EnDntNomal* this, PlayState* play) {
Message_CloseTextbox(play);
func_8005B1A4(GET_ACTIVE_CAM(play));
GET_ACTIVE_CAM(play)->csId = 0;
func_8002DF54(play, NULL, 8);
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
this->actionFunc = EnDntNomal_SetupTargetGivePrize;
}
}
@ -361,7 +361,7 @@ void EnDntNomal_TargetGivePrize(EnDntNomal* this, PlayState* play) {
if (Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_EX_ITEM, itemX, itemY, itemZ, 0, 0, 0,
EXITEM_BULLET_BAG) == NULL) {
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
Actor_Kill(&this->actor);
}
this->spawnedItem = true;

View file

@ -91,7 +91,7 @@ void EnDodojr_Destroy(Actor* thisx, PlayState* play) {
void EnDodojr_DoSwallowedBombEffects(EnDodojr* this) {
Audio_PlayActorSfx2(&this->actor, NA_SE_IT_BOMB_EXPLOSION);
Actor_SetColorFilter(&this->actor, 0x4000, 200, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA, 8);
}
void EnDodojr_SpawnLargeDust(EnDodojr* this, PlayState* play, s32 count) {
@ -359,7 +359,7 @@ s32 EnDodojr_CheckDamaged(EnDodojr* this, PlayState* play) {
(this->actionFunc != EnDodojr_StunnedBounce)) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
this->stunTimer = 120;
Actor_SetColorFilter(&this->actor, 0, 200, 0, 120);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 200, COLORFILTER_BUFFLAG_OPA, 120);
EnDodojr_SetupFlipBounce(this);
this->actionFunc = EnDodojr_StunnedBounce;
}
@ -577,7 +577,7 @@ void EnDodojr_DeathSequence(EnDodojr* this, PlayState* play) {
if (this->counter != 0) {
if (this->actor.colorFilterTimer == 0) {
Actor_SetColorFilter(&this->actor, 0x4000, 200, 0, this->counter);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA, this->counter);
this->counter--;
}
} else {

View file

@ -497,7 +497,7 @@ void EnDodongo_SwallowBomb(EnDodongo* this, PlayState* play) {
&this->bombSmokeEnvColor, 400, 10, 10);
}
Audio_PlayActorSfx2(&this->actor, NA_SE_IT_BOMB_EXPLOSION);
Actor_SetColorFilter(&this->actor, 0x4000, 0x78, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 120, COLORFILTER_BUFFLAG_OPA, 8);
}
}
}
@ -676,7 +676,7 @@ void EnDodongo_Death(EnDodongo* this, PlayState* play) {
EnDodongo_SpawnBombSmoke(this, play);
}
} else if (this->actor.colorFilterTimer == 0) {
Actor_SetColorFilter(&this->actor, 0x4000, 0x78, 0, 4);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 120, COLORFILTER_BUFFLAG_OPA, 4);
}
if (SkelAnime_Update(&this->skelAnime)) {
if (this->timer == 0) {
@ -721,12 +721,12 @@ void EnDodongo_CollisionCheck(EnDodongo* this, PlayState* play) {
this->damageEffect = this->actor.colChkInfo.damageEffect;
if ((this->actor.colChkInfo.damageEffect == 1) || (this->actor.colChkInfo.damageEffect == 0xF)) {
if (this->actionState != DODONGO_STUNNED) {
Actor_SetColorFilter(&this->actor, 0, 0x78, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 120, COLORFILTER_BUFFLAG_OPA, 80);
Actor_ApplyDamage(&this->actor);
EnDodongo_SetupStunned(this);
}
} else {
Actor_SetColorFilter(&this->actor, 0x4000, 0x78, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 120, COLORFILTER_BUFFLAG_OPA, 8);
if (Actor_ApplyDamage(&this->actor) == 0) {
EnDodongo_SetupDeath(this, play);
} else {

View file

@ -90,7 +90,7 @@ void EnDs_GiveOddPotion(EnDs* this, PlayState* play) {
this->actionFunc = EnDs_DisplayOddPotionText;
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
} else {
func_8002F434(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f);
}
}
@ -98,7 +98,7 @@ void EnDs_TalkAfterBrewOddPotion(EnDs* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play);
this->actionFunc = EnDs_GiveOddPotion;
func_8002F434(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f);
}
}
@ -170,7 +170,7 @@ void EnDs_GiveBluePotion(EnDs* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = EnDs_Talk;
} else {
func_8002F434(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
}
}
@ -189,7 +189,7 @@ void EnDs_OfferBluePotion(EnDs* this, PlayState* play) {
case 2: // have 100 rupees and empty bottle
Rupees_ChangeBy(-100);
this->actor.flags &= ~ACTOR_FLAG_16;
func_8002F434(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
this->actionFunc = EnDs_GiveBluePotion;
return;
}

View file

@ -328,7 +328,7 @@ void func_809FE3C0(EnDu* this, PlayState* play) {
return;
}
if (this->interactInfo.talkState == NPC_TALK_STATE_ACTION) {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->interactInfo.talkState = NPC_TALK_STATE_IDLE;
}
if (this->actor.xzDistToPlayer < 116.0f + this->collider.dim.radius) {
@ -423,7 +423,7 @@ void func_809FE890(EnDu* this, PlayState* play) {
CsCmdActorAction* csAction;
if (play->csCtx.state == CS_STATE_IDLE) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
EnDu_SetupAction(this, func_809FEB08);
return;
}
@ -490,7 +490,7 @@ void func_809FEB08(EnDu* this, PlayState* play) {
this->unk_1EE = 0;
if (this->unk_1E8 == 1) {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENDU_ANIM_1);
EnDu_SetupAction(this, func_809FE3C0);
return;
@ -509,7 +509,7 @@ void func_809FEB08(EnDu* this, PlayState* play) {
void func_809FEC14(EnDu* this, PlayState* play) {
if (this->interactInfo.talkState == NPC_TALK_STATE_ACTION) {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
EnDu_SetupAction(this, func_809FEC70);
func_809FEC70(this, play);
}
@ -522,7 +522,7 @@ void func_809FEC70(EnDu* this, PlayState* play) {
} else {
f32 xzRange = this->actor.xzDistToPlayer + 1.0f;
func_8002F434(&this->actor, play, GI_GORONS_BRACELET, xzRange, fabsf(this->actor.yDistToPlayer) + 1.0f);
Actor_OfferGetItem(&this->actor, play, GI_GORONS_BRACELET, xzRange, fabsf(this->actor.yDistToPlayer) + 1.0f);
}
}

View file

@ -281,14 +281,14 @@ void EnEiyer_SetupHurt(EnEiyer* this) {
this->actor.gravity = 0.0f;
this->actor.velocity.y = 0.0f;
this->actor.speedXZ = 5.0f;
Actor_SetColorFilter(&this->actor, 0x4000, 200, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA, 40);
this->collider.base.acFlags &= ~AC_ON;
this->actionFunc = EnEiyer_Hurt;
}
void EnEiyer_SetupDie(EnEiyer* this) {
this->timer = 20;
Actor_SetColorFilter(&this->actor, 0x4000, 200, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA, 40);
if (this->collider.info.bumper.dmgFlags != (DMG_BOOMERANG | DMG_EXPLOSIVE | DMG_DEKU_NUT)) {
this->actor.speedXZ = 6.0f;
@ -317,7 +317,7 @@ void EnEiyer_SetupStunned(EnEiyer* this) {
this->actor.velocity.y = 0.0f;
this->actor.gravity = -1.0f;
this->collider.dim.height = sColCylInit.dim.height + 8;
Actor_SetColorFilter(&this->actor, 0, 200, 0, 80);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 200, COLORFILTER_BUFFLAG_OPA, 80);
this->collider.base.atFlags &= ~AT_ON;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
this->actionFunc = EnEiyer_Stunned;

View file

@ -661,7 +661,7 @@ void func_80A0329C(EnElf* this, PlayState* play) {
if (!(this->fairyFlags & FAIRY_FLAG_BIG)) {
// GI_MAX in this case allows the player to catch the actor in a bottle
func_8002F434(&this->actor, play, GI_MAX, 80.0f, 60.0f);
Actor_OfferGetItem(&this->actor, play, GI_MAX, 80.0f, 60.0f);
}
}
}

View file

@ -386,14 +386,14 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
s32 getItemId;
this->actor.draw = NULL;
func_8002DF54(play, NULL, 7);
func_8002DF54(play, NULL, PLAYER_CSMODE_7);
this->actor.parent = NULL;
if (CUR_UPG_VALUE(UPG_BULLET_BAG) == 1) {
getItemId = GI_BULLET_BAG_40;
} else {
getItemId = GI_BULLET_BAG_50;
}
func_8002F434(&this->actor, play, getItemId, 2000.0f, 1000.0f);
Actor_OfferGetItem(&this->actor, play, getItemId, 2000.0f, 1000.0f);
this->actionFunc = EnExItem_TargetPrizeGive;
}
}
@ -406,7 +406,7 @@ void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) {
} else {
getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == 2) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40;
func_8002F434(&this->actor, play, getItemId, 2000.0f, 1000.0f);
Actor_OfferGetItem(&this->actor, play, getItemId, 2000.0f, 1000.0f);
}
}

View file

@ -214,7 +214,7 @@ void EnFirefly_SetupFall(EnFirefly* this) {
Animation_Change(&this->skelAnime, &gKeeseFlyAnim, 0.5f, 0.0f, 0.0f, ANIMMODE_LOOP_INTERP, -3.0f);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FFLY_DEAD);
this->actor.flags |= ACTOR_FLAG_4;
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 40);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 40);
this->actionFunc = EnFirefly_Fall;
}
@ -248,7 +248,7 @@ void EnFirefly_SetupFlyAway(EnFirefly* this) {
void EnFirefly_SetupStunned(EnFirefly* this) {
this->timer = 80;
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 80);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 80);
this->auraType = KEESE_AURA_NONE;
this->actor.velocity.y = 0.0f;
this->skelAnime.playSpeed = 3.0f;
@ -263,7 +263,7 @@ void EnFirefly_SetupFrozenFall(EnFirefly* this, PlayState* play) {
this->actor.flags |= ACTOR_FLAG_4;
this->auraType = KEESE_AURA_NONE;
this->actor.speedXZ = 0.0f;
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 0xFF);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 255);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FFLY_DEAD);
for (i = 0; i <= 7; i++) {

View file

@ -710,7 +710,7 @@ void EnFish_OrdinaryUpdate(EnFish* this, PlayState* play) {
EnFish_BeginRespawn(this);
} else if (EnFish_InBottleRange(this, play)) {
// GI_MAX in this case allows the player to catch the actor in a bottle
func_8002F434(&this->actor, play, GI_MAX, 80.0f, 20.0f);
Actor_OfferGetItem(&this->actor, play, GI_MAX, 80.0f, 20.0f);
}
}
}

View file

@ -395,7 +395,7 @@ void EnFloormas_SetupTakeDamage(EnFloormas* this) {
} else {
this->actor.world.rot.y = Actor_WorldYawTowardActor(&this->actor, this->collider.base.ac) + 0x8000;
}
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 0x14);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 20);
this->actionFunc = EnFloormas_TakeDamage;
this->actor.speedXZ = 5.0f;
this->actor.velocity.y = 5.5f;
@ -412,9 +412,9 @@ void EnFloormas_SetupFreeze(EnFloormas* this) {
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 1.5f, 0, 20.0f, ANIMMODE_ONCE, -3.0f);
this->actor.speedXZ = 0.0f;
if (this->actor.colChkInfo.damageEffect == 4) {
Actor_SetColorFilter(&this->actor, -0x8000, 0xFF, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_GRAY, 255, COLORFILTER_BUFFLAG_OPA, 80);
} else {
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 80);
if (this->actor.scale.x > 0.004f) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
} else {

View file

@ -1013,7 +1013,7 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) {
this->actionFunc = EnFr_Idle;
} else {
this->actionFunc = EnFr_GiveReward;
func_8002F434(&this->actor, play, this->reward, 30.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, this->reward, 30.0f, 100.0f);
}
}
@ -1022,7 +1022,7 @@ void EnFr_GiveReward(EnFr* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = EnFr_SetIdle;
} else {
func_8002F434(&this->actor, play, this->reward, 30.0f, 100.0f);
Actor_OfferGetItem(&this->actor, play, this->reward, 30.0f, 100.0f);
}
}

View file

@ -247,7 +247,8 @@ void EnFw_Run(EnFw* this, PlayState* play) {
Math_SmoothStepToF(&this->actor.scale.x, 0.024999999f, 0.08f, 0.6f, 0.0f);
Actor_SetScale(&this->actor, this->actor.scale.x);
if (this->actor.colorFilterTimer == 0) {
Actor_SetColorFilter(&this->actor, 0x4000, 0xC8, 0, this->explosionTimer);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA,
this->explosionTimer);
this->explosionTimer--;
}
@ -265,7 +266,8 @@ void EnFw_Run(EnFw* this, PlayState* play) {
}
} else {
if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || this->actor.velocity.y > 0.0f) {
Actor_SetColorFilter(&this->actor, 0x4000, 0xC8, 0, this->damageTimer);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 200, COLORFILTER_BUFFLAG_OPA,
this->damageTimer);
return;
}
DECR(this->damageTimer);

View file

@ -344,7 +344,7 @@ void EnFz_ApplyDamage(EnFz* this, PlayState* play) {
switch (this->actor.colChkInfo.damageEffect) {
case 0xF:
Actor_ApplyDamage(&this->actor);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0x2000, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_XLU, 8);
if (this->actor.colChkInfo.health != 0) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FREEZAD_DAMAGE);
vec.x = this->actor.world.pos.x;
@ -365,7 +365,7 @@ void EnFz_ApplyDamage(EnFz* this, PlayState* play) {
case 2:
Actor_ApplyDamage(&this->actor);
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0x2000, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_XLU, 8);
if (this->actor.colChkInfo.health == 0) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FREEZAD_DEAD);
EnFz_SetupMelt(this);

View file

@ -350,7 +350,7 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
void func_80A2FB40(EnGb* this, PlayState* play) {
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
func_8002F434(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
this->actionFunc = func_80A2FBB0;
}
}
@ -360,7 +360,7 @@ void func_80A2FBB0(EnGb* this, PlayState* play) {
this->dyna.actor.parent = NULL;
this->actionFunc = func_80A2FC0C;
} else {
func_8002F434(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
}
}

View file

@ -242,7 +242,7 @@ void EnGe1_KickPlayer(EnGe1* this, PlayState* play) {
void EnGe1_SpotPlayer(EnGe1* this, PlayState* play) {
this->cutsceneTimer = 30;
this->actionFunc = EnGe1_KickPlayer;
func_8002DF54(play, &this->actor, 0x5F);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_95);
func_80078884(NA_SE_SY_FOUND);
Message_StartTextbox(play, 0x6000, &this->actor);
}
@ -512,7 +512,7 @@ void EnGe1_WaitTillItemGiven_Archery(EnGe1* this, PlayState* play) {
} else {
getItemId = GI_HEART_PIECE;
}
func_8002F434(&this->actor, play, getItemId, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, getItemId, 10000.0f, 50.0f);
}
}
@ -541,7 +541,7 @@ void EnGe1_BeginGiveItem_Archery(EnGe1* this, PlayState* play) {
getItemId = GI_HEART_PIECE;
}
func_8002F434(&this->actor, play, getItemId, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, getItemId, 10000.0f, 50.0f);
}
void EnGe1_TalkWinPrize_Archery(EnGe1* this, PlayState* play) {
@ -586,7 +586,7 @@ void EnGe1_BeginGame_Archery(EnGe1* this, PlayState* play) {
SET_EVENTCHKINF(EVENTCHKINF_68);
if (!(player->stateFlags1 & PLAYER_STATE1_23)) {
func_8002DF54(play, &this->actor, 1);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
} else {
horse = Actor_FindNearby(play, &player->actor, ACTOR_EN_HORSE, ACTORCAT_BG, 1200.0f);
player->actor.freezeTimer = 1200;

View file

@ -451,7 +451,7 @@ void EnGe2_WaitTillCardGiven(EnGe2* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = EnGe2_SetActionAfterTalk;
} else {
func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
}
}
@ -460,7 +460,7 @@ void EnGe2_GiveCard(EnGe2* this, PlayState* play) {
Message_CloseTextbox(play);
this->actor.flags &= ~ACTOR_FLAG_16;
this->actionFunc = EnGe2_WaitTillCardGiven;
func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
}
}
@ -480,7 +480,7 @@ void EnGe2_SetupCapturePlayer(EnGe2* this, PlayState* play) {
this->stateFlags |= GE2_STATE_CAPTURING;
this->actor.speedXZ = 0.0f;
EnGe2_ChangeAction(this, GE2_ACTION_CAPTURETURN);
func_8002DF54(play, &this->actor, 95);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_95);
func_80078884(NA_SE_SY_FOUND);
Message_StartTextbox(play, 0x6000, &this->actor);
}
@ -556,7 +556,9 @@ void EnGe2_Update(Actor* thisx, PlayState* play) {
} else if (this->collider.base.acFlags & AC_HIT) {
if ((this->collider.info.acHitInfo != NULL) &&
(this->collider.info.acHitInfo->toucher.dmgFlags & DMG_HOOKSHOT)) {
Actor_SetColorFilter(&this->actor, 0, 120, 0, 400);
//! @bug duration parameter is larger than 255 which messes with the internal bitpacking of the colorfilter.
//! Because of the duration being tracked as an unsigned byte it ends up being truncated to 144
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 120, COLORFILTER_BUFFLAG_OPA, 400);
this->actor.update = EnGe2_UpdateStunned;
return;
}

View file

@ -141,7 +141,7 @@ void EnGe3_WaitTillCardGiven(EnGe3* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = EnGe3_Wait;
} else {
func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
}
}
@ -150,7 +150,7 @@ void EnGe3_GiveCard(EnGe3* this, PlayState* play) {
Message_CloseTextbox(play);
this->actor.flags &= ~ACTOR_FLAG_16;
this->actionFunc = EnGe3_WaitTillCardGiven;
func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
Actor_OfferGetItem(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
}
}
@ -159,7 +159,7 @@ void EnGe3_ForceTalk(EnGe3* this, PlayState* play) {
this->actionFunc = EnGe3_GiveCard;
} else {
if (!(this->unk_30C & 4)) {
func_8002DF54(play, &this->actor, 7);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_30C |= 4;
}
this->actor.textId = 0x6004;

View file

@ -919,7 +919,7 @@ void EnGeldB_SpinAttack(EnGeldB* this, PlayState* play) {
if (&player->actor == this->swordCollider.base.at) {
func_8002F71C(play, &this->actor, 6.0f, this->actor.yawTowardsPlayer, 6.0f);
this->spinAttackState = 2;
func_8002DF54(play, &this->actor, 0x18);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_24);
Message_StartTextbox(play, 0x6003, &this->actor);
this->timer = 30;
this->actor.speedXZ = 0.0f;
@ -1373,12 +1373,12 @@ void EnGeldB_CollisionCheck(EnGeldB* this, PlayState* play) {
if ((this->actor.colChkInfo.damageEffect == GELDB_DMG_STUN) ||
(this->actor.colChkInfo.damageEffect == GELDB_DMG_FREEZE)) {
if (this->action != GELDB_STUNNED) {
Actor_SetColorFilter(&this->actor, 0, 0x78, 0, 0x50);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 120, COLORFILTER_BUFFLAG_OPA, 80);
Actor_ApplyDamage(&this->actor);
EnGeldB_SetupStunned(this);
}
} else {
Actor_SetColorFilter(&this->actor, 0x4000, 0xFF, 0, 8);
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
if (Actor_ApplyDamage(&this->actor) == 0) {
if (this->keyFlag != 0) {
key = Item_DropCollectible(play, &this->actor.world.pos, this->keyFlag | ITEM00_SMALL_KEY);

View file

@ -245,7 +245,7 @@ void EnGm_ProcessChoiceIndex(EnGm* this, PlayState* play) {
Message_ContinueTextbox(play, 0xC8);
this->actionFunc = func_80A3DD7C;
} else {
func_8002F434(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
Actor_OfferGetItem(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
this->actionFunc = func_80A3DF00;
}
break;
@ -262,7 +262,7 @@ void func_80A3DF00(EnGm* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = func_80A3DF60;
} else {
func_8002F434(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
Actor_OfferGetItem(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
}
}

View file

@ -226,7 +226,7 @@ s16 EnGo_UpdateTalkState(PlayState* play, Actor* thisx) {
unkState = NPC_TALK_STATE_IDLE;
break;
case 0x3036:
func_8002F434(thisx, play, GI_TUNIC_GORON, xzRange, yRange);
Actor_OfferGetItem(thisx, play, GI_TUNIC_GORON, xzRange, yRange);
SET_INFTABLE(INFTABLE_10D); // EnGo exclusive flag
unkState = NPC_TALK_STATE_ACTION;
break;
@ -972,7 +972,7 @@ void EnGo_GetItem(EnGo* this, PlayState* play) {
yDist = fabsf(this->actor.yDistToPlayer) + 1.0f;
xzDist = this->actor.xzDistToPlayer + 1.0f;
func_8002F434(&this->actor, play, getItemId, xzDist, yDist);
Actor_OfferGetItem(&this->actor, play, getItemId, xzDist, yDist);
}
}

Some files were not shown because too many files have changed in this diff Show more