{"format":"sotn-holy-water-attack-static-v1","originalDiscVersion":"SLUS-00067","decoderReferenceCommit":"0622fcfd37311fd21baf2938c6bd74cea63005ba","name":"EntitySubwpnHolyWater","inventoryId":3,"bottleFields":[1,3,32,3,32,8,188,27,2,1,11,0,0],"flameFields":[8,1,36864,3,16,8,93,27,2,1,0,0,0],"subweaponFieldNames":["attack","heartCost","attackElement","chainLimit","nFramesInvincibility","stunFrames","anim","blueprintNum","hitboxState","hitEffect","crashId","unk11","entityRoomIndex"],"bottleDefinition":{"sourceFile":"DRA.BIN","index":3,"offset":19004,"rawBytesHex":"01000300200003200800bc1b020001000b000000","fields":[1,3,32,3,32,8,188,27,2,1,11,0,0]},"flameDefinition":{"sourceFile":"DRA.BIN","index":11,"offset":19164,"rawBytesHex":"080001000090031008005d1b0200010000000000","fields":[8,1,36864,3,16,8,93,27,2,1,0,0,0]},"sineQuarter":[0,6,13,19,25,31,38,44,50,57,63,69,75,82,88,94,101,107,113,119,126,132,138,144,151,157,163,170,176,182,188,195,201,207,214,220,226,232,239,245,251,257,264,270,276,283,289,295,301,308,314,320,326,333,339,345,351,358,364,370,376,383,389,395,401,408,414,420,426,433,439,445,451,458,464,470,476,483,489,495,501,508,514,520,526,533,539,545,551,557,564,570,576,582,589,595,601,607,613,620,626,632,638,644,651,657,663,669,675,682,688,694,700,706,713,719,725,731,737,744,750,756,762,768,774,781,787,793,799,805,811,818,824,830,836,842,848,854,861,867,873,879,885,891,897,904,910,916,922,928,934,940,946,953,959,965,971,977,983,989,995,1001,1007,1014,1020,1026,1032,1038,1044,1050,1056,1062,1068,1074,1080,1086,1092,1099,1105,1111,1117,1123,1129,1135,1141,1147,1153,1159,1165,1171,1177,1183,1189,1195,1201,1207,1213,1219,1225,1231,1237,1243,1249,1255,1261,1267,1273,1279,1285,1291,1297,1303,1309,1315,1321,1327,1332,1338,1344,1350,1356,1362,1368,1374,1380,1386,1392,1398,1404,1409,1415,1421,1427,1433,1439,1445,1451,1457,1462,1468,1474,1480,1486,1492,1498,1503,1509,1515,1521,1527,1533,1538,1544,1550,1556,1562,1567,1573,1579,1585,1591,1596,1602,1608,1614,1620,1625,1631,1637,1643,1648,1654,1660,1666,1671,1677,1683,1689,1694,1700,1706,1711,1717,1723,1729,1734,1740,1746,1751,1757,1763,1768,1774,1780,1785,1791,1797,1802,1808,1813,1819,1825,1830,1836,1842,1847,1853,1858,1864,1870,1875,1881,1886,1892,1898,1903,1909,1914,1920,1925,1931,1936,1942,1947,1953,1958,1964,1970,1975,1981,1986,1992,1997,2002,2008,2013,2019,2024,2030,2035,2041,2046,2052,2057,2062,2068,2073,2079,2084,2090,2095,2100,2106,2111,2117,2122,2127,2133,2138,2143,2149,2154,2159,2165,2170,2175,2181,2186,2191,2197,2202,2207,2213,2218,2223,2228,2234,2239,2244,2249,2255,2260,2265,2270,2276,2281,2286,2291,2296,2302,2307,2312,2317,2322,2328,2333,2338,2343,2348,2353,2359,2364,2369,2374,2379,2384,2389,2394,2399,2405,2410,2415,2420,2425,2430,2435,2440,2445,2450,2455,2460,2465,2470,2475,2480,2485,2490,2495,2500,2505,2510,2515,2520,2525,2530,2535,2540,2545,2550,2555,2559,2564,2569,2574,2579,2584,2589,2594,2598,2603,2608,2613,2618,2623,2628,2632,2637,2642,2647,2652,2656,2661,2666,2671,2675,2680,2685,2690,2694,2699,2704,2709,2713,2718,2723,2727,2732,2737,2741,2746,2751,2755,2760,2765,2769,2774,2779,2783,2788,2792,2797,2802,2806,2811,2815,2820,2824,2829,2833,2838,2843,2847,2852,2856,2861,2865,2870,2874,2878,2883,2887,2892,2896,2901,2905,2910,2914,2918,2923,2927,2932,2936,2940,2945,2949,2953,2958,2962,2967,2971,2975,2979,2984,2988,2992,2997,3001,3005,3009,3014,3018,3022,3026,3031,3035,3039,3043,3048,3052,3056,3060,3064,3068,3073,3077,3081,3085,3089,3093,3097,3102,3106,3110,3114,3118,3122,3126,3130,3134,3138,3142,3146,3150,3154,3158,3162,3166,3170,3174,3178,3182,3186,3190,3194,3198,3202,3206,3210,3214,3217,3221,3225,3229,3233,3237,3241,3244,3248,3252,3256,3260,3264,3267,3271,3275,3279,3282,3286,3290,3294,3297,3301,3305,3309,3312,3316,3320,3323,3327,3331,3334,3338,3342,3345,3349,3352,3356,3360,3363,3367,3370,3374,3378,3381,3385,3388,3392,3395,3399,3402,3406,3409,3413,3416,3420,3423,3426,3430,3433,3437,3440,3444,3447,3450,3454,3457,3461,3464,3467,3471,3474,3477,3481,3484,3487,3490,3494,3497,3500,3504,3507,3510,3513,3516,3520,3523,3526,3529,3532,3536,3539,3542,3545,3548,3551,3555,3558,3561,3564,3567,3570,3573,3576,3579,3582,3585,3588,3591,3594,3597,3600,3603,3606,3609,3612,3615,3618,3621,3624,3627,3630,3633,3636,3639,3642,3644,3647,3650,3653,3656,3659,3661,3664,3667,3670,3673,3675,3678,3681,3684,3686,3689,3692,3695,3697,3700,3703,3705,3708,3711,3713,3716,3719,3721,3724,3727,3729,3732,3734,3737,3739,3742,3745,3747,3750,3752,3755,3757,3760,3762,3765,3767,3770,3772,3775,3777,3779,3782,3784,3787,3789,3791,3794,3796,3798,3801,3803,3805,3808,3810,3812,3815,3817,3819,3822,3824,3826,3828,3831,3833,3835,3837,3839,3842,3844,3846,3848,3850,3852,3854,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907,3909,3910,3912,3914,3916,3918,3920,3921,3923,3925,3927,3929,3930,3932,3934,3936,3937,3939,3941,3943,3944,3946,3948,3949,3951,3953,3954,3956,3958,3959,3961,3962,3964,3965,3967,3969,3970,3972,3973,3975,3976,3978,3979,3981,3982,3984,3985,3987,3988,3989,3991,3992,3994,3995,3996,3998,3999,4001,4002,4003,4005,4006,4007,4008,4010,4011,4012,4014,4015,4016,4017,4019,4020,4021,4022,4023,4024,4026,4027,4028,4029,4030,4031,4032,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4053,4054,4055,4056,4057,4058,4059,4060,4060,4061,4062,4063,4064,4064,4065,4066,4067,4067,4068,4069,4070,4070,4071,4072,4072,4073,4074,4074,4075,4076,4076,4077,4077,4078,4079,4079,4080,4080,4081,4081,4082,4082,4083,4083,4084,4084,4085,4085,4086,4086,4087,4087,4088,4088,4088,4089,4089,4089,4090,4090,4090,4091,4091,4091,4092,4092,4092,4092,4093,4093,4093,4093,4094,4094,4094,4094,4094,4095,4095,4095,4095,4095,4095,4095,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096],"sineTableDefinition":{"sourceFile":"SLUS_000.67","offset":121804,"wordCount":1025,"bytes":2050,"sha256":"bab3b71ba7f79dfb2b5cebb71f8382a79606a958d72031bc11b88066c36033bd","runtimeAddress":"0x8002d3cc","rawBytesHex":"000006000d00130019001f0026002c00320039003f0045004b00520058005e0065006b00710077007e0084008a00900097009d00a300aa00b000b600bc00c300c900cf00d600dc00e200e800ef00f500fb00010108010e0114011b01210127012d0134013a01400146014d01530159015f0166016c01720178017f0185018b01910198019e01a401aa01b101b701bd01c301ca01d001d601dc01e301e901ef01f501fc01020208020e0215021b02210227022d0234023a02400246024d02530259025f0265026c02720278027e0284028b02910297029d02a302aa02b002b602bc02c202c902cf02d502db02e102e802ee02f402fa02000306030d03130319031f0325032b03320338033e0344034a03500356035d03630369036f0375037b03810388038e0394039a03a003a603ac03b203b903bf03c503cb03d103d703dd03e303e903ef03f603fc03020408040e0414041a04200426042c04320438043e0444044b04510457045d04630469046f0475047b04810487048d04930499049f04a504ab04b104b704bd04c304c904cf04d504db04e104e704ed04f304f904ff0405050b05110517051d05230529052f0534053a05400546054c05520558055e0564056a05700576057c05810587058d05930599059f05a505ab05b105b605bc05c205c805ce05d405da05df05e505eb05f105f705fd05020608060e0614061a061f0625062b06310637063c06420648064e06540659065f0665066b06700676067c06820687068d06930699069e06a406aa06af06b506bb06c106c606cc06d206d706dd06e306e806ee06f406f906ff0605070a07100715071b07210726072c07320737073d07420748074e07530759075e0764076a076f0775077a07800785078b07900796079b07a107a607ac07b207b707bd07c207c807cd07d207d807dd07e307e807ee07f307f907fe07040809080e08140819081f0824082a082f0834083a083f0845084a084f0855085a085f0865086a086f0875087a087f0885088a088f0895089a089f08a508aa08af08b408ba08bf08c408c908cf08d408d908de08e408e908ee08f308f808fe08030908090d09120918091d09220927092c09310937093c09410946094b09500955095a095f0965096a096f09740979097e09830988098d09920997099c09a109a609ab09b009b509ba09bf09c409c909ce09d309d809dd09e209e709ec09f109f609fb09ff09040a090a0e0a130a180a1d0a220a260a2b0a300a350a3a0a3f0a440a480a4d0a520a570a5c0a600a650a6a0a6f0a730a780a7d0a820a860a8b0a900a950a990a9e0aa30aa70aac0ab10ab50aba0abf0ac30ac80acd0ad10ad60adb0adf0ae40ae80aed0af20af60afb0aff0a040b080b0d0b110b160b1b0b1f0b240b280b2d0b310b360b3a0b3e0b430b470b4c0b500b550b590b5e0b620b660b6b0b6f0b740b780b7c0b810b850b890b8e0b920b970b9b0b9f0ba30ba80bac0bb00bb50bb90bbd0bc10bc60bca0bce0bd20bd70bdb0bdf0be30be80bec0bf00bf40bf80bfc0b010c050c090c0d0c110c150c190c1e0c220c260c2a0c2e0c320c360c3a0c3e0c420c460c4a0c4e0c520c560c5a0c5e0c620c660c6a0c6e0c720c760c7a0c7e0c820c860c8a0c8e0c910c950c990c9d0ca10ca50ca90cac0cb00cb40cb80cbc0cc00cc30cc70ccb0ccf0cd20cd60cda0cde0ce10ce50ce90ced0cf00cf40cf80cfb0cff0c030d060d0a0d0e0d110d150d180d1c0d200d230d270d2a0d2e0d320d350d390d3c0d400d430d470d4a0d4e0d510d550d580d5c0d5f0d620d660d690d6d0d700d740d770d7a0d7e0d810d850d880d8b0d8f0d920d950d990d9c0d9f0da20da60da90dac0db00db30db60db90dbc0dc00dc30dc60dc90dcc0dd00dd30dd60dd90ddc0ddf0de30de60de90dec0def0df20df50df80dfb0dfe0d010e040e070e0a0e0d0e100e130e160e190e1c0e1f0e220e250e280e2b0e2e0e310e340e370e3a0e3c0e3f0e420e450e480e4b0e4d0e500e530e560e590e5b0e5e0e610e640e660e690e6c0e6f0e710e740e770e790e7c0e7f0e810e840e870e890e8c0e8f0e910e940e960e990e9b0e9e0ea10ea30ea60ea80eab0ead0eb00eb20eb50eb70eba0ebc0ebf0ec10ec30ec60ec80ecb0ecd0ecf0ed20ed40ed60ed90edb0edd0ee00ee20ee40ee70ee90eeb0eee0ef00ef20ef40ef70ef90efb0efd0eff0e020f040f060f080f0a0f0c0f0e0f110f130f150f170f190f1b0f1d0f1f0f210f230f250f270f290f2b0f2d0f2f0f310f330f350f370f390f3b0f3d0f3f0f410f430f450f460f480f4a0f4c0f4e0f500f510f530f550f570f590f5a0f5c0f5e0f600f610f630f650f670f680f6a0f6c0f6d0f6f0f710f720f740f760f770f790f7a0f7c0f7d0f7f0f810f820f840f850f870f880f8a0f8b0f8d0f8e0f900f910f930f940f950f970f980f9a0f9b0f9c0f9e0f9f0fa10fa20fa30fa50fa60fa70fa80faa0fab0fac0fae0faf0fb00fb10fb30fb40fb50fb60fb70fb80fba0fbb0fbc0fbd0fbe0fbf0fc00fc20fc30fc40fc50fc60fc70fc80fc90fca0fcb0fcc0fcd0fce0fcf0fd00fd10fd20fd30fd40fd50fd50fd60fd70fd80fd90fda0fdb0fdc0fdc0fdd0fde0fdf0fe00fe00fe10fe20fe30fe30fe40fe50fe60fe60fe70fe80fe80fe90fea0fea0feb0fec0fec0fed0fed0fee0fef0fef0ff00ff00ff10ff10ff20ff20ff30ff30ff40ff40ff50ff50ff60ff60ff70ff70ff80ff80ff80ff90ff90ff90ffa0ffa0ffa0ffb0ffb0ffb0ffc0ffc0ffc0ffc0ffd0ffd0ffd0ffd0ffe0ffe0ffe0ffe0ffe0fff0fff0fff0fff0fff0fff0fff0f00100010001000100010001000100010001000100010"},"shardOffsets":[2,-2,0,-4,0,0,-3,-3,-1,1,2,0,-4,-3,2,-2,-2,2,-1,0,0,-4,3,3],"flameUvOrigins":[28,0,28,16,28,32,28,48,60,0,60,16,60,32,60,48],"flameUvOriginDefinition":{"sourceFile":"DRA.BIN","offset":67208,"runtimeAddress":"0x800b0688","rawBytesHex":"1c000000000000001c000000100000001c000000200000001c000000300000003c000000000000003c000000100000003c000000200000003c00000030000000","values":[28,0,28,16,28,32,28,48,60,0,60,16,60,32,60,48]},"factoryBlueprints":[22,1,193,0,34,0,23,1,193,0,2,0,40,1,193,0,0,0],"factoryBlueprintOrder":[27,28,59],"factories":[{"blueprintId":27,"sourceFile":"DRA.BIN","offset":53878,"rawBytesHex":"1601c1002200","childEntityId":22},{"blueprintId":28,"sourceFile":"DRA.BIN","offset":53884,"rawBytesHex":"1701c1000200","childEntityId":23},{"blueprintId":59,"sourceFile":"DRA.BIN","offset":54070,"rawBytesHex":"2801c1000000","childEntityId":40}],"bottle":{"atlas":"holy-water-bottle-atlas.png","opaqueAtlas":"holy-water-bottle-opaque-atlas.png","stpAtlas":"holy-water-bottle-stp-atlas.png","atlasWidth":32,"atlasHeight":32,"frames":{"29":{"frame":29,"animSet":9,"sourceFile":"DRA.BIN","pointerTableOffset":210848,"recordOffset":211820,"recordPointer":"0x800d3b6c","parts":[{"x":0,"y":0,"width":8,"height":8,"drawOffsetX":-4,"drawOffsetY":-4,"mirroredDrawOffsetX":-3,"rawFlags":0,"rawPartOffset":211822,"rawPartBytesHex":"0000fcfffcff08000800860168007800380080004000","packedTileset":104,"actualTpage":26,"quarter":0,"paletteId":390,"paletteOffset":266432,"sourceUV":[120,56,128,64],"intrinsicFlagsAppliedToAtlas":true,"blendMode":0,"abr":0,"stpScale":1.0,"semiTransparentEnabled":false,"opaquePixelCount":23,"stpPixelCount":0,"transparentPixelCount":41,"pixelIndexFrequencies":[41,2,6,2,2,3,0,0,0,2,2,0,1,1,1,1],"pixelSourceFile":"BIN/F_GAME.BIN","sourcePixelBlocks":[8],"sourceRowOffsets":[69180,69244,69308,69372,69436,69500,69564,69628],"rowOffsetNote":"Each entry starts at the left bound before intrinsic X flip. Source UV and nibble order retain the original pixel selection."}]}},"palettes":{"390":{"id":390,"sourceFile":"BIN/F_GAME.BIN","offset":266432,"rawBytesHex":"000021040044007c687d677e0058007c46295709bb02e71c6b2d1042d65abd77","rawWords":[0,1057,17408,31744,32104,32359,22528,31744,10566,2391,699,7399,11627,16912,23254,30653],"rgba":[[0,0,0,0],[8,8,8,255],[0,0,139,255],[0,0,255,255],[65,90,255,255],[57,156,255,255],[0,0,180,255],[0,0,255,255],[49,82,82,255],[189,82,16,255],[222,172,0,255],[57,57,57,255],[90,90,90,255],[131,131,131,255],[180,180,180,255],[238,238,238,255]],"stpIndices":[],"format":"RGB555 little-endian, bit15 is original STP; zero word transparent. Full RGBA preserves RGB and treats nonzero words as opaque; use split layers for STP drawing."}},"spriteBank":{"sourceFile":"DRA.BIN","bankIndex":9,"bankPointerTableOffset":15252,"bankOffset":210732,"bankPointer":"0x800d372c"},"blendNote":"Opaque pixels draw with source-over. Only STP pixels use the original selected ABR: candle mode3 adds foreground/4; explosion mode1 adds foreground. Canvas lighter approximates this; PSX RGB555 arithmetic, saturation, quantization and texture modulation are not reproduced exactly.","entityId":22,"frame":29,"animSet":9,"blendMode":0,"priorityRelativeToPlayer":-2,"initFlags":134217728,"hitboxWidth":4,"hitboxHeight":4,"initialYAdjustment":8,"horizontalSpeedAbsFixed":81920,"velocityYFixed":-204800,"gravityFixed":14336,"gravityFraction":"28/128","gravityVelocityGuardFixed":262144,"clampAfterAddingGravity":false,"sideProbeY":-7,"sideProbeXAbs":4,"breakTimer":16,"destroyTimer":4,"fireBirthTimerValues":[16,12,8,4],"frameHiddenByAnimSet0OnBreak":true,"flameDefinitionIndexFromCrashId":11,"sourceSubweaponFields":[1,3,32,3,32,8,188,27,2,1,11,0,0],"opaquePixelCount":23,"stpPixelCount":0,"transparentPixelCount":41},"glass":{"entityId":40,"flags":142606336,"allocatedPrimitiveCount":16,"hiddenMoverCount":8,"visibleTriangleCount":8,"sourceVisiblePrimitiveIndices":[8,9,10,11,12,13,14,15],"sourcePaintOrder":[7,6,5,4,3,2,1,0],"priorityRelativeToPlayer":2,"sourceGeometryTable":{"sourceFile":"DRA.BIN","offset":67160,"runtimeAddress":"0x800b0658","rawBytesHex":"0200feff0000fcff00000000fdfffdffffff010002000000fcfffdff0200fefffeff0200ffff00000000fcff03000300","values":[2,-2,0,-4,0,0,-3,-3,-1,1,2,0,-4,-3,2,-2,-2,2,-1,0,0,-4,3,3]},"geometryRecordIndexFormula":"sourcePrimitiveIndex&3","triangleVertex3DuplicatesVertex2":true,"untextured":true,"hiddenMoverDrawMode":10,"opaqueDrawMode":6,"additiveDrawMode":55,"abr":1,"initialTimer":20,"motionUpdateCountBeforeDestroy":19,"velocityXMask":16383,"velocityXBaseFixed":16384,"velocityXAlternatesSignByMoverIndex":true,"velocityYFormula":"-(rand()*2+163840)","gravityFixed":18432,"gravityFraction":"36/128","randomColorCallOrder":["red","blue","green","semitransparentChoice"],"randomColorBaseRgb":[48,48,128],"randomColorMaskRgb":[15,31,127],"semitransparentRandomMask":1,"randomCallsOnInit":48,"color5Conversion":"sourceByte>>3","color8Expansion":"floor(channel5*255/31)","ditheringRequested":false,"fractionRetainedWhenSyncingHighHalf":true,"noRasterTexture":true},"flame":{"entityId":23,"subweaponDefinitionIndex":11,"fullTextureImage":"holy-water-flame-texture.png","textureImage":"holy-water-flame-texture.png","opaqueTextureImage":"holy-water-flame-opaque.png","stpTextureImage":"holy-water-flame-stp.png","left":128,"top":128,"width":60,"height":64,"texturePage":26,"effectiveTexturePage":58,"clut":434,"palette":{"id":434,"sourceFile":"BIN/F_GAME.BIN","offset":267840,"rawBytesHex":"0000ff872184ff873fa5ffbde187e187e187e1870186a1864187e187eebbfbef","rawWords":[0,34815,33825,34815,42303,48639,34785,34785,34785,34785,34305,34465,34625,34785,48110,61435],"rgba":[[0,0,0,0],[255,255,8,255],[8,8,8,255],[255,255,8,255],[255,74,74,255],[255,123,123,255],[8,255,8,255],[8,255,8,255],[8,255,8,255],[8,255,8,255],[8,131,8,255],[8,172,8,255],[8,213,8,255],[8,255,8,255],[115,255,115,255],[222,255,222,255]],"stpIndices":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"format":"Little-endian RGB555 plus original bit15 STP. A zero word is transparent; every nonzero word has alpha255 in the full atlas."},"sourcePixelBlock":11,"pixelSourceFile":"BIN/F_GAME.BIN","sourceRowOffsets":[90112,90176,90240,90304,90368,90432,90496,90560,90624,90688,90752,90816,90880,90944,91008,91072,91136,91200,91264,91328,91392,91456,91520,91584,91648,91712,91776,91840,91904,91968,92032,92096,92160,92224,92288,92352,92416,92480,92544,92608,92672,92736,92800,92864,92928,92992,93056,93120,93184,93248,93312,93376,93440,93504,93568,93632,93696,93760,93824,93888,93952,94016,94080,94144],"pixelIndexFrequencies":[2545,0,0,122,7,0,2,0,0,24,20,258,171,221,214,256],"opaquePixelCount":0,"stpPixelCount":1295,"transparentPixelCount":2545,"clockRegions":[{"gameTimerLow3":0,"clockTexX":28,"clockTexY":0,"left":128,"top":128,"width":28,"height":16},{"gameTimerLow3":1,"clockTexX":28,"clockTexY":16,"left":128,"top":144,"width":28,"height":16},{"gameTimerLow3":2,"clockTexX":28,"clockTexY":32,"left":128,"top":160,"width":28,"height":16},{"gameTimerLow3":3,"clockTexX":28,"clockTexY":48,"left":128,"top":176,"width":28,"height":16},{"gameTimerLow3":4,"clockTexX":60,"clockTexY":0,"left":160,"top":128,"width":28,"height":16},{"gameTimerLow3":5,"clockTexX":60,"clockTexY":16,"left":160,"top":144,"width":28,"height":16},{"gameTimerLow3":6,"clockTexX":60,"clockTexY":32,"left":160,"top":160,"width":28,"height":16},{"gameTimerLow3":7,"clockTexX":60,"clockTexY":48,"left":160,"top":176,"width":28,"height":16}],"uvClockMask":7,"primitiveCount":4,"sourcePaintOrder":[3,2,1,0],"hiddenDrawMode":63,"visibleDrawMode":55,"abr":1,"rgbModulation":true,"priorityRelativeToPlayer":2,"flags":142606336,"initialTimer":80,"destroyWhenDecrementedTimerBelow":17,"initialAngle":0,"angleStep":384,"anglePeriod":4096,"randomRgbBase":[64,128,96],"randomRgbMask":31,"randomHeightBase":18,"randomHeightMask":15,"halfWidth":8,"sourceHitboxWidth":4,"hitboxPulseMask":3,"hitboxEnabledState":2,"hitboxOffYFormula":"(-flameHeight)>>1","hitboxHeightFormula":"flameHeight>>1","fadeWhenDecrementedTimerBelow":41,"fadeChannelGuard":16,"fadeChannelStep":5,"fadeChannelClampsToGuard":false,"hideIfHeightBelow":7,"geometry":{"xOffsets":"rsin(oldAngle+(i<<10))>>10 fori0..3; endpoints0/4 forced tooriginX","height":"(rsin(((oldTimer-16)*64)+0xC00)>>8)+randomHeight","yPoints":"top=originY-height,bottom=originY; midpoint and quarterpoints use signed division by2 truncated towardzero","quad":"topX=xPoints[i] plus/minus8; bottomX=xPoints[i+1] plus/minus8; corresponding yPoints","uv":"u0=u1=clockTexX+128-i*7;u2=u3=clockTexX+128-(i+1)*7;v0=v2=clockTexY+128;v1=v3=clockTexY+144","originalUvCoordinatesRetained":true,"rendererSubtractsCropOrigin":true},"initVisible":false,"stationaryEntityOrigin":true,"sourceSubweaponFields":[8,1,36864,3,16,8,93,27,2,1,0,0,0]},"rng":{"name":"BIOS A0(2F) rand / A0(30) srand","multiplier":1103515245,"increment":12345,"stateWrapBits":32,"outputRightShift":16,"outputMask":32767,"physicalStateAddress":"0x00009010","virtualStateAddress":"0xa0009010","gameStub":{"sourceFile":"SLUS_000.67","offset":26852,"runtimeAddress":"0x800160e4","rawBytesHex":"a0000a24080040012f00092400000000","biosVector":160,"biosFunctionIndex":47},"firmwareInput":{"sourceFile":"archive/bios/scph7502.bin","bytes":524288,"sha256":"5e84a94818cf5282f4217591fefd88be36b9b174b3cc7cb0bcd75199beb450f1","staticInspectionOnly":true},"firmwareRand":{"offset":8704,"endOffsetExclusive":8752,"rawBytesHex":"01a0033c1090638cc641013c6d4e21341900610001a0013c121800003930632402140300ff7f42300800e003109023ac","sha256":"49f1786a42e1569ea41ed77864a5813dd8d3ee1ce059363fdac2aa8998216156"},"firmwareSrand":{"offset":8752,"endOffsetExclusive":8764,"rawBytesHex":"01a0013c0800e003109024ac"},"firmwareCallTable":{"offset":17152,"randEntryOffset":17340,"randPointer":"0xbfc02200","srandEntryOffset":17344,"srandPointer":"0xbfc02230"},"observedFirmwareInstructions":[{"sourceFile":"archive/bios/scph7502.bin","offset":8712,"runtimeAddress":"0xbfc02208","word":"0x3c0141c6","littleEndianBytes":"c641013c","fact":"multiplier upper16"},{"sourceFile":"archive/bios/scph7502.bin","offset":8716,"runtimeAddress":"0xbfc0220c","word":"0x34214e6d","littleEndianBytes":"6d4e2134","fact":"multiplier lower16; combined0x41C64E6D"},{"sourceFile":"archive/bios/scph7502.bin","offset":8720,"runtimeAddress":"0xbfc02210","word":"0x610019","littleEndianBytes":"19006100","fact":"unsigned multiplication; low32 is selected"},{"sourceFile":"archive/bios/scph7502.bin","offset":8728,"runtimeAddress":"0xbfc02218","word":"0x1812","littleEndianBytes":"12180000","fact":"read low32 product"},{"sourceFile":"archive/bios/scph7502.bin","offset":8732,"runtimeAddress":"0xbfc0221c","word":"0x24633039","littleEndianBytes":"39306324","fact":"add increment0x3039"},{"sourceFile":"archive/bios/scph7502.bin","offset":8736,"runtimeAddress":"0xbfc02220","word":"0x31402","littleEndianBytes":"02140300","fact":"logical output shift16"},{"sourceFile":"archive/bios/scph7502.bin","offset":8740,"runtimeAddress":"0xbfc02224","word":"0x30427fff","littleEndianBytes":"ff7f4230","fact":"return mask0x7FFF"},{"sourceFile":"archive/bios/scph7502.bin","offset":8748,"runtimeAddress":"0xbfc0222c","word":"0xac239010","littleEndianBytes":"109023ac","fact":"store wrapped state inRAM"},{"sourceFile":"archive/bios/scph7502.bin","offset":8760,"runtimeAddress":"0xbfc02238","word":"0xac249010","littleEndianBytes":"109024ac","fact":"srand stores caller seed"}],"bottleDamageHelperRandCalls":1,"glassInitRandCalls":48,"flameColorCallsBeforeAllocation":3,"flameDamageHelperRandCallsAfterAllocation":1,"flameHeightCallsAfterDamageHelper":1,"localSeedAndGlobalPhaseAuthored":true,"scope":"Arithmetic is verified statically from the preserved companion firmware; no firmware instructions execute. The Java port isolates the selected calls. Full-game frame, grunt, auxiliary-effect and stat/equipment callers and original initialseed/global phase remain outside this scope."},"callbacks":{"bottle":{"entityId":22,"tableOffset":53532,"pointer":"0x80125c2c"},"flame":{"entityId":23,"tableOffset":53536,"pointer":"0x801262ac"},"glass":{"entityId":40,"tableOffset":53604,"pointer":"0x80125e68"}},"code":{"groundCollision":{"sourceFile":"DRA.BIN","name":"CheckHolyWaterCollision","startOffset":547376,"endOffsetExclusive":547692,"bytes":316,"sha256":"3ccb1c1e56c565caa062d7daea276e0032f5d24f76dd0be52786e75a90a9d971","reference":"https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c"},"sideCollision":{"sourceFile":"DRA.BIN","name":"func_80125B6C","startOffset":547692,"endOffsetExclusive":547884,"bytes":192,"sha256":"937cc57a7dff5ebf459d39f79acc3f401b91ba0f0017a6ef56ea0646f4786e26","reference":"https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c"},"bottle":{"sourceFile":"DRA.BIN","name":"EntitySubwpnHolyWater","startOffset":547884,"endOffsetExclusive":548456,"bytes":572,"sha256":"39df8bd5e13ec3f7886f30b581bc799ff459fdf77999b35a6e62656b1528c32d","reference":"https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c"},"glass":{"sourceFile":"DRA.BIN","name":"EntitySubwpnHolyWaterBreakGlass","startOffset":548456,"endOffsetExclusive":549548,"bytes":1092,"sha256":"320f84a63aa8414fc7e573d6d5755a7cdfa33ea520aef09009bae89a9eebbf6d","reference":"https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c"},"flame":{"sourceFile":"DRA.BIN","name":"EntitySubwpnHolyWaterFlame","startOffset":549548,"endOffsetExclusive":550832,"bytes":1284,"sha256":"2335adebee4ad1c82ee1cce3f366228ee952961abc050f965a3d1fb1be8d4be4","reference":"https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c"}},"observedBinaryInstructions":[{"sourceFile":"DRA.BIN","offset":547496,"runtimeAddress":"0x80125aa8","word":"0x3210f801","littleEndianBytes":"01f81032","fact":"first floor effects mask F801"},{"sourceFile":"DRA.BIN","offset":547532,"runtimeAddress":"0x80125acc","word":"0x32038801","littleEndianBytes":"01880332","fact":"floor branch mask 8801"},{"sourceFile":"DRA.BIN","offset":547568,"runtimeAddress":"0x80125af0","word":"0x3045f001","littleEndianBytes":"01f04530","fact":"second mask F001"},{"sourceFile":"DRA.BIN","offset":547624,"runtimeAddress":"0x80125b28","word":"0x21403","littleEndianBytes":"03140200","fact":"second slope return sign extends s16"},{"sourceFile":"DRA.BIN","offset":547660,"runtimeAddress":"0x80125b4c","word":"0x3202f001","littleEndianBytes":"01f00232","fact":"other slope return retains positive masked integer"},{"sourceFile":"DRA.BIN","offset":547820,"runtimeAddress":"0x80125bec","word":"0x30420002","littleEndianBytes":"02004230","fact":"side flag2"},{"sourceFile":"DRA.BIN","offset":547856,"runtimeAddress":"0x80125c10","word":"0xa4800000","littleEndianBytes":"000080a4","fact":"side correction clears fractional X"},{"sourceFile":"DRA.BIN","offset":547972,"runtimeAddress":"0x80125c84","word":"0x34844000","littleEndianBytes":"00408434","fact":"horizontal speed1.25"},{"sourceFile":"DRA.BIN","offset":547992,"runtimeAddress":"0x80125c98","word":"0x3402001d","littleEndianBytes":"1d000234","fact":"DRA9 bottle frame29"},{"sourceFile":"DRA.BIN","offset":548016,"runtimeAddress":"0x80125cb0","word":"0x24630008","littleEndianBytes":"08006324","fact":"initial integer Y plus8"},{"sourceFile":"DRA.BIN","offset":548032,"runtimeAddress":"0x80125cc0","word":"0x3c02fffc","littleEndianBytes":"fcff023c","fact":"initial vertical velocity upper FFFC"},{"sourceFile":"DRA.BIN","offset":548036,"runtimeAddress":"0x80125cc4","word":"0x3442e000","littleEndianBytes":"00e04234","fact":"initial vertical velocity lower E000"},{"sourceFile":"DRA.BIN","offset":548120,"runtimeAddress":"0x80125d18","word":"0xae030004","littleEndianBytes":"040003ae","fact":"move Y before gravity in branch delay slot"},{"sourceFile":"DRA.BIN","offset":548124,"runtimeAddress":"0x80125d1c","word":"0x24a23800","littleEndianBytes":"0038a224","fact":"gravity28/128"},{"sourceFile":"DRA.BIN","offset":548136,"runtimeAddress":"0x80125d28","word":"0xc04968c","littleEndianBytes":"8c96040c","fact":"floor probe before X motion"},{"sourceFile":"DRA.BIN","offset":548172,"runtimeAddress":"0x80125d4c","word":"0xae020000","littleEndianBytes":"000002ae","fact":"move X before side probe"},{"sourceFile":"DRA.BIN","offset":548180,"runtimeAddress":"0x80125d54","word":"0x2404fff9","littleEndianBytes":"f9ff0424","fact":"side Y offset minus7"},{"sourceFile":"DRA.BIN","offset":548240,"runtimeAddress":"0x80125d90","word":"0x3405003b","littleEndianBytes":"3b000534","fact":"glass factory59"},{"sourceFile":"DRA.BIN","offset":548252,"runtimeAddress":"0x80125d9c","word":"0x34020010","littleEndianBytes":"10000234","fact":"break timer16"},{"sourceFile":"DRA.BIN","offset":548284,"runtimeAddress":"0x80125dbc","word":"0x30420003","littleEndianBytes":"03004230","fact":"emit when predecrement timer low2 zero"},{"sourceFile":"DRA.BIN","offset":548312,"runtimeAddress":"0x80125dd8","word":"0x34a5001c","littleEndianBytes":"1c00a534","fact":"flame blueprint28"},{"sourceFile":"DRA.BIN","offset":548372,"runtimeAddress":"0x80125e14","word":"0x34030004","littleEndianBytes":"04000334","fact":"final bottle timer4"},{"sourceFile":"DRA.BIN","offset":548528,"runtimeAddress":"0x80125eb0","word":"0x34050010","littleEndianBytes":"10000534","fact":"glass allocates16 primitives before RNG"},{"sourceFile":"DRA.BIN","offset":548644,"runtimeAddress":"0x80125f24","word":"0x30423fff","littleEndianBytes":"ff3f4230","fact":"shard horizontal RNG mask3FFF"},{"sourceFile":"DRA.BIN","offset":548648,"runtimeAddress":"0x80125f28","word":"0x24434000","littleEndianBytes":"00404324","fact":"shard horizontal base0.25"},{"sourceFile":"DRA.BIN","offset":548688,"runtimeAddress":"0x80125f50","word":"0x21040","littleEndianBytes":"40100200","fact":"shard vertical random times2"},{"sourceFile":"DRA.BIN","offset":548732,"runtimeAddress":"0x80125f7c","word":"0x3042000f","littleEndianBytes":"0f004230","fact":"shard red mask15"},{"sourceFile":"DRA.BIN","offset":548784,"runtimeAddress":"0x80125fb0","word":"0x3042001f","littleEndianBytes":"1f004230","fact":"shard green mask31"},{"sourceFile":"DRA.BIN","offset":548820,"runtimeAddress":"0x80125fd4","word":"0x34020037","littleEndianBytes":"37000234","fact":"translucent glass drawmode37"},{"sourceFile":"DRA.BIN","offset":548824,"runtimeAddress":"0x80125fd8","word":"0x34020006","littleEndianBytes":"06000234","fact":"opaque glass drawmode6"},{"sourceFile":"DRA.BIN","offset":549080,"runtimeAddress":"0x801260d8","word":"0x34030014","littleEndianBytes":"14000334","fact":"glass timer20"},{"sourceFile":"DRA.BIN","offset":549248,"runtimeAddress":"0x80126180","word":"0x24424800","littleEndianBytes":"00484224","fact":"glass gravity36/128"},{"sourceFile":"DRA.BIN","offset":549596,"runtimeAddress":"0x801262dc","word":"0x30420007","littleEndianBytes":"07004230","fact":"flame UV clock low3 gameTimer bits"},{"sourceFile":"DRA.BIN","offset":549660,"runtimeAddress":"0x8012631c","word":"0x3042001f","littleEndianBytes":"1f004230","fact":"flame red random mask31 before allocation"},{"sourceFile":"DRA.BIN","offset":549700,"runtimeAddress":"0x80126344","word":"0x34050004","littleEndianBytes":"04000534","fact":"flame allocates4 after three color RNG calls"},{"sourceFile":"DRA.BIN","offset":549756,"runtimeAddress":"0x8012637c","word":"0x340601b2","littleEndianBytes":"b2010634","fact":"flame CLUT1B2"},{"sourceFile":"DRA.BIN","offset":549760,"runtimeAddress":"0x80126380","word":"0x3405001a","littleEndianBytes":"1a000534","fact":"flame tpage1A"},{"sourceFile":"DRA.BIN","offset":549772,"runtimeAddress":"0x8012638c","word":"0x3403003f","littleEndianBytes":"3f000334","fact":"init primitives hidden drawmode3F"},{"sourceFile":"DRA.BIN","offset":549872,"runtimeAddress":"0x801263f0","word":"0xc0468a4","littleEndianBytes":"a468040c","fact":"flame original stats helper consumes RNG"},{"sourceFile":"DRA.BIN","offset":549924,"runtimeAddress":"0x80126424","word":"0x34030050","littleEndianBytes":"50000334","fact":"flame initial timer80"},{"sourceFile":"DRA.BIN","offset":549952,"runtimeAddress":"0x80126440","word":"0x24420012","littleEndianBytes":"12004224","fact":"flame random height plus18"},{"sourceFile":"DRA.BIN","offset":549988,"runtimeAddress":"0x80126464","word":"0x24420180","littleEndianBytes":"80014224","fact":"angle increment384"},{"sourceFile":"DRA.BIN","offset":550016,"runtimeAddress":"0x80126480","word":"0x21283","littleEndianBytes":"83120200","fact":"x sine arithmetic shift10"},{"sourceFile":"DRA.BIN","offset":550092,"runtimeAddress":"0x801264cc","word":"0x21203","littleEndianBytes":"03120200","fact":"height sine arithmetic shift8"},{"sourceFile":"DRA.BIN","offset":550144,"runtimeAddress":"0x80126500","word":"0x32fc2","littleEndianBytes":"c22f0300","fact":"signed midpoint division compensates negative input"},{"sourceFile":"DRA.BIN","offset":550256,"runtimeAddress":"0x80126570","word":"0x30630003","littleEndianBytes":"03006330","fact":"hitbox pulse predecrement timer mask3"},{"sourceFile":"DRA.BIN","offset":550308,"runtimeAddress":"0x801265a4","word":"0x28420011","littleEndianBytes":"11004228","fact":"destroy decremented timer below17"},{"sourceFile":"DRA.BIN","offset":550360,"runtimeAddress":"0x801265d8","word":"0x28420029","littleEndianBytes":"29004228","fact":"fade decremented timer below41"},{"sourceFile":"DRA.BIN","offset":550400,"runtimeAddress":"0x80126600","word":"0x244200fb","littleEndianBytes":"fb004224","fact":"fade subtract5 modulo byte"}],"collisionHelpers":{"groundFullMask":63489,"groundMaskWithout800":61441,"groundMask1":34817,"groundMask2":32769,"sideEffectMask":2,"groundFirstProbe":"originX+baseX,originY+baseY","groundSecondProbe":"sameX,firstY-1+firstCorrectionUp","sideCorrectionDependsOnVelocitySign":true,"sideCorrectionClearsXFraction":true,"sideBitConvertedToBreakBit":true,"terrainSupportNote":"Original helper bytes/masks are retained. The Java terrain adapter separately ports selected tile responses and conservatively reports unsupported codes."},"attackAnimations":{"188":{"id":188,"pointer":"0x800afc10","pointerTableOffset":66728,"dataOffset":64528,"poses":[{"duration":6,"frame":121,"hitbox":1,"packedPose":633,"sourceOffset":64528},{"duration":6,"frame":122,"hitbox":1,"packedPose":634,"sourceOffset":64532},{"duration":16,"frame":123,"hitbox":1,"packedPose":635,"sourceOffset":64536},{"duration":-1,"command":"end","sourceOffset":64540}]},"189":{"id":189,"pointer":"0x800afc20","pointerTableOffset":66732,"dataOffset":64544,"poses":[{"duration":6,"frame":121,"hitbox":1,"packedPose":633,"sourceOffset":64544},{"duration":6,"frame":122,"hitbox":1,"packedPose":634,"sourceOffset":64548},{"duration":16,"frame":121,"hitbox":1,"packedPose":633,"sourceOffset":64552},{"duration":-1,"command":"end","sourceOffset":64556}]}},"resolvedAnimations":{"188":{"durations":[6,6,16],"frames":[121,122,123],"loopStart":-1,"sourcePoses":[{"animation":188,"poseIndex":0,"sourceOffset":64528,"hitbox":1,"packedPose":633},{"animation":188,"poseIndex":1,"sourceOffset":64532,"hitbox":1,"packedPose":634},{"animation":188,"poseIndex":2,"sourceOffset":64536,"hitbox":1,"packedPose":635}]},"189":{"durations":[6,6,16],"frames":[121,122,121],"loopStart":-1,"sourcePoses":[{"animation":189,"poseIndex":0,"sourceOffset":64544,"hitbox":1,"packedPose":633},{"animation":189,"poseIndex":1,"sourceOffset":64548,"hitbox":1,"packedPose":634},{"animation":189,"poseIndex":2,"sourceOffset":64552,"hitbox":1,"packedPose":633}]}},"playerAttackDurationTicks":28,"attackAnimationNote":"Holy Water player animations188/189 each contain28 originalticks and end. Existing Alucard graphics are unchanged. Local stand/edge/crouch selection is ported separately.","auxiliaryEffect":{"factoryId":4,"sourceFile":"DRA.BIN","offset":53740,"rawBytesHex":"0501c1000000","childEntityId":5,"sourceCallbackLabel":"func_8011E4BC","params":7,"originYOffset":-10,"implemented":false},"existingOriginalCandle":{"sourceFile":"ST/NO3/NO3.BIN","roomId":5,"recordOffset":16086,"rawBytesHex":"7f00600001a007061100","originX":127,"originY":96,"prizeParams":17},"drawNote":"Bottle is the original DRA9 frame29:8-by8 opaque-class art, no intrinsic part flips, original pivots/facing correction retained. Flame PNGs cover raw60-by64 atUV128,128 including the unused4-pixel gap between clock banks. Each band retains transposed rawUVs and renderer subtracts crop origin; STP pixels use sourceRGB555 modulation and ABR1 addition. Glass uses the actual coloredG4 triangles and sourceRGB byte arithmetic, with no invented raster artwork. Canvas texture sampling/clipping/additive arithmetic remains approximate.","scopeNote":"Selected bottle/glass/flame graphics, definitions, tables, firmware RNG arithmetic, collision-helper evidence and source behavior are recovered statically. Java ports behavior separately. Base damage1/8 and an isolated RNG stream are bounded test choices; full stats/equipment/world RNG phase, auxiliary effect, sound, complete sharedfactory/primitive contention, other weapons and exact GPU rasterization remain unfinished. Existing113 generated outputs are preserved unchanged.","sourceHashes":{"DRA.BIN":"6cb1383b5b94e0bcad041af9856853907226091c184071917a739b91734af66b","BIN/F_GAME.BIN":"0984439a9e480017eb5e3bbad421aaa86e976d65dfb31b68c201cc80ed6fc0ce","SLUS_000.67":"8f3e09b5b607a49aab94a5516ca742a3a1ca93b086d0e91a8067c79faeaeab08","ST/NO3/NO3.BIN":"1228d5a1074c9e0c6cd0bcd50565450b168689d4ddbcaf9178eda49622a0e405"},"references":["https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/84B88.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/7879C.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/5D5BC.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/6E42C.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/config_us.h","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/4B758.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/dra/4DA70.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/src/main/psxsdk/libgte/rsin.c","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/include/game.h","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/include/entity.h","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/include/psxsdk/libc.h","https://github.com/Xeeynamo/sotn-decomp/blob/0622fcfd37311fd21baf2938c6bd74cea63005ba/config/symbols.us.txt"]}
