Merge branch 'gravity'

This commit is contained in:
Headpenguin 2024-06-27 08:01:03 -04:00
commit a0bd939dac
59 changed files with 13579 additions and 12804 deletions

View File

@ -3,7 +3,7 @@ dot__Q29JGeometry8TVec3<f>CFRCQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
set<f>__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>_v,AreaForm.o,AreaObj.a,true
add__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
asin__Q29JGeometry8TUtil<f>Ff,AreaForm.o,AreaObj.a,true
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,false
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
getValue<f>__12JMapInfoIterCFPCcPf_b,AreaForm.o,AreaObj.a,false
__ct__12AreaFormCubeFi,AreaForm.o,AreaObj.a,true
init__12AreaFormCubeFRC12JMapInfoIter,AreaForm.o,AreaObj.a,true

1 Symbol Name Object File Library Archive Matching
3 set<f>__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>_v AreaForm.o AreaObj.a true
4 add__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f> AreaForm.o AreaObj.a true
5 asin__Q29JGeometry8TUtil<f>Ff AreaForm.o AreaObj.a true
6 mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f> AreaForm.o AreaObj.a false true
7 getValue<f>__12JMapInfoIterCFPCcPf_b AreaForm.o AreaObj.a false
8 __ct__12AreaFormCubeFi AreaForm.o AreaObj.a true
9 init__12AreaFormCubeFRC12JMapInfoIter AreaForm.o AreaObj.a true

View File

@ -1477,8 +1477,8 @@ execute__Q229@unnamed@DodoryuStateLv1_cpp@29DodoryuStateLv1NrvAppearStartCFP5Spi
execute__Q229@unnamed@DodoryuStateLv1_cpp@28DodoryuStateLv1NrvAppearSignCFP5Spine,DodoryuStateLv1.o,Boss.a,false
executeOnEnd__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine,DodoryuStateLv1.o,Boss.a,false
execute__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine,DodoryuStateLv1.o,Boss.a,false
scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,false
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,false
scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,true
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,true
__ct__15DodoryuStateLv2FP7DodoryuP17DodoryuChaseParamPCc,DodoryuStateLv2.o,Boss.a,false
init__15DodoryuStateLv2FRC12JMapInfoIter,DodoryuStateLv2.o,Boss.a,false
control__15DodoryuStateLv2Fv,DodoryuStateLv2.o,Boss.a,false

1 Symbol Name Object File Library Archive Matching
1477 execute__Q229@unnamed@DodoryuStateLv1_cpp@28DodoryuStateLv1NrvAppearSignCFP5Spine DodoryuStateLv1.o Boss.a false
1478 executeOnEnd__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine DodoryuStateLv1.o Boss.a false
1479 execute__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine DodoryuStateLv1.o Boss.a false
1480 scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f> DodoryuStateLv2.o Boss.a false true
1481 mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f> DodoryuStateLv2.o Boss.a false true
1482 __ct__15DodoryuStateLv2FP7DodoryuP17DodoryuChaseParamPCc DodoryuStateLv2.o Boss.a false
1483 init__15DodoryuStateLv2FRC12JMapInfoIter DodoryuStateLv2.o Boss.a false
1484 control__15DodoryuStateLv2Fv DodoryuStateLv2.o Boss.a false

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ setLocalMatrix__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34
setEnableBottom__11ConeGravityFb,ConeGravity.o,Gravity.a,true
setTopCutRate__11ConeGravityFf,ConeGravity.o,Gravity.a,true
updateMtx__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ConeGravity.o,Gravity.a,true
calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ConeGravity.o,Gravity.a,false
calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ConeGravity.o,Gravity.a,true
isZero__Q29JGeometry8TVec3<f>CFv,CubeGravity.o,Gravity.a,true
__ct__11CubeGravityFv,CubeGravity.o,Gravity.a,true
setCube__11CubeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,CubeGravity.o,Gravity.a,true
@ -23,9 +23,9 @@ setRadius__11DiskGravityFf,DiskGravity.o,Gravity.a,true
setValidDegee__11DiskGravityFf,DiskGravity.o,Gravity.a,true
setBothSide__11DiskGravityFb,DiskGravity.o,Gravity.a,true
setEnableEdgeGravity__11DiskGravityFb,DiskGravity.o,Gravity.a,true
calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskGravity.o,Gravity.a,false
calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskGravity.o,Gravity.a,true
updateMtx__11DiskGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskGravity.o,Gravity.a,true
updateLocalParam__11DiskGravityFv,DiskGravity.o,Gravity.a,false
updateLocalParam__11DiskGravityFv,DiskGravity.o,Gravity.a,true
__ct__16DiskTorusGravityFv,DiskTorusGravity.o,Gravity.a,true
setPosition__16DiskTorusGravityFRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
setDirection__16DiskTorusGravityFRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
@ -33,8 +33,8 @@ setRadius__16DiskTorusGravityFf,DiskTorusGravity.o,Gravity.a,true
setDiskRadius__16DiskTorusGravityFf,DiskTorusGravity.o,Gravity.a,true
setEdgeType__16DiskTorusGravityFl,DiskTorusGravity.o,Gravity.a,true
setBothSide__16DiskTorusGravityFb,DiskTorusGravity.o,Gravity.a,true
updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskTorusGravity.o,Gravity.a,false
calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,false
updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskTorusGravity.o,Gravity.a,true
calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
__ct__16GlobalGravityObjFPCc,GlobalGravityObj.o,Gravity.a,true
init__16GlobalGravityObjFRC12JMapInfoIter,GlobalGravityObj.o,Gravity.a,true
makeActorAppeared__16GlobalGravityObjFv,GlobalGravityObj.o,Gravity.a,true
@ -103,9 +103,9 @@ __ct__11GravityInfoFv,GravityInfo.o,Gravity.a,true
init__11GravityInfoFv,GravityInfo.o,Gravity.a,true
__ct__15ParallelGravityFv,ParallelGravity.o,Gravity.a,true
calcOwnGravityVector__15ParallelGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ParallelGravity.o,Gravity.a,true
updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,false
updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,true
setPlane__15ParallelGravityFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,ParallelGravity.o,Gravity.a,true
setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,false
setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,true
setRangeCylinder__15ParallelGravityFff,ParallelGravity.o,Gravity.a,true
setRangeType__15ParallelGravityFQ215ParallelGravity10RANGE_TYPE,ParallelGravity.o,Gravity.a,true
setBaseDistance__15ParallelGravityFf,ParallelGravity.o,Gravity.a,true
@ -132,14 +132,14 @@ __ct__12PointGravityFv,PointGravity.o,Gravity.a,true
calcOwnGravityVector__12PointGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,PointGravity.o,Gravity.a,true
updateMtx__12PointGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,PointGravity.o,Gravity.a,true
__ct__14SegmentGravityFv,SegmentGravity.o,Gravity.a,true
calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,false
updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,SegmentGravity.o,Gravity.a,false
calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,SegmentGravity.o,Gravity.a,true
setGravityPoint__14SegmentGravityFUlRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
setSideVector__14SegmentGravityFRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
setValidSideDegree__14SegmentGravityFf,SegmentGravity.o,Gravity.a,true
setEdgeValid__14SegmentGravityFUlb,SegmentGravity.o,Gravity.a,true
updateLocalParam__14SegmentGravityFv,SegmentGravity.o,Gravity.a,false
updateLocalParam__14SegmentGravityFv,SegmentGravity.o,Gravity.a,true
__ct__11WireGravityFv,WireGravity.o,Gravity.a,true
setPointListSize__11WireGravityFUl,WireGravity.o,Gravity.a,true
addPoint__11WireGravityFRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,true
calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,false
calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,true

1 Symbol Name Object File Library Archive Matching
4 setEnableBottom__11ConeGravityFb ConeGravity.o Gravity.a true
5 setTopCutRate__11ConeGravityFf ConeGravity.o Gravity.a true
6 updateMtx__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> ConeGravity.o Gravity.a true
7 calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> ConeGravity.o Gravity.a false true
8 isZero__Q29JGeometry8TVec3<f>CFv CubeGravity.o Gravity.a true
9 __ct__11CubeGravityFv CubeGravity.o Gravity.a true
10 setCube__11CubeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> CubeGravity.o Gravity.a true
23 setValidDegee__11DiskGravityFf DiskGravity.o Gravity.a true
24 setBothSide__11DiskGravityFb DiskGravity.o Gravity.a true
25 setEnableEdgeGravity__11DiskGravityFb DiskGravity.o Gravity.a true
26 calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> DiskGravity.o Gravity.a false true
27 updateMtx__11DiskGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> DiskGravity.o Gravity.a true
28 updateLocalParam__11DiskGravityFv DiskGravity.o Gravity.a false true
29 __ct__16DiskTorusGravityFv DiskTorusGravity.o Gravity.a true
30 setPosition__16DiskTorusGravityFRCQ29JGeometry8TVec3<f> DiskTorusGravity.o Gravity.a true
31 setDirection__16DiskTorusGravityFRCQ29JGeometry8TVec3<f> DiskTorusGravity.o Gravity.a true
33 setDiskRadius__16DiskTorusGravityFf DiskTorusGravity.o Gravity.a true
34 setEdgeType__16DiskTorusGravityFl DiskTorusGravity.o Gravity.a true
35 setBothSide__16DiskTorusGravityFb DiskTorusGravity.o Gravity.a true
36 updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> DiskTorusGravity.o Gravity.a false true
37 calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> DiskTorusGravity.o Gravity.a false true
38 __ct__16GlobalGravityObjFPCc GlobalGravityObj.o Gravity.a true
39 init__16GlobalGravityObjFRC12JMapInfoIter GlobalGravityObj.o Gravity.a true
40 makeActorAppeared__16GlobalGravityObjFv GlobalGravityObj.o Gravity.a true
103 init__11GravityInfoFv GravityInfo.o Gravity.a true
104 __ct__15ParallelGravityFv ParallelGravity.o Gravity.a true
105 calcOwnGravityVector__15ParallelGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> ParallelGravity.o Gravity.a true
106 updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> ParallelGravity.o Gravity.a false true
107 setPlane__15ParallelGravityFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> ParallelGravity.o Gravity.a true
108 setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> ParallelGravity.o Gravity.a false true
109 setRangeCylinder__15ParallelGravityFff ParallelGravity.o Gravity.a true
110 setRangeType__15ParallelGravityFQ215ParallelGravity10RANGE_TYPE ParallelGravity.o Gravity.a true
111 setBaseDistance__15ParallelGravityFf ParallelGravity.o Gravity.a true
132 calcOwnGravityVector__12PointGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> PointGravity.o Gravity.a true
133 updateMtx__12PointGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> PointGravity.o Gravity.a true
134 __ct__14SegmentGravityFv SegmentGravity.o Gravity.a true
135 calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> SegmentGravity.o Gravity.a false true
136 updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>> SegmentGravity.o Gravity.a false true
137 setGravityPoint__14SegmentGravityFUlRCQ29JGeometry8TVec3<f> SegmentGravity.o Gravity.a true
138 setSideVector__14SegmentGravityFRCQ29JGeometry8TVec3<f> SegmentGravity.o Gravity.a true
139 setValidSideDegree__14SegmentGravityFf SegmentGravity.o Gravity.a true
140 setEdgeValid__14SegmentGravityFUlb SegmentGravity.o Gravity.a true
141 updateLocalParam__14SegmentGravityFv SegmentGravity.o Gravity.a false true
142 __ct__11WireGravityFv WireGravity.o Gravity.a true
143 setPointListSize__11WireGravityFUl WireGravity.o Gravity.a true
144 addPoint__11WireGravityFRCQ29JGeometry8TVec3<f> WireGravity.o Gravity.a true
145 calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f> WireGravity.o Gravity.a false true

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Game",
"message": "14.793%",
"color": "blue"
{
"schemaVersion": 1,
"label": "Game",
"message": "14.927%",
"color": "blue"
}

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "AreaObj",
"message": "58.14%",
"message": "58.466%",
"color": "green"
}

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Boss",
"message": "8.556%",
"message": "8.597%",
"color": "orange"
}

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Gravity",
"message": "73.079%",
"message": "100.0%",
"color": "maroon"
}

View File

@ -1,26 +1,26 @@
| Library | Percentage |
| ------------- | ------------- |
| [Animation](https://github.com/shibbo/Petari/blob/master/docs/lib/Animation.md) | 5.303240099695375% |
| [AreaObj](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj.md) | 58.14029363784665% |
| [AudioLib](https://github.com/shibbo/Petari/blob/master/docs/lib/AudioLib.md) | 0.0% |
| [Boss](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss.md) | 8.556806124784156% |
| [Camera](https://github.com/shibbo/Petari/blob/master/docs/lib/Camera.md) | 34.12644987572494% |
| [Demo](https://github.com/shibbo/Petari/blob/master/docs/lib/Demo.md) | 3.7442572741194486% |
| [Effect](https://github.com/shibbo/Petari/blob/master/docs/lib/Effect.md) | 2.2184743124026984% |
| [Enemy](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy.md) | 3.845633425676012% |
| [GameAudio](https://github.com/shibbo/Petari/blob/master/docs/lib/GameAudio.md) | 0.0% |
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 73.07927450580803% |
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 42.577224527431994% |
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 17.65918333240488% |
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 32.27750678634203% |
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 33.210237031947784% |
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 2.155878467635403% |
| [NWC24](https://github.com/shibbo/Petari/blob/master/docs/lib/NWC24.md) | 0.0% |
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Player.md) | 7.8301638397445155% |
| [RhythmLib](https://github.com/shibbo/Petari/blob/master/docs/lib/RhythmLib.md) | 1.2661566868900025% |
| [Ride](https://github.com/shibbo/Petari/blob/master/docs/lib/Ride.md) | 0.0% |
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Scene.md) | 17.116530156366345% |
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 6.315748206421598% |
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 54.75241889584519% |
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 14.730098411770436% |
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 10.090099514848767% |
| Library | Percentage |
| ------------- | ------------- |
| [Animation](https://github.com/shibbo/Petari/blob/master/docs/lib/Animation.md) | 5.303240099695375% |
| [AreaObj](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj.md) | 58.466557911908644% |
| [AudioLib](https://github.com/shibbo/Petari/blob/master/docs/lib/AudioLib.md) | 0.0% |
| [Boss](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss.md) | 8.597374498096407% |
| [Camera](https://github.com/shibbo/Petari/blob/master/docs/lib/Camera.md) | 34.12644987572494% |
| [Demo](https://github.com/shibbo/Petari/blob/master/docs/lib/Demo.md) | 3.7442572741194486% |
| [Effect](https://github.com/shibbo/Petari/blob/master/docs/lib/Effect.md) | 2.2184743124026984% |
| [Enemy](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy.md) | 3.845633425676012% |
| [GameAudio](https://github.com/shibbo/Petari/blob/master/docs/lib/GameAudio.md) | 0.0% |
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 100.0% |
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 42.577224527431994% |
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 17.65918333240488% |
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 32.27750678634203% |
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 33.210237031947784% |
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 2.155878467635403% |
| [NWC24](https://github.com/shibbo/Petari/blob/master/docs/lib/NWC24.md) | 0.0% |
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Player.md) | 7.8301638397445155% |
| [RhythmLib](https://github.com/shibbo/Petari/blob/master/docs/lib/RhythmLib.md) | 1.2661566868900025% |
| [Ride](https://github.com/shibbo/Petari/blob/master/docs/lib/Ride.md) | 0.0% |
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Scene.md) | 17.116530156366345% |
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 6.315748206421598% |
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 54.75241889584519% |
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 14.730098411770436% |
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 10.090099514848767% |

View File

@ -8,7 +8,7 @@
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [AreaForm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaForm.md) | 74.60148777895856% | 28 / 33 | 84.84848484848484% | :eight_pointed_black_star:
| [AreaForm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaForm.md) | 77.78958554729012% | 29 / 33 | 87.87878787878788% | :eight_pointed_black_star:
| [AreaFormDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaFormDrawer.md) | 52.17391304347826% | 2 / 3 | 66.66666666666666% | :eight_pointed_black_star:
| [AreaObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaObj.md) | 88.91129032258065% | 23 / 24 | 95.83333333333334% | :eight_pointed_black_star:
| [AreaObjContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaObjContainer.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:

View File

@ -5,7 +5,7 @@
| :white_check_mark: | Function is completed.
# 28 / 33 Completed -- (84.84848484848484%)
# 29 / 33 Completed -- (87.87878787878788%)
# AreaForm.o
| Symbol | Decompiled? |
| ------------- | ------------- |
@ -13,7 +13,7 @@
| `set<f>__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>_v` | :white_check_mark: |
| `add__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `asin__Q29JGeometry8TUtil<f>Ff` | :white_check_mark: |
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>` | :x: |
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `getValue<f>__12JMapInfoIterCFPCcPf_b` | :x: |
| `__ct__12AreaFormCubeFi` | :white_check_mark: |
| `init__12AreaFormCubeFRC12JMapInfoIter` | :white_check_mark: |

View File

@ -63,7 +63,7 @@
| [DodoryuMove.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuMove.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [DodoryuStateBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateBase.md) | 0.0% | 0 / 2 | 0.0% | :x:
| [DodoryuStateLv1.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv1.md) | 0.0% | 0 / 55 | 0.0% | :x:
| [DodoryuStateLv2.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv2.md) | 0.0% | 0 / 122 | 0.0% | :x:
| [DodoryuStateLv2.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv2.md) | 1.349014181943964% | 2 / 122 | 1.639344262295082% | :eight_pointed_black_star:
| [DodoryuStateWait.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateWait.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [DodoryuUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuUtil.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [Koopa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/Koopa.md) | 0.0% | 0 / 15 | 0.0% | :x:

View File

@ -5,12 +5,12 @@
| :white_check_mark: | Function is completed.
# 0 / 122 Completed -- (0.0%)
# 2 / 122 Completed -- (1.639344262295082%)
# DodoryuStateLv2.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>` | :x: |
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>` | :x: |
| `scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `__ct__15DodoryuStateLv2FP7DodoryuP17DodoryuChaseParamPCc` | :x: |
| `init__15DodoryuStateLv2FRC12JMapInfoIter` | :x: |
| `control__15DodoryuStateLv2Fv` | :x: |

View File

@ -1,120 +1,120 @@
# Enemy
| Symbol | Meaning
| ------------- | -------------
| :x: | Object has not yet been started.
| :eight_pointed_black_star: | Object is in progress.
| :white_check_mark: | Object is completed.
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [AnimScaleController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimScaleController.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [AnimStampController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimStampController.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [BallBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BallBeamer.md) | 53.31125827814569% | 22 / 25 | 88.0% | :eight_pointed_black_star:
| [Balloonfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Balloonfish.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [BasaBasa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BasaBasa.md) | 0.0% | 0 / 77 | 0.0% | :x:
| [BegomanBaby.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBaby.md) | 0.0% | 0 / 76 | 0.0% | :x:
| [BegomanBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBase.md) | 0.0% | 0 / 79 | 0.0% | :x:
| [BegomanFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [BegomanLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanLauncher.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [BegomanSpike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpike.md) | 0.0% | 0 / 78 | 0.0% | :x:
| [BegomanSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpring.md) | 0.0% | 0 / 83 | 0.0% | :x:
| [BegomanSpringHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpringHead.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [Birikyu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Birikyu.md) | 88.57453754080522% | 40 / 42 | 95.23809523809523% | :eight_pointed_black_star:
| [BombBird.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBird.md) | 0.0% | 0 / 54 | 0.0% | :x:
| [BombBirdBomb.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBirdBomb.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [BombHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHei.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [BombHeiLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHeiLauncher.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [BombTeresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombTeresa.md) | 0.0% | 0 / 93 | 0.0% | :x:
| [CannonShellBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CannonShellBase.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [CocoNutBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoNutBall.md) | 0.0% | 0 / 39 | 0.0% | :x:
| [CocoSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoSambo.md) | 0.0% | 0 / 87 | 0.0% | :x:
| [DharmaSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/DharmaSambo.md) | 0.0% | 0 / 88 | 0.0% | :x:
| [Dossun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Dossun.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [ElectricPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ElectricPressureBullet.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [EyeBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/EyeBeamer.md) | 0.0% | 0 / 46 | 0.0% | :x:
| [FireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [FireBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBubble.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [Gesso.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Gesso.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [HammerHeadPackun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HammerHeadPackun.md) | 0.0% | 0 / 61 | 0.0% | :x:
| [Hanachan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Hanachan.md) | 0.0% | 0 / 126 | 0.0% | :x:
| [HomingKiller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HomingKiller.md) | 0.0% | 0 / 69 | 0.0% | :x:
| [IceMerameraKing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/IceMerameraKing.md) | 0.0% | 0 / 78 | 0.0% | :x:
| [ItemGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ItemGenerator.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [Jellyfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jellyfish.md) | 0.0% | 0 / 44 | 0.0% | :x:
| [JellyfishElectric.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JellyfishElectric.md) | 0.0% | 0 / 38 | 0.0% | :x:
| [Jiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jiraira.md) | 89.3353941267388% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
| [JumpBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpBeamer.md) | 0.0% | 0 / 48 | 0.0% | :x:
| [JumpGuarder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpGuarder.md) | 0.0% | 0 / 56 | 0.0% | :x:
| [JumpSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpSpider.md) | 0.0% | 0 / 60 | 0.0% | :x:
| [Kabokuri.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kabokuri.md) | 0.0% | 0 / 51 | 0.0% | :x:
| [KabokuriFire.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFire.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [KabokuriFireHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFireHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [Kameck.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kameck.md) | 0.0% | 0 / 95 | 0.0% | :x:
| [KameckBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeam.md) | 0.0% | 0 / 43 | 0.0% | :x:
| [KameckBeamHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeamHolder.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [KameckFireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckFireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [KameckHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [KameckTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckTurtle.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [Kanina.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kanina.md) | 0.0% | 0 / 99 | 0.0% | :x:
| [Karikari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karikari.md) | 0.0% | 0 / 77 | 0.0% | :x:
| [KarikariDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KarikariDirector.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [Karon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karon.md) | 0.0% | 0 / 62 | 0.0% | :x:
| [Kiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kiraira.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [KirairaChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KirairaChain.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [KoopaJrShip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShip.md) | 0.0% | 0 / 72 | 0.0% | :x:
| [KoopaJrShipCannonMainShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonMainShell.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [KoopaJrShipCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonShell.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [KoteBug.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoteBug.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [Kuribo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kuribo.md) | 0.0% | 0 / 89 | 0.0% | :x:
| [KuriboChief.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboChief.md) | 0.0% | 0 / 51 | 0.0% | :x:
| [KuriboMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboMini.md) | 0.0% | 0 / 61 | 0.0% | :x:
| [MechanicKoopaMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MechanicKoopaMini.md) | 0.0% | 0 / 64 | 0.0% | :x:
| [Meramera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Meramera.md) | 0.0% | 0 / 134 | 0.0% | :x:
| [Metbo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Metbo.md) | 0.0% | 0 / 72 | 0.0% | :x:
| [Mogu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogu.md) | 0.0% | 0 / 50 | 0.0% | :x:
| [Mogucchi.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogucchi.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [MogucchiHill.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiHill.md) | 0.0% | 0 / 47 | 0.0% | :x:
| [MogucchiRefuseTerritory.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiRefuseTerritory.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [MogucchiShooter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiShooter.md) | 0.0% | 0 / 52 | 0.0% | :x:
| [MoguStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MoguStone.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [NokonokoLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/NokonokoLand.md) | 0.0% | 0 / 94 | 0.0% | :x:
| [Onimasu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Onimasu.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [OnimasuJump.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuJump.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [OnimasuPivot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuPivot.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [OtaRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OtaRock.md) | 0.0% | 0 / 43 | 0.0% | :x:
| [PackunPetit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/PackunPetit.md) | 94.65550547327753% | 66 / 67 | 98.50746268656717% | :eight_pointed_black_star:
| [Petari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Petari.md) | 0.0% | 0 / 82 | 0.0% | :x:
| [Poihana.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Poihana.md) | 75.04648568240981% | 88 / 95 | 92.63157894736842% | :eight_pointed_black_star:
| [Pukupuku.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Pukupuku.md) | 0.0% | 0 / 60 | 0.0% | :x:
| [RingBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeam.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [RingBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeamer.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [SamboFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [SamboHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboHead.md) | 0.0% | 0 / 63 | 0.0% | :x:
| [SearchBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SearchBeamer.md) | 0.0% | 0 / 71 | 0.0% | :x:
| [Snakehead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Snakehead.md) | 0.0% | 0 / 34 | 0.0% | :x:
| [SpinHitController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SpinHitController.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [StinkBugBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugBase.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [StinkBugParent.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugParent.md) | 0.0% | 0 / 63 | 0.0% | :x:
| [StinkBugSmall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugSmall.md) | 0.0% | 0 / 62 | 0.0% | :x:
| [StringSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StringSpider.md) | 0.0% | 0 / 74 | 0.0% | :x:
| [Takobo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Takobo.md) | 0.0% | 0 / 52 | 0.0% | :x:
| [TakoHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHei.md) | 0.0% | 0 / 96 | 0.0% | :x:
| [TakoHeiInk.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInk.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [TakoHeiInkHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInkHolder.md) | 0.0% | 0 / 5 | 0.0% | :x:
| [Teresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Teresa.md) | 0.0% | 0 / 119 | 0.0% | :x:
| [TeresaWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TeresaWater.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [TerritoryMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TerritoryMover.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [Unizo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Unizo.md) | 0.0% | 0 / 65 | 0.0% | :x:
| [UnizoLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/UnizoLauncher.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WalkerStateBindStarPointer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBindStarPointer.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [WalkerStateBlowDamage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBlowDamage.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WalkerStateChase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateChase.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [WalkerStateFindPlayer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFindPlayer.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [WalkerStateFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFunction.md) | 0.0% | 0 / 2 | 0.0% | :x:
| [WalkerStateParam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateParam.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [WalkerStateRunaway.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateRunaway.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [WalkerStateStagger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateStagger.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [WalkerStateWander.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateWander.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [WaterBazooka.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazooka.md) | 0.0% | 0 / 93 | 0.0% | :x:
| [WaterBazookaCapsule.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazookaCapsule.md) | 0.0% | 0 / 18 | 0.0% | :x:
# Enemy
| Symbol | Meaning
| ------------- | -------------
| :x: | Object has not yet been started.
| :eight_pointed_black_star: | Object is in progress.
| :white_check_mark: | Object is completed.
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [AnimScaleController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimScaleController.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [AnimStampController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimStampController.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [BallBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BallBeamer.md) | 53.31125827814569% | 22 / 25 | 88.0% | :eight_pointed_black_star:
| [Balloonfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Balloonfish.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [BasaBasa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BasaBasa.md) | 0.0% | 0 / 77 | 0.0% | :x:
| [BegomanBaby.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBaby.md) | 0.0% | 0 / 76 | 0.0% | :x:
| [BegomanBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBase.md) | 0.0% | 0 / 79 | 0.0% | :x:
| [BegomanFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [BegomanLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanLauncher.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [BegomanSpike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpike.md) | 0.0% | 0 / 78 | 0.0% | :x:
| [BegomanSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpring.md) | 0.0% | 0 / 83 | 0.0% | :x:
| [BegomanSpringHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpringHead.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [Birikyu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Birikyu.md) | 88.57453754080522% | 40 / 42 | 95.23809523809523% | :eight_pointed_black_star:
| [BombBird.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBird.md) | 0.0% | 0 / 54 | 0.0% | :x:
| [BombBirdBomb.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBirdBomb.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [BombHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHei.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [BombHeiLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHeiLauncher.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [BombTeresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombTeresa.md) | 0.0% | 0 / 93 | 0.0% | :x:
| [CannonShellBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CannonShellBase.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [CocoNutBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoNutBall.md) | 0.0% | 0 / 39 | 0.0% | :x:
| [CocoSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoSambo.md) | 0.0% | 0 / 87 | 0.0% | :x:
| [DharmaSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/DharmaSambo.md) | 0.0% | 0 / 88 | 0.0% | :x:
| [Dossun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Dossun.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [ElectricPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ElectricPressureBullet.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [EyeBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/EyeBeamer.md) | 0.0% | 0 / 46 | 0.0% | :x:
| [FireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [FireBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBubble.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [Gesso.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Gesso.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [HammerHeadPackun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HammerHeadPackun.md) | 0.0% | 0 / 61 | 0.0% | :x:
| [Hanachan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Hanachan.md) | 0.0% | 0 / 126 | 0.0% | :x:
| [HomingKiller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HomingKiller.md) | 0.0% | 0 / 69 | 0.0% | :x:
| [IceMerameraKing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/IceMerameraKing.md) | 0.0% | 0 / 78 | 0.0% | :x:
| [ItemGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ItemGenerator.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [Jellyfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jellyfish.md) | 0.0% | 0 / 44 | 0.0% | :x:
| [JellyfishElectric.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JellyfishElectric.md) | 0.0% | 0 / 38 | 0.0% | :x:
| [Jiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jiraira.md) | 89.3353941267388% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
| [JumpBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpBeamer.md) | 0.0% | 0 / 48 | 0.0% | :x:
| [JumpGuarder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpGuarder.md) | 0.0% | 0 / 56 | 0.0% | :x:
| [JumpSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpSpider.md) | 0.0% | 0 / 60 | 0.0% | :x:
| [Kabokuri.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kabokuri.md) | 0.0% | 0 / 51 | 0.0% | :x:
| [KabokuriFire.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFire.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [KabokuriFireHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFireHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [Kameck.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kameck.md) | 0.0% | 0 / 95 | 0.0% | :x:
| [KameckBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeam.md) | 0.0% | 0 / 43 | 0.0% | :x:
| [KameckBeamHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeamHolder.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [KameckFireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckFireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [KameckHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [KameckTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckTurtle.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [Kanina.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kanina.md) | 0.0% | 0 / 99 | 0.0% | :x:
| [Karikari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karikari.md) | 0.0% | 0 / 77 | 0.0% | :x:
| [KarikariDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KarikariDirector.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [Karon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karon.md) | 0.0% | 0 / 62 | 0.0% | :x:
| [Kiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kiraira.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [KirairaChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KirairaChain.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [KoopaJrShip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShip.md) | 0.0% | 0 / 72 | 0.0% | :x:
| [KoopaJrShipCannonMainShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonMainShell.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [KoopaJrShipCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonShell.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [KoteBug.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoteBug.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [Kuribo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kuribo.md) | 0.0% | 0 / 89 | 0.0% | :x:
| [KuriboChief.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboChief.md) | 0.0% | 0 / 51 | 0.0% | :x:
| [KuriboMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboMini.md) | 0.0% | 0 / 61 | 0.0% | :x:
| [MechanicKoopaMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MechanicKoopaMini.md) | 0.0% | 0 / 64 | 0.0% | :x:
| [Meramera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Meramera.md) | 0.0% | 0 / 134 | 0.0% | :x:
| [Metbo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Metbo.md) | 0.0% | 0 / 72 | 0.0% | :x:
| [Mogu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogu.md) | 0.0% | 0 / 50 | 0.0% | :x:
| [Mogucchi.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogucchi.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [MogucchiHill.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiHill.md) | 0.0% | 0 / 47 | 0.0% | :x:
| [MogucchiRefuseTerritory.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiRefuseTerritory.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [MogucchiShooter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiShooter.md) | 0.0% | 0 / 52 | 0.0% | :x:
| [MoguStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MoguStone.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [NokonokoLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/NokonokoLand.md) | 0.0% | 0 / 94 | 0.0% | :x:
| [Onimasu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Onimasu.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [OnimasuJump.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuJump.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [OnimasuPivot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuPivot.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [OtaRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OtaRock.md) | 0.0% | 0 / 43 | 0.0% | :x:
| [PackunPetit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/PackunPetit.md) | 94.65550547327753% | 66 / 67 | 98.50746268656717% | :eight_pointed_black_star:
| [Petari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Petari.md) | 0.0% | 0 / 82 | 0.0% | :x:
| [Poihana.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Poihana.md) | 75.04648568240981% | 88 / 95 | 92.63157894736842% | :eight_pointed_black_star:
| [Pukupuku.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Pukupuku.md) | 0.0% | 0 / 60 | 0.0% | :x:
| [RingBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeam.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [RingBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeamer.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [SamboFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [SamboHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboHead.md) | 0.0% | 0 / 63 | 0.0% | :x:
| [SearchBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SearchBeamer.md) | 0.0% | 0 / 71 | 0.0% | :x:
| [Snakehead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Snakehead.md) | 0.0% | 0 / 34 | 0.0% | :x:
| [SpinHitController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SpinHitController.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [StinkBugBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugBase.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [StinkBugParent.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugParent.md) | 0.0% | 0 / 63 | 0.0% | :x:
| [StinkBugSmall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugSmall.md) | 0.0% | 0 / 62 | 0.0% | :x:
| [StringSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StringSpider.md) | 0.0% | 0 / 74 | 0.0% | :x:
| [Takobo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Takobo.md) | 0.0% | 0 / 52 | 0.0% | :x:
| [TakoHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHei.md) | 0.0% | 0 / 96 | 0.0% | :x:
| [TakoHeiInk.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInk.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [TakoHeiInkHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInkHolder.md) | 0.0% | 0 / 5 | 0.0% | :x:
| [Teresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Teresa.md) | 0.0% | 0 / 119 | 0.0% | :x:
| [TeresaWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TeresaWater.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [TerritoryMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TerritoryMover.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [Unizo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Unizo.md) | 0.0% | 0 / 65 | 0.0% | :x:
| [UnizoLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/UnizoLauncher.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WalkerStateBindStarPointer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBindStarPointer.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [WalkerStateBlowDamage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBlowDamage.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WalkerStateChase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateChase.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [WalkerStateFindPlayer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFindPlayer.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [WalkerStateFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFunction.md) | 0.0% | 0 / 2 | 0.0% | :x:
| [WalkerStateParam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateParam.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [WalkerStateRunaway.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateRunaway.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [WalkerStateStagger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateStagger.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [WalkerStateWander.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateWander.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [WaterBazooka.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazooka.md) | 0.0% | 0 / 93 | 0.0% | :x:
| [WaterBazookaCapsule.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazookaCapsule.md) | 0.0% | 0 / 18 | 0.0% | :x:

View File

@ -1,36 +1,36 @@
# BallBeamer.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 22 / 25 Completed -- (88.0%)
# BallBeamer.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__10BallBeamerFPCc` | :white_check_mark: |
| `makeArchiveList__10BallBeamerFP27NameObjArchiveListCollectorRC12JMapInfoIter` | :white_check_mark: |
| `init__10BallBeamerFRC12JMapInfoIter` | :x: |
| `syncSwitchOnA__10BallBeamerFv` | :white_check_mark: |
| `syncSwitchOffA__10BallBeamerFv` | :white_check_mark: |
| `syncSwitchOnB__10BallBeamerFv` | :x: |
| `setupAttack__10BallBeamerFv` | :white_check_mark: |
| `tryAttack__10BallBeamerFv` | :x: |
| `exeWait__10BallBeamerFv` | :white_check_mark: |
| `exeAttack__10BallBeamerFv` | :white_check_mark: |
| `exeInter__10BallBeamerFv` | :white_check_mark: |
| `attackSensor__10BallBeamerFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__sinit_\BallBeamer_cpp` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer17BallBeamerNrvWaitFv` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer19BallBeamerNrvAttackFv` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer18BallBeamerNrvInterFv` | :white_check_mark: |
| `execute__Q213NrvBallBeamer18BallBeamerNrvInterCFP5Spine` | :white_check_mark: |
| `execute__Q213NrvBallBeamer19BallBeamerNrvAttackCFP5Spine` | :white_check_mark: |
| `execute__Q213NrvBallBeamer17BallBeamerNrvWaitCFP5Spine` | :white_check_mark: |
| `Functor<10BallBeamer>__2MRFP10BallBeamerM10BallBeamerFPCvPv_v_Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>` | :white_check_mark: |
| `__cl__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFv` | :white_check_mark: |
| `clone__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFP7JKRHeap` | :white_check_mark: |
| `__dt__10BallBeamerFv` | :white_check_mark: |
# BallBeamer.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 22 / 25 Completed -- (88.0%)
# BallBeamer.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__10BallBeamerFPCc` | :white_check_mark: |
| `makeArchiveList__10BallBeamerFP27NameObjArchiveListCollectorRC12JMapInfoIter` | :white_check_mark: |
| `init__10BallBeamerFRC12JMapInfoIter` | :x: |
| `syncSwitchOnA__10BallBeamerFv` | :white_check_mark: |
| `syncSwitchOffA__10BallBeamerFv` | :white_check_mark: |
| `syncSwitchOnB__10BallBeamerFv` | :x: |
| `setupAttack__10BallBeamerFv` | :white_check_mark: |
| `tryAttack__10BallBeamerFv` | :x: |
| `exeWait__10BallBeamerFv` | :white_check_mark: |
| `exeAttack__10BallBeamerFv` | :white_check_mark: |
| `exeInter__10BallBeamerFv` | :white_check_mark: |
| `attackSensor__10BallBeamerFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__sinit_\BallBeamer_cpp` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer17BallBeamerNrvWaitFv` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer19BallBeamerNrvAttackFv` | :white_check_mark: |
| `__ct__Q213NrvBallBeamer18BallBeamerNrvInterFv` | :white_check_mark: |
| `execute__Q213NrvBallBeamer18BallBeamerNrvInterCFP5Spine` | :white_check_mark: |
| `execute__Q213NrvBallBeamer19BallBeamerNrvAttackCFP5Spine` | :white_check_mark: |
| `execute__Q213NrvBallBeamer17BallBeamerNrvWaitCFP5Spine` | :white_check_mark: |
| `Functor<10BallBeamer>__2MRFP10BallBeamerM10BallBeamerFPCvPv_v_Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>` | :white_check_mark: |
| `__cl__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFv` | :white_check_mark: |
| `clone__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFP7JKRHeap` | :white_check_mark: |
| `__dt__10BallBeamerFv` | :white_check_mark: |

View File

@ -1,53 +1,53 @@
# Birikyu.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 40 / 42 Completed -- (95.23809523809523%)
# Birikyu.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__7BirikyuFPCc` | :white_check_mark: |
| `init__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initAfterPlacement__7BirikyuFv` | :x: |
| `appear__7BirikyuFv` | :white_check_mark: |
| `getHitRadius__7BirikyuCFv` | :white_check_mark: |
| `getCenterJointName__7BirikyuCFv` | :white_check_mark: |
| `attackSensor__7BirikyuFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `startClipped__7BirikyuFv` | :white_check_mark: |
| `endClipped__7BirikyuFv` | :white_check_mark: |
| `initFromJmpArgs__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initRail__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initCollision__7BirikyuFv` | :white_check_mark: |
| `initShadow__7BirikyuFv` | :white_check_mark: |
| `tryStopPointing__7BirikyuFv` | :white_check_mark: |
| `goMove__7BirikyuFv` | :white_check_mark: |
| `exeMove__7BirikyuFv` | :white_check_mark: |
| `exeMoveCircle__7BirikyuFv` | :x: |
| `exeWaitAtEdge__7BirikyuFv` | :white_check_mark: |
| `exeAttack__7BirikyuFv` | :white_check_mark: |
| `exeStopPointing__7BirikyuFv` | :white_check_mark: |
| `__ct__15BirikyuWithFaceFPCc` | :white_check_mark: |
| `__dt__7BirikyuFv` | :white_check_mark: |
| `init__15BirikyuWithFaceFRC12JMapInfoIter` | :white_check_mark: |
| `calcAndSetBaseMtx__15BirikyuWithFaceFv` | :white_check_mark: |
| `getHitRadius__15BirikyuWithFaceCFv` | :white_check_mark: |
| `getCenterJointName__15BirikyuWithFaceCFv` | :white_check_mark: |
| `__dt__15BirikyuWithFaceFv` | :white_check_mark: |
| `__sinit_\Birikyu_cpp` | :white_check_mark: |
| `__ct__Q210NrvBirikyu12HostTypeMoveFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeMoveCircleFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu14HostTypeAttackFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeAttackWaitFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeWaitAtEdgeFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu20HostTypeStopPointingFv` | :white_check_mark: |
| `execute__Q210NrvBirikyu20HostTypeStopPointingCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeWaitAtEdgeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeAttackWaitCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu14HostTypeAttackCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeMoveCircleCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu12HostTypeMoveCFP5Spine` | :white_check_mark: |
# Birikyu.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 40 / 42 Completed -- (95.23809523809523%)
# Birikyu.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__7BirikyuFPCc` | :white_check_mark: |
| `init__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initAfterPlacement__7BirikyuFv` | :x: |
| `appear__7BirikyuFv` | :white_check_mark: |
| `getHitRadius__7BirikyuCFv` | :white_check_mark: |
| `getCenterJointName__7BirikyuCFv` | :white_check_mark: |
| `attackSensor__7BirikyuFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `startClipped__7BirikyuFv` | :white_check_mark: |
| `endClipped__7BirikyuFv` | :white_check_mark: |
| `initFromJmpArgs__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initRail__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
| `initCollision__7BirikyuFv` | :white_check_mark: |
| `initShadow__7BirikyuFv` | :white_check_mark: |
| `tryStopPointing__7BirikyuFv` | :white_check_mark: |
| `goMove__7BirikyuFv` | :white_check_mark: |
| `exeMove__7BirikyuFv` | :white_check_mark: |
| `exeMoveCircle__7BirikyuFv` | :x: |
| `exeWaitAtEdge__7BirikyuFv` | :white_check_mark: |
| `exeAttack__7BirikyuFv` | :white_check_mark: |
| `exeStopPointing__7BirikyuFv` | :white_check_mark: |
| `__ct__15BirikyuWithFaceFPCc` | :white_check_mark: |
| `__dt__7BirikyuFv` | :white_check_mark: |
| `init__15BirikyuWithFaceFRC12JMapInfoIter` | :white_check_mark: |
| `calcAndSetBaseMtx__15BirikyuWithFaceFv` | :white_check_mark: |
| `getHitRadius__15BirikyuWithFaceCFv` | :white_check_mark: |
| `getCenterJointName__15BirikyuWithFaceCFv` | :white_check_mark: |
| `__dt__15BirikyuWithFaceFv` | :white_check_mark: |
| `__sinit_\Birikyu_cpp` | :white_check_mark: |
| `__ct__Q210NrvBirikyu12HostTypeMoveFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeMoveCircleFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu14HostTypeAttackFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeAttackWaitFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu18HostTypeWaitAtEdgeFv` | :white_check_mark: |
| `__ct__Q210NrvBirikyu20HostTypeStopPointingFv` | :white_check_mark: |
| `execute__Q210NrvBirikyu20HostTypeStopPointingCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeWaitAtEdgeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeAttackWaitCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu14HostTypeAttackCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu18HostTypeMoveCircleCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvBirikyu12HostTypeMoveCFP5Spine` | :white_check_mark: |

View File

@ -1,38 +1,38 @@
# Jiraira.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 26 / 27 Completed -- (96.29629629629629%)
# Jiraira.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__7JirairaFPCc` | :white_check_mark: |
| `init__7JirairaFRC12JMapInfoIter` | :white_check_mark: |
| `appear__7JirairaFv` | :white_check_mark: |
| `kill__7JirairaFv` | :white_check_mark: |
| `control__7JirairaFv` | :white_check_mark: |
| `exeWait__7JirairaFv` | :white_check_mark: |
| `exeStepped__7JirairaFv` | :white_check_mark: |
| `exeExplode__7JirairaFv` | :white_check_mark: |
| `exePreRecover__7JirairaFv` | :white_check_mark: |
| `exeRecover__7JirairaFv` | :white_check_mark: |
| `attackSensor__7JirairaFP9HitSensorP9HitSensor` | :x: |
| `receiveMsgPlayerAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgEnemyAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__7JirairaFv` | :white_check_mark: |
| `__sinit_\Jiraira_cpp` | :white_check_mark: |
| `__ct__Q210NrvJiraira15HostTypeNrvWaitFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvSteppedFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira21HostTypeNrvPreRecoverFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvRecoverFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira25HostTypeNrvSteppedExplodeFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvExplodeFv` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvExplodeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira25HostTypeNrvSteppedExplodeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvRecoverCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira21HostTypeNrvPreRecoverCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvSteppedCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira15HostTypeNrvWaitCFP5Spine` | :white_check_mark: |
# Jiraira.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 26 / 27 Completed -- (96.29629629629629%)
# Jiraira.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__7JirairaFPCc` | :white_check_mark: |
| `init__7JirairaFRC12JMapInfoIter` | :white_check_mark: |
| `appear__7JirairaFv` | :white_check_mark: |
| `kill__7JirairaFv` | :white_check_mark: |
| `control__7JirairaFv` | :white_check_mark: |
| `exeWait__7JirairaFv` | :white_check_mark: |
| `exeStepped__7JirairaFv` | :white_check_mark: |
| `exeExplode__7JirairaFv` | :white_check_mark: |
| `exePreRecover__7JirairaFv` | :white_check_mark: |
| `exeRecover__7JirairaFv` | :white_check_mark: |
| `attackSensor__7JirairaFP9HitSensorP9HitSensor` | :x: |
| `receiveMsgPlayerAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgEnemyAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__7JirairaFv` | :white_check_mark: |
| `__sinit_\Jiraira_cpp` | :white_check_mark: |
| `__ct__Q210NrvJiraira15HostTypeNrvWaitFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvSteppedFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira21HostTypeNrvPreRecoverFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvRecoverFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira25HostTypeNrvSteppedExplodeFv` | :white_check_mark: |
| `__ct__Q210NrvJiraira18HostTypeNrvExplodeFv` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvExplodeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira25HostTypeNrvSteppedExplodeCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvRecoverCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira21HostTypeNrvPreRecoverCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira18HostTypeNrvSteppedCFP5Spine` | :white_check_mark: |
| `execute__Q210NrvJiraira15HostTypeNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -8,17 +8,17 @@
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [ConeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ConeGravity.md) | 19.306930693069308% | 5 / 6 | 83.33333333333334% | :eight_pointed_black_star:
| [ConeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ConeGravity.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
| [CubeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/CubeGravity.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [DiskGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskGravity.md) | 33.33333333333333% | 9 / 11 | 81.81818181818183% | :eight_pointed_black_star:
| [DiskTorusGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskTorusGravity.md) | 20.99644128113879% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
| [DiskGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskGravity.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [DiskTorusGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskTorusGravity.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [GlobalGravityObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GlobalGravityObj.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
| [GraviryFollower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GraviryFollower.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [GravityCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GravityCreator.md) | 100.0% | 42 / 42 | 100.0% | :white_check_mark:
| [GravityInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GravityInfo.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
| [ParallelGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ParallelGravity.md) | 80.14354066985646% | 11 / 13 | 84.61538461538461% | :eight_pointed_black_star:
| [ParallelGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ParallelGravity.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [PlanetGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PlanetGravity.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [PlanetGravityManager.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PlanetGravityManager.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
| [PointGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PointGravity.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [SegmentGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/SegmentGravity.md) | 25.115207373271893% | 5 / 8 | 62.5% | :eight_pointed_black_star:
| [WireGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/WireGravity.md) | 33.5483870967742% | 3 / 4 | 75.0% | :eight_pointed_black_star:
| [SegmentGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/SegmentGravity.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [WireGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/WireGravity.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:

View File

@ -5,7 +5,7 @@
| :white_check_mark: | Function is completed.
# 5 / 6 Completed -- (83.33333333333334%)
# 6 / 6 Completed -- (100.0%)
# ConeGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
@ -14,4 +14,4 @@
| `setEnableBottom__11ConeGravityFb` | :white_check_mark: |
| `setTopCutRate__11ConeGravityFf` | :white_check_mark: |
| `updateMtx__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
| `calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |

View File

@ -5,7 +5,7 @@
| :white_check_mark: | Function is completed.
# 9 / 11 Completed -- (81.81818181818183%)
# 11 / 11 Completed -- (100.0%)
# DiskGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
@ -17,6 +17,6 @@
| `setValidDegee__11DiskGravityFf` | :white_check_mark: |
| `setBothSide__11DiskGravityFb` | :white_check_mark: |
| `setEnableEdgeGravity__11DiskGravityFb` | :white_check_mark: |
| `calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
| `calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `updateMtx__11DiskGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `updateLocalParam__11DiskGravityFv` | :x: |
| `updateLocalParam__11DiskGravityFv` | :white_check_mark: |

View File

@ -5,7 +5,7 @@
| :white_check_mark: | Function is completed.
# 7 / 9 Completed -- (77.77777777777779%)
# 9 / 9 Completed -- (100.0%)
# DiskTorusGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
@ -16,5 +16,5 @@
| `setDiskRadius__16DiskTorusGravityFf` | :white_check_mark: |
| `setEdgeType__16DiskTorusGravityFl` | :white_check_mark: |
| `setBothSide__16DiskTorusGravityFb` | :white_check_mark: |
| `updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
| `calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
| `updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |

View File

@ -5,15 +5,15 @@
| :white_check_mark: | Function is completed.
# 11 / 13 Completed -- (84.61538461538461%)
# 13 / 13 Completed -- (100.0%)
# ParallelGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__15ParallelGravityFv` | :white_check_mark: |
| `calcOwnGravityVector__15ParallelGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
| `updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `setPlane__15ParallelGravityFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
| `setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `setRangeCylinder__15ParallelGravityFff` | :white_check_mark: |
| `setRangeType__15ParallelGravityFQ215ParallelGravity10RANGE_TYPE` | :white_check_mark: |
| `setBaseDistance__15ParallelGravityFf` | :white_check_mark: |

View File

@ -5,15 +5,15 @@
| :white_check_mark: | Function is completed.
# 5 / 8 Completed -- (62.5%)
# 8 / 8 Completed -- (100.0%)
# SegmentGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__14SegmentGravityFv` | :white_check_mark: |
| `calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
| `updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
| `calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
| `setGravityPoint__14SegmentGravityFUlRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `setSideVector__14SegmentGravityFRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `setValidSideDegree__14SegmentGravityFf` | :white_check_mark: |
| `setEdgeValid__14SegmentGravityFUlb` | :white_check_mark: |
| `updateLocalParam__14SegmentGravityFv` | :x: |
| `updateLocalParam__14SegmentGravityFv` | :white_check_mark: |

View File

@ -5,11 +5,11 @@
| :white_check_mark: | Function is completed.
# 3 / 4 Completed -- (75.0%)
# 4 / 4 Completed -- (100.0%)
# WireGravity.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__11WireGravityFv` | :white_check_mark: |
| `setPointListSize__11WireGravityFUl` | :white_check_mark: |
| `addPoint__11WireGravityFRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
| `calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
| `calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |

View File

@ -1,327 +1,327 @@
# MapObj
| Symbol | Meaning
| ------------- | -------------
| :x: | Object has not yet been started.
| :eight_pointed_black_star: | Object is in progress.
| :white_check_mark: | Object is completed.
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [AirBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubble.md) | 66.18122977346277% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
| [AirBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleGenerator.md) | 72.68722466960352% | 10 / 11 | 90.9090909090909% | :eight_pointed_black_star:
| [AirBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleHolder.md) | 44.05594405594406% | 4 / 7 | 57.14285714285714% | :eight_pointed_black_star:
| [AnmModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AnmModelObj.md) | 100.0% | 47 / 47 | 100.0% | :white_check_mark:
| [ArrowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitch.md) | 83.86727688787185% | 25 / 27 | 92.5925925925926% | :eight_pointed_black_star:
| [ArrowSwitchMulti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMulti.md) | 82.25255972696246% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [ArrowSwitchMultiHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMultiHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [AssemblyBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AssemblyBlock.md) | 87.1111111111111% | 21 / 22 | 95.45454545454545% | :eight_pointed_black_star:
| [AstroCore.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCore.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [AstroCountDownPlate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCountDownPlate.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [AstroDome.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDome.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [AstroDomeAsteroid.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeAsteroid.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [AstroDomeBlueStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeBlueStar.md) | 0.0% | 0 / 55 | 0.0% | :x:
| [AstroDomeCameraController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeCameraController.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [AstroDomeComet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeComet.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [AstroDomeDemoAstroGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeDemoAstroGalaxy.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [AstroDomeGalaxySelector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeGalaxySelector.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [AstroDomeOrbit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeOrbit.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [AstroDomeSky.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeSky.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [AstroMapBoard.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapBoard.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [AstroMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObj.md) | 4.513540621865597% | 2 / 40 | 5.0% | :eight_pointed_black_star:
| [AstroMapObjFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObjFunction.md) | 59.08419497784343% | 10 / 14 | 71.42857142857143% | :eight_pointed_black_star:
| [AstroOverlookObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroOverlookObj.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [BallOpener.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallOpener.md) | 56.747404844290664% | 15 / 17 | 88.23529411764706% | :eight_pointed_black_star:
| [BallRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallRail.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
| [Banekiti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Banekiti.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
| [BattleShipElevator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BattleShipElevator.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [BeamGoRoundPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeamGoRoundPlanet.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [BeeFlowerHover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeeFlowerHover.md) | 82.1311475409836% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [BenefitItemInvincible.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemInvincible.md) | 62.95454545454545% | 10 / 12 | 83.33333333333334% | :eight_pointed_black_star:
| [BenefitItemLifeUp.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemLifeUp.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [BenefitItemObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemObj.md) | 98.54368932038835% | 34 / 35 | 97.14285714285714% | :eight_pointed_black_star:
| [BigBubbleDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleDrawer.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [BigBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleGenerator.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [BigBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [BigBubbleMoveLimitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleMoveLimitter.md) | 13.903743315508022% | 1 / 7 | 14.285714285714285% | :eight_pointed_black_star:
| [BigFan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFan.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
| [BigFanHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFanHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [BlackHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlackHole.md) | 66.66666666666666% | 18 / 22 | 81.81818181818183% | :eight_pointed_black_star:
| [BlueChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueChip.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [BlueStarCupsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueStarCupsulePlanet.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [BreakableCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BreakableCage.md) | 68.64754098360656% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
| [BrightObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BrightObj.md) | 10.066127847171199% | 4 / 42 | 9.523809523809524% | :eight_pointed_black_star:
| [BumpAppearPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BumpAppearPlanet.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [Candlestand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Candlestand.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [CannonFortressBreakStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CannonFortressBreakStep.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [CapsuleCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CapsuleCage.md) | 100.0% | 23 / 23 | 100.0% | :white_check_mark:
| [ChipBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipBase.md) | 79.12087912087912% | 36 / 39 | 92.3076923076923% | :eight_pointed_black_star:
| [ChipCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipCounter.md) | 28.364688856729376% | 4 / 30 | 13.333333333333334% | :eight_pointed_black_star:
| [ChipGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipGroup.md) | 24.175824175824175% | 9 / 17 | 52.94117647058824% | :eight_pointed_black_star:
| [ChipHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ChooChooTrain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChooChooTrain.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [CircleCoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CircleCoinGroup.md) | 48.616600790513836% | 7 / 8 | 87.5% | :eight_pointed_black_star:
| [ClipArea.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipArea.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [ClipAreaDrop.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDrop.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [ClipAreaDropHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [ClipAreaDropLaser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropLaser.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [ClipAreaHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [ClipAreaMovable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaMovable.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [ClipAreaShape.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaShape.md) | 48.44559585492228% | 7 / 13 | 53.84615384615385% | :eight_pointed_black_star:
| [ClipFieldFillDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldFillDraw.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [ClipFieldMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldMapParts.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
| [ClipFieldSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [CocoNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CocoNut.md) | 82.36% | 55 / 58 | 94.82758620689656% | :eight_pointed_black_star:
| [CoconutTree.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTree.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [CoconutTreeLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTreeLeaf.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [Coin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Coin.md) | 100.0% | 65 / 65 | 100.0% | :white_check_mark:
| [CoinBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinBox.md) | 62.745098039215684% | 9 / 10 | 90.0% | :eight_pointed_black_star:
| [CoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinGroup.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [CoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinHolder.md) | 41.98606271777003% | 11 / 19 | 57.89473684210527% | :eight_pointed_black_star:
| [CoinReplica.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinReplica.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [CoinRotater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinRotater.md) | 57.534246575342465% | 6 / 7 | 85.71428571428571% | :eight_pointed_black_star:
| [CoinSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinSpot.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [CollapsePlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollapsePlane.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [CollectCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollectCounter.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [CollisionBlocker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollisionBlocker.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [CrystalCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCage.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [CrystalCageMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCageMoving.md) | 100.0% | 36 / 36 | 100.0% | :white_check_mark:
| [CrystalSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalSwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [CutBushModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CutBushModelObj.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
| [DashRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DashRing.md) | 44.952681388012614% | 6 / 9 | 66.66666666666666% | :eight_pointed_black_star:
| [DeadLeaves.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DeadLeaves.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [DesertLandMoveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertLandMoveSwitch.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [DesertMovingLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertMovingLand.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [DragonHeadFlower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DragonHeadFlower.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [DriftWood.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DriftWood.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [DummyDisplayModel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DummyDisplayModel.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [DynamicCollisionObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DynamicCollisionObj.md) | 14.285714285714285% | 3 / 7 | 42.857142857142854% | :eight_pointed_black_star:
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 89.9209486166008% | 49 / 50 | 98.0% | :eight_pointed_black_star:
| [ElectricBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricBall.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [ElectricRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRail.md) | 0.0% | 0 / 48 | 0.0% | :x:
| [ElectricRailHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ElectricRailMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailMoving.md) | 0.0% | 0 / 44 | 0.0% | :x:
| [ExterminationChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ExterminationChecker.md) | 92.11822660098522% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
| [FallDownBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallDownBridge.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [FallingSmallRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallingSmallRock.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [FallOutFieldDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallOutFieldDraw.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [FireBar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FireBar.md) | 71.49877149877149% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
| [FirePressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressure.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [FirePressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBullet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [FirePressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [FirePressureRadiate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureRadiate.md) | 86.71399594320486% | 35 / 37 | 94.5945945945946% | :eight_pointed_black_star:
| [FlameGun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlameGun.md) | 78.62838915470495% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
| [FlexibleSphere.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlexibleSphere.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [FlipPanel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlipPanel.md) | 100.0% | 43 / 43 | 100.0% | :white_check_mark:
| [Fountain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Fountain.md) | 38.864628820960704% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
| [FountainBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FountainBig.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [GCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCapture.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [GCaptureRibbon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureRibbon.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [GCaptureTarget.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureTarget.md) | 0.0% | 0 / 41 | 0.0% | :x:
| [GravityLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLight.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [GravityLightRoad.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLightRoad.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [GreenCaterpillarBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GreenCaterpillarBig.md) | 100.0% | 31 / 31 | 100.0% | :white_check_mark:
| [HatchWaterPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HatchWaterPlanet.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [HeavensDoorDemoObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HeavensDoorDemoObj.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [HipDropMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropMoveObj.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [HipDropRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropRock.md) | 86.6822429906542% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
| [HipDropSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [HipDropTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropTimerSwitch.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [HitWallTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HitWallTimerSwitch.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [IceStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceStep.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [IceVolcanoUpDownPlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceVolcanoUpDownPlane.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [InvisiblePolygonObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObj.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [InvisiblePolygonObjGCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObjGCapture.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [IronCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IronCannonShell.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [ItemAppearStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemAppearStone.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [ItemBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBlock.md) | 74.88479262672811% | 23 / 26 | 88.46153846153845% | :eight_pointed_black_star:
| [ItemBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBubble.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [JetTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JetTurtle.md) | 0.0% | 0 / 55 | 0.0% | :x:
| [JumpHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpHole.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [JumpStand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpStand.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [KeySwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KeySwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [KillerGunnerSingle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KillerGunnerSingle.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [LargeChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChain.md) | 68.20276497695853% | 13 / 15 | 86.66666666666667% | :eight_pointed_black_star:
| [LargeChainParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChainParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [LavaBallRisingPlanetLava.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBallRisingPlanetLava.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [LavaBreakColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBreakColumn.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [LavaFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaFloater.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [LavaGalaxyParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGalaxyParts.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [LavaGeyser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGeyser.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [LavaHomeSeesaw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesaw.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [LavaHomeVolcanoFlow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeVolcanoFlow.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [LavaJamboSunPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaJamboSunPlanet.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [LavaProminence.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminence.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [LavaProminenceTriple.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminenceTriple.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [LavaSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaSteam.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [LavaStrangeRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaStrangeRock.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [LotusLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LotusLeaf.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [MagicBell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MagicBell.md) | 40.23494860499266% | 11 / 15 | 73.33333333333333% | :eight_pointed_black_star:
| [ManholeCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ManholeCover.md) | 20.96069868995633% | 1 / 13 | 7.6923076923076925% | :eight_pointed_black_star:
| [MapObjActor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActor.md) | 61.95652173913043% | 58 / 59 | 98.30508474576271% | :eight_pointed_black_star:
| [MapObjActorInitInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActorInitInfo.md) | 22.48062015503876% | 11 / 37 | 29.72972972972973% | :eight_pointed_black_star:
| [MapObjConnector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjConnector.md) | 32.25806451612903% | 4 / 6 | 66.66666666666666% | :eight_pointed_black_star:
| [MarblePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarblePlanet.md) | 100.0% | 35 / 35 | 100.0% | :white_check_mark:
| [MarioLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncher.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [MarioLauncherAttractor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncherAttractor.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
| [MechaKoopaPartsArm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsArm.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
| [MechaKoopaPartsHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsHead.md) | 100.0% | 25 / 25 | 100.0% | :white_check_mark:
| [MercatorFixParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorFixParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [MercatorRailMoveParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRailMoveParts.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [MercatorRotateParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRotateParts.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [MeteoContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteoContainer.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [MeteorStrike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrike.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [MeteorStrikeLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrikeLauncher.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [MiniatureGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxy.md) | 0.0% | 0 / 40 | 0.0% | :x:
| [MiniatureGalaxyHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxyHolder.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [MorphItemObjNeo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MorphItemObjNeo.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [NeedlePlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NeedlePlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [NormalMapBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapBase.md) | 0.0% | 0 / 39 | 0.0% | :x:
| [NormalMapTestObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapTestObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [Note.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Note.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [NoteFairy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NoteFairy.md) | 100.0% | 39 / 39 | 100.0% | :white_check_mark:
| [OceanFloaterLandParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanFloaterLandParts.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [OceanSmallTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanSmallTurtle.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [OceanWaveFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanWaveFloater.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [PalmIsland.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PalmIsland.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [PeachCastleGardenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PeachCastleGardenPlanet.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [PhantomShipBoxFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBoxFloater.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [PhantomShipBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBridge.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [PhantomShipHandle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipHandle.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [PhantomTorch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomTorch.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [PicketSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PicketSwitch.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [PlantGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantGroup.md) | 0.0% | 0 / 38 | 0.0% | :x:
| [PlantPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantPoint.md) | 0.0% | 0 / 2 | 0.0% | :x:
| [PlantRailInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantRailInfo.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [PomponPlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PomponPlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [PowerStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStar.md) | 66.49572649572649% | 58 / 65 | 89.23076923076924% | :eight_pointed_black_star:
| [PowerStarAppearPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarAppearPoint.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [PowerStarHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarHolder.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [PressureBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PressureBase.md) | 81.69398907103826% | 44 / 48 | 91.66666666666666% | :eight_pointed_black_star:
| [PrizeRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PrizeRing.md) | 78.57142857142857% | 28 / 31 | 90.32258064516128% | :eight_pointed_black_star:
| [PTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PTimerSwitch.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [PunchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchBox.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [PunchingKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchingKinoko.md) | 100.0% | 59 / 59 | 100.0% | :white_check_mark:
| [PurpleCoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [PurpleCoinStarter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinStarter.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [QuarterRollGravityRoomArrow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuarterRollGravityRoomArrow.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [QuestionBoxGalleryObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionBoxGalleryObj.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [QuestionCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionCoin.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [RailBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailBlock.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [RailCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailCoin.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [RailMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailMoveObj.md) | 100.0% | 53 / 53 | 100.0% | :white_check_mark:
| [RainCloud.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RainCloud.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [ReverseGravityRoomPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ReverseGravityRoomPlanet.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [RevolvingWay.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RevolvingWay.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [Rock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Rock.md) | 32.54091971940764% | 32 / 51 | 62.745098039215684% | :eight_pointed_black_star:
| [RockCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RockCreator.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [RosettaChair.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaChair.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [RosettaPictureBook.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaPictureBook.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [RotateMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RotateMoveObj.md) | 89.16666666666667% | 17 / 20 | 85.0% | :eight_pointed_black_star:
| [SandCapsuleInsidePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsuleInsidePlanet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [SandCapsulePressGround.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsulePressGround.md) | 0.0% | 0 / 36 | 0.0% | :x:
| [Sandstorm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sandstorm.md) | 0.0% | 0 / 46 | 0.0% | :x:
| [SandUpDownEffectObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownEffectObj.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [SandUpDownTriRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownTriRock.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [ScrewSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitch.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [ScrewSwitchReverse.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitchReverse.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [SeaBottomTriplePropeller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeaBottomTriplePropeller.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [SeesawMoveNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeesawMoveNut.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [Shellfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Shellfish.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [ShockWaveGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShockWaveGenerator.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ShootingStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShootingStar.md) | 66.8488160291439% | 14 / 17 | 82.35294117647058% | :eight_pointed_black_star:
| [SideSpikeMoveStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SideSpikeMoveStep.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [SimpleBreakableObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleBreakableObj.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [SimpleClipPartsObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleClipPartsObj.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [SimpleFloaterObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleFloaterObj.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SimpleMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleMapObj.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
| [SimpleNormalMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleNormalMapObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [SimpleTimerObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleTimerObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [SmallStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SmallStone.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [SnowCapsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowCapsulePlanet.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [SnowFloor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloor.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [SnowFloorTile.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloorTile.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [SnowMan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowMan.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [SnowplowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowplowSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [SoundEmitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SoundEmitter.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [SpaceMine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceMine.md) | 92.7927927927928% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
| [SpaceShipStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceShipStep.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [SphereRailDash.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SphereRailDash.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [SpiderCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderCoin.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [SpiderMapBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderMapBlock.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [SpiderThread.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThread.md) | 0.0% | 0 / 33 | 0.0% | :x:
| [SpiderThreadHangInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadHangInfo.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SpiderThreadMainPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadMainPoint.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [SpiderThreadPart.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPart.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [SpiderThreadPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPoint.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [SpiderThreadRadialLine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadRadialLine.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [SpiderThreadWindCtrl.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadWindCtrl.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriver.md) | 76.13089509143407% | 49 / 59 | 83.05084745762711% | :eight_pointed_black_star:
| [SpinDriverCamera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverCamera.md) | 73.97260273972603% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
| [SpinDriverOperateRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverOperateRing.md) | 45.5535390199637% | 14 / 19 | 73.68421052631578% | :eight_pointed_black_star:
| [SpinDriverPathDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverPathDrawer.md) | 38.91752577319588% | 24 / 28 | 85.71428571428571% | :eight_pointed_black_star:
| [SpinDriverShootPath.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverShootPath.md) | 49.889135254988915% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
| [SpinDriverUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverUtil.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [SpinLeverSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinLeverSwitch.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [SpinningBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinningBox.md) | 0.0% | 0 / 35 | 0.0% | :x:
| [SpringJetWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringJetWater.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [SpringWaterFloaterSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringWaterFloaterSpot.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [StageEffectDataTable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StageEffectDataTable.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [StarPiece.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPiece.md) | 0.0% | 0 / 86 | 0.0% | :x:
| [StarPieceDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceDirector.md) | 0.0% | 0 / 45 | 0.0% | :x:
| [StarPieceFollowGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceFollowGroup.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [StarPieceGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceGroup.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [StarPieceMother.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceMother.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [StarPieceSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceSpot.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SubmarineSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineSteam.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [SubmarineVolcanoBigColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineVolcanoBigColumn.md) | 87.95180722891565% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
| [Sun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sun.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [SuperSpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SuperSpinDriver.md) | 28.548644338118024% | 49 / 94 | 52.12765957446809% | :eight_pointed_black_star:
| [SurprisedGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SurprisedGalaxy.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [Swinger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Swinger.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [SwingLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwingLight.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [SwitchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwitchBox.md) | 100.0% | 17 / 17 | 100.0% | :white_check_mark:
| [TimeAppearObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimeAppearObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [TimerMoveWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimerMoveWall.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [TrampleStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TrampleStar.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [TransparentWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TransparentWall.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [TreasureBoxCracked.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureBoxCracked.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [TreasureSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureSpot.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:
| [Tsukidashikun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Tsukidashikun.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [TypicalDoor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TypicalDoor.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [UFOBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOBase.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [UFOKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOKinoko.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [ValveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ValveSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [WarpPod.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WarpPod.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [WatchTowerRotateStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WatchTowerRotateStep.md) | 85.85131894484412% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
| [WaterfallCaveCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterfallCaveCover.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WaterLeakPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterLeakPipe.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [WaterPressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressure.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [WaterPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBullet.md) | 91.28329297820824% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [WaterPressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [WaveFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaveFloatingForce.md) | 0.0% | 0 / 5 | 0.0% | :x:
| [WhirlPool.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WhirlPool.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WoodBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WoodBox.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [WormEatenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WormEatenPlanet.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [YellowChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/YellowChip.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
| [MapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapParts.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [GeneralMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GeneralMapParts.md) | 80.0925925925926% | 29 / 32 | 90.625% | :eight_pointed_black_star:
| [FloaterFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForce.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [FloaterFloatingForceTypeNormal.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeNormal.md) | 61.79540709812108% | 18 / 20 | 90.0% | :eight_pointed_black_star:
| [FloaterFloatingForceTypeSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeSpring.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [FloaterFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFunction.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [LavaHomeSeesawRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesawRotator.md) | 0.0% | 0 / 35 | 0.0% | :x:
| [MapPartsAppearController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsAppearController.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [MapPartsBreaker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsBreaker.md) | 93.28859060402685% | 9 / 10 | 90.0% | :eight_pointed_black_star:
| [MapPartsFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFloatingForce.md) | 66.71270718232044% | 23 / 27 | 85.18518518518519% | :eight_pointed_black_star:
| [MapPartsFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFunction.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [MapPartsRailGuideDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideDrawer.md) | 28.647214854111407% | 4 / 19 | 21.052631578947366% | :eight_pointed_black_star:
| [MapPartsRailGuideHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideHolder.md) | 17.391304347826086% | 2 / 5 | 40.0% | :eight_pointed_black_star:
| [MapPartsRailGuidePoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuidePoint.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [MapPartsRailMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailMover.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [MapPartsRailPointPassChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPointPassChecker.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [MapPartsRailPosture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPosture.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [MapPartsRailRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailRotator.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [MapPartsRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRotator.md) | 37.61904761904762% | 24 / 33 | 72.72727272727273% | :eight_pointed_black_star:
| [MapPartsSeesaw1AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw1AxisRotator.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [MapPartsSeesaw2AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw2AxisRotator.md) | 0.0% | 0 / 23 | 0.0% | :x:
# MapObj
| Symbol | Meaning
| ------------- | -------------
| :x: | Object has not yet been started.
| :eight_pointed_black_star: | Object is in progress.
| :white_check_mark: | Object is completed.
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
| ------------- | ------------- | ------------- | ------------- | -------------
| [AirBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubble.md) | 66.18122977346277% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
| [AirBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleGenerator.md) | 72.68722466960352% | 10 / 11 | 90.9090909090909% | :eight_pointed_black_star:
| [AirBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleHolder.md) | 44.05594405594406% | 4 / 7 | 57.14285714285714% | :eight_pointed_black_star:
| [AnmModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AnmModelObj.md) | 100.0% | 47 / 47 | 100.0% | :white_check_mark:
| [ArrowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitch.md) | 83.86727688787185% | 25 / 27 | 92.5925925925926% | :eight_pointed_black_star:
| [ArrowSwitchMulti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMulti.md) | 82.25255972696246% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [ArrowSwitchMultiHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMultiHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [AssemblyBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AssemblyBlock.md) | 87.1111111111111% | 21 / 22 | 95.45454545454545% | :eight_pointed_black_star:
| [AstroCore.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCore.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [AstroCountDownPlate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCountDownPlate.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [AstroDome.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDome.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [AstroDomeAsteroid.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeAsteroid.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [AstroDomeBlueStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeBlueStar.md) | 0.0% | 0 / 55 | 0.0% | :x:
| [AstroDomeCameraController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeCameraController.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [AstroDomeComet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeComet.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [AstroDomeDemoAstroGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeDemoAstroGalaxy.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [AstroDomeGalaxySelector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeGalaxySelector.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [AstroDomeOrbit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeOrbit.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [AstroDomeSky.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeSky.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [AstroMapBoard.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapBoard.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [AstroMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObj.md) | 4.513540621865597% | 2 / 40 | 5.0% | :eight_pointed_black_star:
| [AstroMapObjFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObjFunction.md) | 59.08419497784343% | 10 / 14 | 71.42857142857143% | :eight_pointed_black_star:
| [AstroOverlookObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroOverlookObj.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [BallOpener.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallOpener.md) | 56.747404844290664% | 15 / 17 | 88.23529411764706% | :eight_pointed_black_star:
| [BallRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallRail.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
| [Banekiti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Banekiti.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
| [BattleShipElevator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BattleShipElevator.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [BeamGoRoundPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeamGoRoundPlanet.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [BeeFlowerHover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeeFlowerHover.md) | 82.1311475409836% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [BenefitItemInvincible.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemInvincible.md) | 62.95454545454545% | 10 / 12 | 83.33333333333334% | :eight_pointed_black_star:
| [BenefitItemLifeUp.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemLifeUp.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [BenefitItemObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemObj.md) | 98.54368932038835% | 34 / 35 | 97.14285714285714% | :eight_pointed_black_star:
| [BigBubbleDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleDrawer.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [BigBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleGenerator.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [BigBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [BigBubbleMoveLimitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleMoveLimitter.md) | 13.903743315508022% | 1 / 7 | 14.285714285714285% | :eight_pointed_black_star:
| [BigFan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFan.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
| [BigFanHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFanHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [BlackHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlackHole.md) | 66.66666666666666% | 18 / 22 | 81.81818181818183% | :eight_pointed_black_star:
| [BlueChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueChip.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [BlueStarCupsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueStarCupsulePlanet.md) | 0.0% | 0 / 42 | 0.0% | :x:
| [BreakableCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BreakableCage.md) | 68.64754098360656% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
| [BrightObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BrightObj.md) | 10.066127847171199% | 4 / 42 | 9.523809523809524% | :eight_pointed_black_star:
| [BumpAppearPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BumpAppearPlanet.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [Candlestand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Candlestand.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [CannonFortressBreakStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CannonFortressBreakStep.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [CapsuleCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CapsuleCage.md) | 100.0% | 23 / 23 | 100.0% | :white_check_mark:
| [ChipBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipBase.md) | 79.12087912087912% | 36 / 39 | 92.3076923076923% | :eight_pointed_black_star:
| [ChipCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipCounter.md) | 28.364688856729376% | 4 / 30 | 13.333333333333334% | :eight_pointed_black_star:
| [ChipGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipGroup.md) | 24.175824175824175% | 9 / 17 | 52.94117647058824% | :eight_pointed_black_star:
| [ChipHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ChooChooTrain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChooChooTrain.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [CircleCoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CircleCoinGroup.md) | 48.616600790513836% | 7 / 8 | 87.5% | :eight_pointed_black_star:
| [ClipArea.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipArea.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [ClipAreaDrop.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDrop.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [ClipAreaDropHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [ClipAreaDropLaser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropLaser.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [ClipAreaHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [ClipAreaMovable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaMovable.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [ClipAreaShape.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaShape.md) | 48.44559585492228% | 7 / 13 | 53.84615384615385% | :eight_pointed_black_star:
| [ClipFieldFillDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldFillDraw.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [ClipFieldMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldMapParts.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
| [ClipFieldSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [CocoNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CocoNut.md) | 82.36% | 55 / 58 | 94.82758620689656% | :eight_pointed_black_star:
| [CoconutTree.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTree.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [CoconutTreeLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTreeLeaf.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [Coin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Coin.md) | 100.0% | 65 / 65 | 100.0% | :white_check_mark:
| [CoinBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinBox.md) | 62.745098039215684% | 9 / 10 | 90.0% | :eight_pointed_black_star:
| [CoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinGroup.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [CoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinHolder.md) | 41.98606271777003% | 11 / 19 | 57.89473684210527% | :eight_pointed_black_star:
| [CoinReplica.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinReplica.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [CoinRotater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinRotater.md) | 57.534246575342465% | 6 / 7 | 85.71428571428571% | :eight_pointed_black_star:
| [CoinSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinSpot.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [CollapsePlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollapsePlane.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [CollectCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollectCounter.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [CollisionBlocker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollisionBlocker.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [CrystalCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCage.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [CrystalCageMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCageMoving.md) | 100.0% | 36 / 36 | 100.0% | :white_check_mark:
| [CrystalSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalSwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [CutBushModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CutBushModelObj.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
| [DashRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DashRing.md) | 44.952681388012614% | 6 / 9 | 66.66666666666666% | :eight_pointed_black_star:
| [DeadLeaves.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DeadLeaves.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [DesertLandMoveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertLandMoveSwitch.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [DesertMovingLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertMovingLand.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [DragonHeadFlower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DragonHeadFlower.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [DriftWood.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DriftWood.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [DummyDisplayModel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DummyDisplayModel.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [DynamicCollisionObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DynamicCollisionObj.md) | 14.285714285714285% | 3 / 7 | 42.857142857142854% | :eight_pointed_black_star:
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 89.9209486166008% | 49 / 50 | 98.0% | :eight_pointed_black_star:
| [ElectricBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricBall.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [ElectricRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRail.md) | 0.0% | 0 / 48 | 0.0% | :x:
| [ElectricRailHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ElectricRailMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailMoving.md) | 0.0% | 0 / 44 | 0.0% | :x:
| [ExterminationChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ExterminationChecker.md) | 92.11822660098522% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
| [FallDownBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallDownBridge.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [FallingSmallRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallingSmallRock.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [FallOutFieldDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallOutFieldDraw.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [FireBar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FireBar.md) | 71.49877149877149% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
| [FirePressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressure.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [FirePressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBullet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [FirePressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [FirePressureRadiate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureRadiate.md) | 86.71399594320486% | 35 / 37 | 94.5945945945946% | :eight_pointed_black_star:
| [FlameGun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlameGun.md) | 78.62838915470495% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
| [FlexibleSphere.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlexibleSphere.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [FlipPanel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlipPanel.md) | 100.0% | 43 / 43 | 100.0% | :white_check_mark:
| [Fountain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Fountain.md) | 38.864628820960704% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
| [FountainBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FountainBig.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [GCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCapture.md) | 0.0% | 0 / 70 | 0.0% | :x:
| [GCaptureRibbon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureRibbon.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [GCaptureTarget.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureTarget.md) | 0.0% | 0 / 41 | 0.0% | :x:
| [GravityLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLight.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [GravityLightRoad.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLightRoad.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [GreenCaterpillarBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GreenCaterpillarBig.md) | 100.0% | 31 / 31 | 100.0% | :white_check_mark:
| [HatchWaterPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HatchWaterPlanet.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [HeavensDoorDemoObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HeavensDoorDemoObj.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [HipDropMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropMoveObj.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [HipDropRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropRock.md) | 86.6822429906542% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
| [HipDropSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [HipDropTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropTimerSwitch.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [HitWallTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HitWallTimerSwitch.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [IceStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceStep.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [IceVolcanoUpDownPlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceVolcanoUpDownPlane.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [InvisiblePolygonObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObj.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [InvisiblePolygonObjGCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObjGCapture.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [IronCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IronCannonShell.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [ItemAppearStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemAppearStone.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [ItemBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBlock.md) | 74.88479262672811% | 23 / 26 | 88.46153846153845% | :eight_pointed_black_star:
| [ItemBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBubble.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [JetTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JetTurtle.md) | 0.0% | 0 / 55 | 0.0% | :x:
| [JumpHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpHole.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [JumpStand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpStand.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [KeySwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KeySwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [KillerGunnerSingle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KillerGunnerSingle.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [LargeChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChain.md) | 68.20276497695853% | 13 / 15 | 86.66666666666667% | :eight_pointed_black_star:
| [LargeChainParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChainParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [LavaBallRisingPlanetLava.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBallRisingPlanetLava.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [LavaBreakColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBreakColumn.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [LavaFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaFloater.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [LavaGalaxyParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGalaxyParts.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [LavaGeyser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGeyser.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [LavaHomeSeesaw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesaw.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [LavaHomeVolcanoFlow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeVolcanoFlow.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [LavaJamboSunPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaJamboSunPlanet.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [LavaProminence.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminence.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [LavaProminenceTriple.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminenceTriple.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [LavaSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaSteam.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [LavaStrangeRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaStrangeRock.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [LotusLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LotusLeaf.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [MagicBell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MagicBell.md) | 40.23494860499266% | 11 / 15 | 73.33333333333333% | :eight_pointed_black_star:
| [ManholeCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ManholeCover.md) | 20.96069868995633% | 1 / 13 | 7.6923076923076925% | :eight_pointed_black_star:
| [MapObjActor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActor.md) | 61.95652173913043% | 58 / 59 | 98.30508474576271% | :eight_pointed_black_star:
| [MapObjActorInitInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActorInitInfo.md) | 22.48062015503876% | 11 / 37 | 29.72972972972973% | :eight_pointed_black_star:
| [MapObjConnector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjConnector.md) | 32.25806451612903% | 4 / 6 | 66.66666666666666% | :eight_pointed_black_star:
| [MarblePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarblePlanet.md) | 100.0% | 35 / 35 | 100.0% | :white_check_mark:
| [MarioLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncher.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [MarioLauncherAttractor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncherAttractor.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
| [MechaKoopaPartsArm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsArm.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
| [MechaKoopaPartsHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsHead.md) | 100.0% | 25 / 25 | 100.0% | :white_check_mark:
| [MercatorFixParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorFixParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [MercatorRailMoveParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRailMoveParts.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [MercatorRotateParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRotateParts.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [MeteoContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteoContainer.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
| [MeteorStrike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrike.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [MeteorStrikeLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrikeLauncher.md) | 0.0% | 0 / 14 | 0.0% | :x:
| [MiniatureGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxy.md) | 0.0% | 0 / 40 | 0.0% | :x:
| [MiniatureGalaxyHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxyHolder.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [MorphItemObjNeo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MorphItemObjNeo.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [NeedlePlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NeedlePlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [NormalMapBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapBase.md) | 0.0% | 0 / 39 | 0.0% | :x:
| [NormalMapTestObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapTestObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [Note.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Note.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [NoteFairy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NoteFairy.md) | 100.0% | 39 / 39 | 100.0% | :white_check_mark:
| [OceanFloaterLandParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanFloaterLandParts.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [OceanSmallTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanSmallTurtle.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [OceanWaveFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanWaveFloater.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [PalmIsland.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PalmIsland.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [PeachCastleGardenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PeachCastleGardenPlanet.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [PhantomShipBoxFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBoxFloater.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [PhantomShipBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBridge.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [PhantomShipHandle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipHandle.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [PhantomTorch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomTorch.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [PicketSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PicketSwitch.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [PlantGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantGroup.md) | 0.0% | 0 / 38 | 0.0% | :x:
| [PlantPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantPoint.md) | 0.0% | 0 / 2 | 0.0% | :x:
| [PlantRailInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantRailInfo.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [PomponPlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PomponPlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [PowerStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStar.md) | 66.49572649572649% | 58 / 65 | 89.23076923076924% | :eight_pointed_black_star:
| [PowerStarAppearPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarAppearPoint.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [PowerStarHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarHolder.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [PressureBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PressureBase.md) | 81.69398907103826% | 44 / 48 | 91.66666666666666% | :eight_pointed_black_star:
| [PrizeRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PrizeRing.md) | 78.57142857142857% | 28 / 31 | 90.32258064516128% | :eight_pointed_black_star:
| [PTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PTimerSwitch.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
| [PunchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchBox.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [PunchingKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchingKinoko.md) | 100.0% | 59 / 59 | 100.0% | :white_check_mark:
| [PurpleCoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [PurpleCoinStarter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinStarter.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [QuarterRollGravityRoomArrow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuarterRollGravityRoomArrow.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [QuestionBoxGalleryObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionBoxGalleryObj.md) | 0.0% | 0 / 24 | 0.0% | :x:
| [QuestionCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionCoin.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [RailBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailBlock.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [RailCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailCoin.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [RailMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailMoveObj.md) | 100.0% | 53 / 53 | 100.0% | :white_check_mark:
| [RainCloud.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RainCloud.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [ReverseGravityRoomPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ReverseGravityRoomPlanet.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [RevolvingWay.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RevolvingWay.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [Rock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Rock.md) | 32.54091971940764% | 32 / 51 | 62.745098039215684% | :eight_pointed_black_star:
| [RockCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RockCreator.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [RosettaChair.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaChair.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [RosettaPictureBook.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaPictureBook.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [RotateMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RotateMoveObj.md) | 89.16666666666667% | 17 / 20 | 85.0% | :eight_pointed_black_star:
| [SandCapsuleInsidePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsuleInsidePlanet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
| [SandCapsulePressGround.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsulePressGround.md) | 0.0% | 0 / 36 | 0.0% | :x:
| [Sandstorm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sandstorm.md) | 0.0% | 0 / 46 | 0.0% | :x:
| [SandUpDownEffectObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownEffectObj.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [SandUpDownTriRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownTriRock.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [ScrewSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitch.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [ScrewSwitchReverse.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitchReverse.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [SeaBottomTriplePropeller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeaBottomTriplePropeller.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [SeesawMoveNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeesawMoveNut.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [Shellfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Shellfish.md) | 0.0% | 0 / 37 | 0.0% | :x:
| [ShockWaveGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShockWaveGenerator.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [ShootingStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShootingStar.md) | 66.8488160291439% | 14 / 17 | 82.35294117647058% | :eight_pointed_black_star:
| [SideSpikeMoveStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SideSpikeMoveStep.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [SimpleBreakableObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleBreakableObj.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [SimpleClipPartsObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleClipPartsObj.md) | 0.0% | 0 / 12 | 0.0% | :x:
| [SimpleFloaterObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleFloaterObj.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SimpleMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleMapObj.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
| [SimpleNormalMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleNormalMapObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
| [SimpleTimerObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleTimerObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [SmallStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SmallStone.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [SnowCapsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowCapsulePlanet.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
| [SnowFloor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloor.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [SnowFloorTile.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloorTile.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [SnowMan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowMan.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [SnowplowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowplowSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [SoundEmitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SoundEmitter.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [SpaceMine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceMine.md) | 92.7927927927928% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
| [SpaceShipStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceShipStep.md) | 0.0% | 0 / 23 | 0.0% | :x:
| [SphereRailDash.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SphereRailDash.md) | 0.0% | 0 / 11 | 0.0% | :x:
| [SpiderCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderCoin.md) | 0.0% | 0 / 16 | 0.0% | :x:
| [SpiderMapBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderMapBlock.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [SpiderThread.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThread.md) | 0.0% | 0 / 33 | 0.0% | :x:
| [SpiderThreadHangInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadHangInfo.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SpiderThreadMainPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadMainPoint.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [SpiderThreadPart.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPart.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [SpiderThreadPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPoint.md) | 0.0% | 0 / 10 | 0.0% | :x:
| [SpiderThreadRadialLine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadRadialLine.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [SpiderThreadWindCtrl.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadWindCtrl.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriver.md) | 76.13089509143407% | 49 / 59 | 83.05084745762711% | :eight_pointed_black_star:
| [SpinDriverCamera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverCamera.md) | 73.97260273972603% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
| [SpinDriverOperateRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverOperateRing.md) | 45.5535390199637% | 14 / 19 | 73.68421052631578% | :eight_pointed_black_star:
| [SpinDriverPathDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverPathDrawer.md) | 38.91752577319588% | 24 / 28 | 85.71428571428571% | :eight_pointed_black_star:
| [SpinDriverShootPath.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverShootPath.md) | 49.889135254988915% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
| [SpinDriverUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverUtil.md) | 0.0% | 0 / 1 | 0.0% | :x:
| [SpinLeverSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinLeverSwitch.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
| [SpinningBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinningBox.md) | 0.0% | 0 / 35 | 0.0% | :x:
| [SpringJetWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringJetWater.md) | 0.0% | 0 / 17 | 0.0% | :x:
| [SpringWaterFloaterSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringWaterFloaterSpot.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [StageEffectDataTable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StageEffectDataTable.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [StarPiece.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPiece.md) | 0.0% | 0 / 86 | 0.0% | :x:
| [StarPieceDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceDirector.md) | 0.0% | 0 / 45 | 0.0% | :x:
| [StarPieceFollowGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceFollowGroup.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [StarPieceGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceGroup.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [StarPieceMother.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceMother.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [StarPieceSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceSpot.md) | 0.0% | 0 / 7 | 0.0% | :x:
| [SubmarineSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineSteam.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [SubmarineVolcanoBigColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineVolcanoBigColumn.md) | 87.95180722891565% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
| [Sun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sun.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
| [SuperSpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SuperSpinDriver.md) | 28.548644338118024% | 49 / 94 | 52.12765957446809% | :eight_pointed_black_star:
| [SurprisedGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SurprisedGalaxy.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
| [Swinger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Swinger.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [SwingLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwingLight.md) | 0.0% | 0 / 20 | 0.0% | :x:
| [SwitchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwitchBox.md) | 100.0% | 17 / 17 | 100.0% | :white_check_mark:
| [TimeAppearObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimeAppearObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
| [TimerMoveWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimerMoveWall.md) | 0.0% | 0 / 15 | 0.0% | :x:
| [TrampleStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TrampleStar.md) | 0.0% | 0 / 32 | 0.0% | :x:
| [TransparentWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TransparentWall.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [TreasureBoxCracked.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureBoxCracked.md) | 0.0% | 0 / 30 | 0.0% | :x:
| [TreasureSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureSpot.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:
| [Tsukidashikun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Tsukidashikun.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [TypicalDoor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TypicalDoor.md) | 0.0% | 0 / 28 | 0.0% | :x:
| [UFOBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOBase.md) | 0.0% | 0 / 26 | 0.0% | :x:
| [UFOKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOKinoko.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
| [ValveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ValveSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [WarpPod.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WarpPod.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [WatchTowerRotateStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WatchTowerRotateStep.md) | 85.85131894484412% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
| [WaterfallCaveCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterfallCaveCover.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WaterLeakPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterLeakPipe.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
| [WaterPressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressure.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [WaterPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBullet.md) | 91.28329297820824% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
| [WaterPressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [WaveFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaveFloatingForce.md) | 0.0% | 0 / 5 | 0.0% | :x:
| [WhirlPool.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WhirlPool.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WoodBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WoodBox.md) | 0.0% | 0 / 18 | 0.0% | :x:
| [WormEatenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WormEatenPlanet.md) | 0.0% | 0 / 25 | 0.0% | :x:
| [YellowChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/YellowChip.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
| [MapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapParts.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| [GeneralMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GeneralMapParts.md) | 80.0925925925926% | 29 / 32 | 90.625% | :eight_pointed_black_star:
| [FloaterFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForce.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| [FloaterFloatingForceTypeNormal.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeNormal.md) | 61.79540709812108% | 18 / 20 | 90.0% | :eight_pointed_black_star:
| [FloaterFloatingForceTypeSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeSpring.md) | 0.0% | 0 / 22 | 0.0% | :x:
| [FloaterFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFunction.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [LavaHomeSeesawRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesawRotator.md) | 0.0% | 0 / 35 | 0.0% | :x:
| [MapPartsAppearController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsAppearController.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [MapPartsBreaker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsBreaker.md) | 93.28859060402685% | 9 / 10 | 90.0% | :eight_pointed_black_star:
| [MapPartsFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFloatingForce.md) | 66.71270718232044% | 23 / 27 | 85.18518518518519% | :eight_pointed_black_star:
| [MapPartsFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFunction.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [MapPartsRailGuideDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideDrawer.md) | 28.647214854111407% | 4 / 19 | 21.052631578947366% | :eight_pointed_black_star:
| [MapPartsRailGuideHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideHolder.md) | 17.391304347826086% | 2 / 5 | 40.0% | :eight_pointed_black_star:
| [MapPartsRailGuidePoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuidePoint.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
| [MapPartsRailMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailMover.md) | 0.0% | 0 / 58 | 0.0% | :x:
| [MapPartsRailPointPassChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPointPassChecker.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [MapPartsRailPosture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPosture.md) | 0.0% | 0 / 13 | 0.0% | :x:
| [MapPartsRailRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailRotator.md) | 0.0% | 0 / 27 | 0.0% | :x:
| [MapPartsRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRotator.md) | 37.61904761904762% | 24 / 33 | 72.72727272727273% | :eight_pointed_black_star:
| [MapPartsSeesaw1AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw1AxisRotator.md) | 0.0% | 0 / 31 | 0.0% | :x:
| [MapPartsSeesaw2AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw2AxisRotator.md) | 0.0% | 0 / 23 | 0.0% | :x:

View File

@ -1,30 +1,30 @@
# Banekiti.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 19 / 19 Completed -- (100.0%)
# Banekiti.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__8BanekitiFPCc` | :white_check_mark: |
| `init__8BanekitiFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__8BanekitiFv` | :white_check_mark: |
| `exeRepel__8BanekitiFv` | :white_check_mark: |
| `exeDPDSwoon__8BanekitiFv` | :white_check_mark: |
| `endDPDSwoon__8BanekitiFv` | :white_check_mark: |
| `calcAndSetBaseMtx__8BanekitiFv` | :white_check_mark: |
| `control__8BanekitiFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__8BanekitiFv` | :white_check_mark: |
| `__sinit_\Banekiti_cpp` | :white_check_mark: |
| `__ct__Q211NrvBanekiti15BanekitiNrvWaitFv` | :white_check_mark: |
| `__ct__Q211NrvBanekiti16BanekitiNrvRepelFv` | :white_check_mark: |
| `__ct__Q211NrvBanekiti19BanekitiNrvDPDSwoonFv` | :white_check_mark: |
| `executeOnEnd__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti16BanekitiNrvRepelCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti15BanekitiNrvWaitCFP5Spine` | :white_check_mark: |
# Banekiti.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 19 / 19 Completed -- (100.0%)
# Banekiti.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__8BanekitiFPCc` | :white_check_mark: |
| `init__8BanekitiFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__8BanekitiFv` | :white_check_mark: |
| `exeRepel__8BanekitiFv` | :white_check_mark: |
| `exeDPDSwoon__8BanekitiFv` | :white_check_mark: |
| `endDPDSwoon__8BanekitiFv` | :white_check_mark: |
| `calcAndSetBaseMtx__8BanekitiFv` | :white_check_mark: |
| `control__8BanekitiFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveOtherMsg__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__8BanekitiFv` | :white_check_mark: |
| `__sinit_\Banekiti_cpp` | :white_check_mark: |
| `__ct__Q211NrvBanekiti15BanekitiNrvWaitFv` | :white_check_mark: |
| `__ct__Q211NrvBanekiti16BanekitiNrvRepelFv` | :white_check_mark: |
| `__ct__Q211NrvBanekiti19BanekitiNrvDPDSwoonFv` | :white_check_mark: |
| `executeOnEnd__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti16BanekitiNrvRepelCFP5Spine` | :white_check_mark: |
| `execute__Q211NrvBanekiti15BanekitiNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,24 +1,24 @@
# BattleShipElevator.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# BattleShipElevator.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__18BattleShipElevatorFPCc` | :white_check_mark: |
| `init__18BattleShipElevatorFRC12JMapInfoIter` | :white_check_mark: |
| `exeMove__18BattleShipElevatorFv` | :white_check_mark: |
| `control__18BattleShipElevatorFv` | :white_check_mark: |
| `receiveOtherMsg__18BattleShipElevatorFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__18BattleShipElevatorFv` | :white_check_mark: |
| `__sinit_\BattleShipElevator_cpp` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitFv` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveFv` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndFv` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndCFP5Spine` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveCFP5Spine` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitCFP5Spine` | :white_check_mark: |
# BattleShipElevator.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# BattleShipElevator.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__18BattleShipElevatorFPCc` | :white_check_mark: |
| `init__18BattleShipElevatorFRC12JMapInfoIter` | :white_check_mark: |
| `exeMove__18BattleShipElevatorFv` | :white_check_mark: |
| `control__18BattleShipElevatorFv` | :white_check_mark: |
| `receiveOtherMsg__18BattleShipElevatorFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__18BattleShipElevatorFv` | :white_check_mark: |
| `__sinit_\BattleShipElevator_cpp` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitFv` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveFv` | :white_check_mark: |
| `__ct__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndFv` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndCFP5Spine` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveCFP5Spine` | :white_check_mark: |
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,32 +1,32 @@
# FountainBig.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 21 / 21 Completed -- (100.0%)
# FountainBig.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__11FountainBigFPCc` | :white_check_mark: |
| `init__11FountainBigFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__11FountainBigFv` | :white_check_mark: |
| `exeSign__11FountainBigFv` | :white_check_mark: |
| `exeSignStop__11FountainBigFv` | :white_check_mark: |
| `exeSpout__11FountainBigFv` | :white_check_mark: |
| `exeSpoutEnd__11FountainBigFv` | :white_check_mark: |
| `attackSensor__11FountainBigFP9HitSensorP9HitSensor` | :white_check_mark: |
| `updateHitSensor__11FountainBigFP9HitSensor` | :white_check_mark: |
| `__dt__11FountainBigFv` | :white_check_mark: |
| `__sinit_\FountainBig_cpp` | :white_check_mark: |
| `__ct__Q214NrvFountainBig18FountainBigNrvWaitFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig18FountainBigNrvSignFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig22FountainBigNrvSignStopFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig19FountainBigNrvSpoutFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig22FountainBigNrvSpoutEndFv` | :white_check_mark: |
| `execute__Q214NrvFountainBig22FountainBigNrvSpoutEndCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig19FountainBigNrvSpoutCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig22FountainBigNrvSignStopCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig18FountainBigNrvSignCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig18FountainBigNrvWaitCFP5Spine` | :white_check_mark: |
# FountainBig.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 21 / 21 Completed -- (100.0%)
# FountainBig.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__11FountainBigFPCc` | :white_check_mark: |
| `init__11FountainBigFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__11FountainBigFv` | :white_check_mark: |
| `exeSign__11FountainBigFv` | :white_check_mark: |
| `exeSignStop__11FountainBigFv` | :white_check_mark: |
| `exeSpout__11FountainBigFv` | :white_check_mark: |
| `exeSpoutEnd__11FountainBigFv` | :white_check_mark: |
| `attackSensor__11FountainBigFP9HitSensorP9HitSensor` | :white_check_mark: |
| `updateHitSensor__11FountainBigFP9HitSensor` | :white_check_mark: |
| `__dt__11FountainBigFv` | :white_check_mark: |
| `__sinit_\FountainBig_cpp` | :white_check_mark: |
| `__ct__Q214NrvFountainBig18FountainBigNrvWaitFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig18FountainBigNrvSignFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig22FountainBigNrvSignStopFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig19FountainBigNrvSpoutFv` | :white_check_mark: |
| `__ct__Q214NrvFountainBig22FountainBigNrvSpoutEndFv` | :white_check_mark: |
| `execute__Q214NrvFountainBig22FountainBigNrvSpoutEndCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig19FountainBigNrvSpoutCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig22FountainBigNrvSignStopCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig18FountainBigNrvSignCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvFountainBig18FountainBigNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,26 +1,26 @@
# HipDropRock.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 14 / 15 Completed -- (93.33333333333333%)
# HipDropRock.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__11HipDropRockFPCc` | :white_check_mark: |
| `init__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
| `exeBreak__11HipDropRockFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__11HipDropRockFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `initBreakModel__11HipDropRockFv` | :x: |
| `initItem__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
| `appearItem__11HipDropRockFv` | :white_check_mark: |
| `__dt__11HipDropRockFv` | :white_check_mark: |
| `__sinit_\HipDropRock_cpp` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock18HipDropRockNrvWaitFv` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock19HipDropRockNrvBreakFv` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock19HipDropRockNrvWreckFv` | :white_check_mark: |
| `execute__Q214NrvHipDropRock19HipDropRockNrvWreckCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvHipDropRock19HipDropRockNrvBreakCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvHipDropRock18HipDropRockNrvWaitCFP5Spine` | :white_check_mark: |
# HipDropRock.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 14 / 15 Completed -- (93.33333333333333%)
# HipDropRock.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__11HipDropRockFPCc` | :white_check_mark: |
| `init__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
| `exeBreak__11HipDropRockFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__11HipDropRockFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `initBreakModel__11HipDropRockFv` | :x: |
| `initItem__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
| `appearItem__11HipDropRockFv` | :white_check_mark: |
| `__dt__11HipDropRockFv` | :white_check_mark: |
| `__sinit_\HipDropRock_cpp` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock18HipDropRockNrvWaitFv` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock19HipDropRockNrvBreakFv` | :white_check_mark: |
| `__ct__Q214NrvHipDropRock19HipDropRockNrvWreckFv` | :white_check_mark: |
| `execute__Q214NrvHipDropRock19HipDropRockNrvWreckCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvHipDropRock19HipDropRockNrvBreakCFP5Spine` | :white_check_mark: |
| `execute__Q214NrvHipDropRock18HipDropRockNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,24 +1,24 @@
# PicketSwitch.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# PicketSwitch.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__12PicketSwitchFPCc` | :white_check_mark: |
| `init__12PicketSwitchFRC12JMapInfoIter` | :white_check_mark: |
| `exeFirstDrop__12PicketSwitchFv` | :white_check_mark: |
| `exeLastDrop__12PicketSwitchFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__12PicketSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__12PicketSwitchFv` | :white_check_mark: |
| `__sinit_\PicketSwitch_cpp` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch19PicketSwitchNrvWaitFv` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropFv` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch23PicketSwitchNrvLastDropFv` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch23PicketSwitchNrvLastDropCFP5Spine` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropCFP5Spine` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch19PicketSwitchNrvWaitCFP5Spine` | :white_check_mark: |
# PicketSwitch.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# PicketSwitch.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__12PicketSwitchFPCc` | :white_check_mark: |
| `init__12PicketSwitchFRC12JMapInfoIter` | :white_check_mark: |
| `exeFirstDrop__12PicketSwitchFv` | :white_check_mark: |
| `exeLastDrop__12PicketSwitchFv` | :white_check_mark: |
| `receiveMsgPlayerAttack__12PicketSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__12PicketSwitchFv` | :white_check_mark: |
| `__sinit_\PicketSwitch_cpp` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch19PicketSwitchNrvWaitFv` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropFv` | :white_check_mark: |
| `__ct__Q215NrvPicketSwitch23PicketSwitchNrvLastDropFv` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch23PicketSwitchNrvLastDropCFP5Spine` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropCFP5Spine` | :white_check_mark: |
| `execute__Q215NrvPicketSwitch19PicketSwitchNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,42 +1,42 @@
# PrizeRing.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 28 / 31 Completed -- (90.32258064516128%)
# PrizeRing.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__9PrizeRingFv` | :white_check_mark: |
| `init__9PrizeRingFRC12JMapInfoIter` | :white_check_mark: |
| `appear__9PrizeRingFv` | :white_check_mark: |
| `kill__9PrizeRingFv` | :white_check_mark: |
| `setLife__9PrizeRingFi` | :white_check_mark: |
| `setNumber__9PrizeRingFi` | :white_check_mark: |
| `setNervePass__9PrizeRingFv` | :white_check_mark: |
| `isReadyToPass__9PrizeRingCFv` | :white_check_mark: |
| `isReadyToKill__9PrizeRingCFv` | :white_check_mark: |
| `exeStart__9PrizeRingFv` | :white_check_mark: |
| `exeLoop__9PrizeRingFv` | :white_check_mark: |
| `exeTimeout__9PrizeRingFv` | :white_check_mark: |
| `exePass__9PrizeRingFv` | :white_check_mark: |
| `isPassed__9PrizeRingCFv` | :x: |
| `attackSensor__9PrizeRingFP9HitSensorP9HitSensor` | :white_check_mark: |
| `playSound__9PrizeRingCFv` | :x: |
| `isOnTriggerTimeoutFlash__9PrizeRingCFv` | :x: |
| `__dt__9PrizeRingFv` | :white_check_mark: |
| `__sinit_\PrizeRing_cpp` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing14PrizeRingStartFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing13PrizeRingLoopFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing16PrizeRingTimeoutFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToPassFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing13PrizeRingPassFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToKillFv` | :white_check_mark: |
| `execute__Q212NrvPrizeRing20PrizeRingReadyToKillCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing13PrizeRingPassCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing20PrizeRingReadyToPassCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing16PrizeRingTimeoutCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing13PrizeRingLoopCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing14PrizeRingStartCFP5Spine` | :white_check_mark: |
# PrizeRing.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 28 / 31 Completed -- (90.32258064516128%)
# PrizeRing.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__9PrizeRingFv` | :white_check_mark: |
| `init__9PrizeRingFRC12JMapInfoIter` | :white_check_mark: |
| `appear__9PrizeRingFv` | :white_check_mark: |
| `kill__9PrizeRingFv` | :white_check_mark: |
| `setLife__9PrizeRingFi` | :white_check_mark: |
| `setNumber__9PrizeRingFi` | :white_check_mark: |
| `setNervePass__9PrizeRingFv` | :white_check_mark: |
| `isReadyToPass__9PrizeRingCFv` | :white_check_mark: |
| `isReadyToKill__9PrizeRingCFv` | :white_check_mark: |
| `exeStart__9PrizeRingFv` | :white_check_mark: |
| `exeLoop__9PrizeRingFv` | :white_check_mark: |
| `exeTimeout__9PrizeRingFv` | :white_check_mark: |
| `exePass__9PrizeRingFv` | :white_check_mark: |
| `isPassed__9PrizeRingCFv` | :x: |
| `attackSensor__9PrizeRingFP9HitSensorP9HitSensor` | :white_check_mark: |
| `playSound__9PrizeRingCFv` | :x: |
| `isOnTriggerTimeoutFlash__9PrizeRingCFv` | :x: |
| `__dt__9PrizeRingFv` | :white_check_mark: |
| `__sinit_\PrizeRing_cpp` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing14PrizeRingStartFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing13PrizeRingLoopFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing16PrizeRingTimeoutFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToPassFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing13PrizeRingPassFv` | :white_check_mark: |
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToKillFv` | :white_check_mark: |
| `execute__Q212NrvPrizeRing20PrizeRingReadyToKillCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing13PrizeRingPassCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing20PrizeRingReadyToPassCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing16PrizeRingTimeoutCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing13PrizeRingLoopCFP5Spine` | :white_check_mark: |
| `execute__Q212NrvPrizeRing14PrizeRingStartCFP5Spine` | :white_check_mark: |

View File

@ -1,22 +1,22 @@
# SnowCapsulePlanet.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 11 / 11 Completed -- (100.0%)
# SnowCapsulePlanet.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__17SnowCapsulePlanetFPCc` | :white_check_mark: |
| `init__17SnowCapsulePlanetFRC12JMapInfoIter` | :white_check_mark: |
| `exeOpen__17SnowCapsulePlanetFv` | :white_check_mark: |
| `__dt__17SnowCapsulePlanetFv` | :white_check_mark: |
| `__sinit_\SnowCapsulePlanet_cpp` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitFv` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitFv` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenFv` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenCFP5Spine` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitCFP5Spine` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitCFP5Spine` | :white_check_mark: |
# SnowCapsulePlanet.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 11 / 11 Completed -- (100.0%)
# SnowCapsulePlanet.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__17SnowCapsulePlanetFPCc` | :white_check_mark: |
| `init__17SnowCapsulePlanetFRC12JMapInfoIter` | :white_check_mark: |
| `exeOpen__17SnowCapsulePlanetFv` | :white_check_mark: |
| `__dt__17SnowCapsulePlanetFv` | :white_check_mark: |
| `__sinit_\SnowCapsulePlanet_cpp` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitFv` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitFv` | :white_check_mark: |
| `__ct__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenFv` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenCFP5Spine` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitCFP5Spine` | :white_check_mark: |
| `execute__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,27 +1,27 @@
# SpinLeverSwitch.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 16 / 16 Completed -- (100.0%)
# SpinLeverSwitch.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__15SpinLeverSwitchFPCc` | :white_check_mark: |
| `init__15SpinLeverSwitchFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__15SpinLeverSwitchFv` | :white_check_mark: |
| `exeSwitchOn__15SpinLeverSwitchFv` | :white_check_mark: |
| `initAfterPlacement__15SpinLeverSwitchFv` | :white_check_mark: |
| `calcAndSetBaseMtx__15SpinLeverSwitchFv` | :white_check_mark: |
| `attackSensor__15SpinLeverSwitchFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__15SpinLeverSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__15SpinLeverSwitchFv` | :white_check_mark: |
| `__sinit_\SpinLeverSwitch_cpp` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitFv` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnFv` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndFv` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitCFP5Spine` | :white_check_mark: |
# SpinLeverSwitch.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 16 / 16 Completed -- (100.0%)
# SpinLeverSwitch.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__15SpinLeverSwitchFPCc` | :white_check_mark: |
| `init__15SpinLeverSwitchFRC12JMapInfoIter` | :white_check_mark: |
| `exeWait__15SpinLeverSwitchFv` | :white_check_mark: |
| `exeSwitchOn__15SpinLeverSwitchFv` | :white_check_mark: |
| `initAfterPlacement__15SpinLeverSwitchFv` | :white_check_mark: |
| `calcAndSetBaseMtx__15SpinLeverSwitchFv` | :white_check_mark: |
| `attackSensor__15SpinLeverSwitchFP9HitSensorP9HitSensor` | :white_check_mark: |
| `receiveMsgPlayerAttack__15SpinLeverSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__15SpinLeverSwitchFv` | :white_check_mark: |
| `__sinit_\SpinLeverSwitch_cpp` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitFv` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnFv` | :white_check_mark: |
| `__ct__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndFv` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitCFP5Spine` | :white_check_mark: |

View File

@ -1,24 +1,24 @@
# SurprisedGalaxy.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# SurprisedGalaxy.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__15SurprisedGalaxyFPCc` | :white_check_mark: |
| `init__15SurprisedGalaxyFRC12JMapInfoIter` | :white_check_mark: |
| `appear__15SurprisedGalaxyFv` | :white_check_mark: |
| `kill__15SurprisedGalaxyFv` | :white_check_mark: |
| `attackSensor__15SurprisedGalaxyFP9HitSensorP9HitSensor` | :white_check_mark: |
| `exeExit__15SurprisedGalaxyFv` | :white_check_mark: |
| `receiveOtherMsg__15SurprisedGalaxyFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__15SurprisedGalaxyFv` | :white_check_mark: |
| `__sinit_\SurprisedGalaxy_cpp` | :white_check_mark: |
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitFv` | :white_check_mark: |
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitFv` | :white_check_mark: |
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitCFP5Spine` | :white_check_mark: |
# SurprisedGalaxy.o
| Symbol | Meaning
| ------------- | -------------
| :x: | Function has not yet been started or is not matching.
| :white_check_mark: | Function is completed.
# 13 / 13 Completed -- (100.0%)
# SurprisedGalaxy.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__15SurprisedGalaxyFPCc` | :white_check_mark: |
| `init__15SurprisedGalaxyFRC12JMapInfoIter` | :white_check_mark: |
| `appear__15SurprisedGalaxyFv` | :white_check_mark: |
| `kill__15SurprisedGalaxyFv` | :white_check_mark: |
| `attackSensor__15SurprisedGalaxyFP9HitSensorP9HitSensor` | :white_check_mark: |
| `exeExit__15SurprisedGalaxyFv` | :white_check_mark: |
| `receiveOtherMsg__15SurprisedGalaxyFUlP9HitSensorP9HitSensor` | :white_check_mark: |
| `__dt__15SurprisedGalaxyFv` | :white_check_mark: |
| `__sinit_\SurprisedGalaxy_cpp` | :white_check_mark: |
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitFv` | :white_check_mark: |
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitFv` | :white_check_mark: |
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitCFP5Spine` | :white_check_mark: |
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitCFP5Spine` | :white_check_mark: |

View File

@ -13,11 +13,17 @@ public:
void setEnableBottom(bool val);
void setTopCutRate(f32 val);
/*
* The x column represents the radius vector. The y column represents the central axis vector,
* point from the center of the base of the cone to the apex. The translation column represents
* the location of the center of the base of the cone, and the z column is unused.
*/
TPos3f mLocalMtx; // _28
TPos3f mWorldMtx; // _58
f32 _88; // set in ctor but never used
f32 _8C; // set in ctor but never used
f32 _90;
f32 mValidDegree; // _88; set in ctor but never used
f32 mValidCos; // _8C; set in ctor but never used
f32 mWorldRadius; // _90
bool mEnableBottom; // _94
f32 mTopCutRate; // _98
};

View File

@ -4,28 +4,35 @@
class CubeGravity : public PlanetGravity {
public:
CubeGravity();
CubeGravity();
virtual void updateMtx(const TPos3f &rMtx);
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
virtual void updateMtx(const TPos3f &rMtx);
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
void setCube(const TPos3f &);
int calcGravityArea(const TVec3f &rPosition) const;
bool calcFaceGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
bool calcEdgeGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
bool calcCornerGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
/*inline void init(TVec3f& x, TVec3f& y, TVec3f& z) const {
mPosition.getXDir(x);
mPosition.getYDir(y);
mPosition.getZDir(z);
}*/
TPos3f mCube; // _28
TPos3f mPosition; // _58
f32 lenX; // _88
f32 lenY; // _8C
f32 lenZ; // _90
u8 mActiveFaces; // _94
void setCube(const TPos3f &);
/*
* Area as in region, not area as in Area = Base * h
*
* The region is made up of 3 components: x, y, z. For each component, a value of 0 indicates
* that the position is beyond the negative face of that component, a value of 1 indicates that
* the position is between the two faces for that component, and a value of 2 indicates that
* the position is beyond the positive face of that component.
*
* The region is encoded as follows (in pseudocode):
* `area = area_x * 3^0 + area_y * 3^1 + area_z * 3^2`
*
* `calcGravityArea` returns the encoded region
*/
int calcGravityArea(const TVec3f &rPosition) const;
bool calcFaceGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
bool calcEdgeGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
bool calcCornerGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
TPos3f mCube; // _28
TPos3f mPosition; // _58
f32 lenX; // _88
f32 lenY; // _8C
f32 lenZ; // _90
u8 mActiveFaces; // _94
};

View File

@ -4,31 +4,43 @@
class DiskGravity : public PlanetGravity {
public:
DiskGravity();
DiskGravity();
virtual void updateMtx(const TPos3f &rMtx);
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
virtual void updateMtx(const TPos3f &rMtx);
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
void setLocalPosition(const TVec3f &rLocalPos);
void setLocalDirection(const TVec3f &rLocalDir);
void setSideDirection(const TVec3f &rSideDir);
void setRadius(f32 val);
void setValidDegee(f32 val);
void setBothSide(bool val);
void setEnableEdgeGravity(bool val);
void updateLocalParam();
void updateLocalParam();
TVec3f mLocalPosition; // _28
TVec3f mTranslation; // _34
TVec3f mLocalDirection; // _40
TVec3f mRotation; // _4C
TVec3f mSideDirection; // _58
TVec3f mSideVecOrtho; // _64
TVec3f mWorldSideDir; // _70
f32 mRadius; // _7C
f32 mWorldRadius; // _80
f32 mValidDegree; // _84
f32 mValidCos; // _88
bool mEnableBothSide; // _8C
bool mEnableEdgeGravity; // _8D
void setLocalPosition(const TVec3f &rLocalPos);
void setLocalDirection(const TVec3f &rLocalDir);
void setSideDirection(const TVec3f &rSideDir);
void setRadius(f32 val);
void setValidDegee(f32 val);
void setBothSide(bool val);
void setEnableEdgeGravity(bool val);
// Position
TVec3f mLocalPosition; // _28
TVec3f mWorldPosition; // _34
// Unit normal vector to the circular surface of the disk
TVec3f mLocalNormal; // _40
TVec3f mWorldNormal; // _4C
TVec3f mSideDirection; // _58
TVec3f mOppositeSideVecOrtho; // _64
TVec3f mWorldOppositeSideVecOrtho; // _70
// Radius of the circular face of the disk
f32 mLocalRadius; // _7C
f32 mWorldRadius; // _80
// Number of degrees of the circle gravity applies to
f32 mValidDegree; // _84
f32 mValidCos; // _88
bool mEnableBothSide; // _8C
bool mEnableEdgeGravity; // _8D
};

View File

@ -17,11 +17,11 @@ public:
void setBothSide(bool val);
TVec3f mLocalPosition; // _28
TVec3f mTranslation;
TVec3f mTranslation; // _34
TVec3f mLocalDirection; // _40
TVec3f mRotation;
TVec3f mRotation; // _4C
f32 mRadius; // _58
f32 _5C;
f32 mWorldRadius; // _5C
f32 mDiskRadius; // _60
s32 mEdgeType; // _64
bool mEnableBothSide; // _68

View File

@ -15,15 +15,19 @@ public:
void setEdgeValid(u32 index, bool val);
void updateLocalParam();
// Represents the centers of each base of the cylinder
TVec3f mGravityPoints[2]; // _28
TVec3f _40[2];
TVec3f mWorldGravityPoints[2]; // _40
TVec3f mSideVector; // _58
TVec3f _64;
TVec3f _70;
TVec3f _7C;
f32 _88;
f32 mSideDegree; // _8C
f32 _90;
f32 _94[2];
TVec3f mOppositeSideVecOrtho;
TVec3f mWorldOppositeSideVecOrtho;
TVec3f mAxis; // _7C
f32 mAxisLength; // _88
f32 mValidSideDegree; // _8C
f32 mValidSideCos; // _90
f32 mHemisphereExtension[2]; // _94
bool mEdges[2]; // _9C
};

View File

@ -41,11 +41,27 @@ namespace MR {
void makeAxisFrontSide(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
void makeAxisUpFront(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
void makeAxisUpSide(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
/*
* Generate an orthogonal vector to the second argument, starting by projecting the z-vector
* into the plane orthogonal to the second argument. If the z-vector is parallel to the second
* argument, the x-vector is instead projected into the orthognal plane. Regardless, the
* normalized result is placed into the first argument.
*/
void makeAxisVerticalZX(TVec3f *, const TVec3f &);
void makeAxisCrossPlane(TVec3f *, TVec3f *, const TVec3f &);
bool makeAxisAndCosignVecToVec(TVec3f *, f32 *, const TVec3f &, const TVec3f &);
f32 calcPerpendicFootToLine(TVec3f *, const TVec3f &, const TVec3f &, const TVec3f &);
f32 calcPerpendicFootToLineInside(TVec3f *, const TVec3f &, const TVec3f &, const TVec3f &);
/*
* Projects rPoint onto the directed line defined by rTip and rTail and places the result into pOut
*/
f32 calcPerpendicFootToLine(TVec3f *pOut, const TVec3f &rPoint, const TVec3f &rTip, const TVec3f &rTail);
/*
* Same as above, except the result of the projection is clamped between rTip and rTail
*/
f32 calcPerpendicFootToLineInside(TVec3f *pOut, const TVec3f &rPoint, const TVec3f &rTip, const TVec3f &rTail);
void blendQuatUpFront(TQuat4f *, const TVec3f &, const TVec3f &, float, float);

View File

@ -2,6 +2,7 @@
#include "JSystem/JGeometry/TVec.hpp"
#include "JSystem/JGeometry/TQuat.hpp"
#include <cmath>
namespace JGeometry {
template<typename T>
@ -117,9 +118,7 @@ namespace JGeometry {
void mult(const TVec3f &rSrc, TVec3f &rDest) const;
void multTranspose(const TVec3f &a1, const TVec3f &a2) const;
};
template<class T>
struct TRotation3 : public T {
public:
@ -156,12 +155,58 @@ namespace JGeometry {
void getScale(TVec3f &rDest) const;
void setScale(const TVec3f &rSrc);
void setRotate(const TVec3f &, const TVec3f &);
void setRotate(const TVec3f &, f32);
void INLINE_FUNC_DECL(setRotate, const TVec3f &mLocalDirection, f32 fr1e) {
TVec3f v;
v.set(mLocalDirection);
PSVECMag(v.toCVec());
PSVECNormalize(v.toCVec(), v.toVec());
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
f32 x, y, z;
x = v.x;
y = v.y;
z = v.z;
f32 xx = x * x;
f32 yx = y * y;
f32 zz = z * z;
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * (x * x);
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * (y * y);
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * (z * z);
}
void setRotateInline2(const TVec3f &mLocalDirection, f32 fr1e) {
// The only difference from the first setRotate is that we use setInline instead of set
TVec3f v;
v.setInline(mLocalDirection);
PSVECMag(v.toCVec());
PSVECNormalize(v.toCVec(), v.toVec());
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
f32 x, y, z;
x = v.x;
y = v.y;
z = v.z;
f32 xx = x * x;
f32 yx = y * y;
f32 zz = z * z;
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * (x * x);
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * (y * y);
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * (z * z);
}
void mult33(TVec3f &) const;
void mult33(const TVec3f &, TVec3f &) const;
void mult33(const TVec3f &rDst, TVec3f &rSrc) const;
inline void getXDirInline(TVec3f &rDest) const {
f32 z = mMtx[2][0];
@ -170,15 +215,23 @@ namespace JGeometry {
rDest.set(x, y, z);
}
#ifdef NON_MATCHING
inline void mult33Inline(const TVec3f &rSrc, TVec3f &rDest) const {
rDest.set<f32>(
rSrc.z * mMtx[0][2] + (rSrc.y * mMtx[0][0] + (rSrc.x * mMtx[0][1])),
rSrc.z * mMtx[1][2] + (rSrc.y * mMtx[1][0] + (rSrc.x * mMtx[1][1])),
rSrc.z * mMtx[2][2] + (rSrc.y * mMtx[2][0] + (rSrc.x * mMtx[2][1]))
);
inline void mult33Inline(const TVec3f &rSrc, TVec3f &rDst) const {
f32 a32, a22, a12, a11, a21, vx, a31, vy, a23, a33, a13;
a32 = mMtx[2][1];
a22 = mMtx[1][1];
a12 = mMtx[0][1];
a31 = mMtx[2][0];
a21 = mMtx[1][0];
a11 = mMtx[0][0];
a33 = mMtx[2][2];
a13 = mMtx[0][2];
a23 = mMtx[1][2];
f32 x, y;
vx = rSrc.x;
vy = rSrc.y;
x = (vx * a11 + vy * a12);
rDst.set(rSrc.z * a13 + (vx * a11 + vy * a12), rSrc.z * a23 + (vx * a21 + vy * a22), rSrc.z * a33 + (rSrc.x * a31 + rSrc.y * a32));
}
#endif
};
template<class T>

View File

@ -1,8 +1,8 @@
#pragma once
#include <revolution.h>
#include "Inline.hpp"
//#include "math_types.hpp"
#include <revolution.h>
// #include "math_types.hpp"
#include "JSystem/JGeometry/TUtil.hpp"
#include <JSystem/JMath/JMath.hpp>
@ -11,29 +11,30 @@ extern const Vec gZeroVec;
namespace JGeometry {
void negateInternal(const f32 *rSrc, f32 *rDest);
template<typename T>
template <typename T>
struct TVec2 {
public:
/* Constructors */
inline TVec2() {}
template<typename T>
TVec2(T _x, T _y) {
template <typename T>
TVec2(T _x, T _y)
{
x = _x;
y = _y;
}
//inline
// inline
TVec2(const TVec2<T> &rSrc); /*{
x = rSrc.x;
y = rSrc.y;
}*/
/* General operations */
template<typename T>
template <typename T>
void set(const JGeometry::TVec2<T> &rSrc);
template<typename T>
template <typename T>
void set(T _x, T _y);
void setMin(const TVec2<T> &);
@ -56,42 +57,50 @@ namespace JGeometry {
T x, y;
};
template<typename T>
template <typename T>
struct TVec3 {
public:
/* Constructors */
inline TVec3() {}
template<typename T>
INLINE_FUNC_DECL(TVec3, T _x, T _y, T _z) {
// This constructor must be associated with data so that construct_new_array
// will use this (effectively empty) constructor. Otherwise, the compiler does not pass
// any constructor to construct_new_array. See WireGravity::setPointListSize for more details.
inline TVec3() {0.0f;}
template <typename U>
INLINE_FUNC_DECL(TVec3, U _x, U _y, U _z)
{
x = _x;
y = _y;
z = _z;
}
template<typename T>
TVec3(T _x, T _y, T _z);
template <typename U>
TVec3(U _x, U _y, U _z);
TVec3(T val) {
TVec3(T val)
{
x = val;
y = val;
z = val;
}
TVec3(T _xy, T _z) {
TVec3(T _xy, T _z)
{
x = _xy;
y = _xy;
z = _z;
}
//inline
// inline
TVec3(const TVec3<T> &rSrc); /*{
setInline(rSrc);
}*/
inline TVec3<T>(const register Vec &rSrc) NO_INLINE {
register TVec3<T>* dst = this;
register const Vec* src = &rSrc;
inline TVec3<T>(const register Vec &rSrc) NO_INLINE
{
register TVec3<T> *dst = this;
register const Vec *src = &rSrc;
register f32 z;
register f32 xy;
@ -106,27 +115,30 @@ namespace JGeometry {
/* General operations */
void set(const Vec &rSrc);
template<typename T>
void set(const JGeometry::TVec3<T> &rSrc) NO_INLINE {
template <typename T>
void set(const JGeometry::TVec3<T> &rSrc) NO_INLINE
{
x = rSrc.x;
y = rSrc.y;
z = rSrc.z;
}
template<typename T>
template <typename T>
void set(T _x, T _y, T _z);
void setZYX(T val) {
void setZYX(T val)
{
z = val;
y = val;
x = val;
}
template<typename T>
template <typename T>
void setAll(T val);
void add(const register TVec3<T> &rSrc) NO_INLINE {
register const JGeometry::TVec3<f32>* this_vec = this;
void add(const register TVec3<T> &rSrc) NO_INLINE
{
register const JGeometry::TVec3<f32> *this_vec = this;
__asm {
psq_l f3, 0(this_vec), 0, 0
psq_l f2, 0(rSrc), 0, 0
@ -138,33 +150,36 @@ namespace JGeometry {
psq_st f0, 8(this_vec), 0, 0
};
}
void addXY(const register TVec3<T> &rSrc) NO_INLINE {
register const JGeometry::TVec3<f32>* this_vec = this;
#if __MWERKS__
void addXY(const register TVec3<T> &rSrc) NO_INLINE
{
register const JGeometry::TVec3<f32> *this_vec = this;
#if __MWERKS__
psq_l f3, 0(rSrc), 0, 0
psq_st f0, 0(this_vec), 0, 0
#endif
#endif
}
void add(const TVec3<T> &, const TVec3<T> &);
void sub(const TVec3<T> &);
void sub(const TVec3<T> &, const TVec3<T> &);
void mul(const TVec3<T> &);
void mul(const TVec3<T> &, const TVec3<T> &);
void scale(T scalar) NO_INLINE {
void scale(T scalar) NO_INLINE
{
x = x * scalar;
y = y * scalar;
z = z * scalar;
}
void scale(T, const TVec3<T> &);
T setLength(T);
T setLength(const TVec3<T>, T);
T squared() const NO_INLINE {
register const JGeometry::TVec3<f32>* this_vec = this;
T squared() const NO_INLINE
{
register const JGeometry::TVec3<f32> *this_vec = this;
__asm {
psq_l f2, 0(this_vec), 0, 0
@ -176,14 +191,37 @@ namespace JGeometry {
};
}
inline T squaredInline() const
{
register const JGeometry::TVec3<f32> *this_vec = this;
register f32 _xy, _z;
__asm {
psq_l _xy, 0(this_vec), 0, 0
lfs _z, 8(this_vec)
ps_mul _xy, _xy, _xy
ps_madd _z, _z, _z, _xy
ps_sum0 _z, _z, _xy, _xy
};
return _z;
}
T squared(const TVec3<T> &) const;
T angle(const TVec3<T> &rOther) const;
inline void rejection(const TVec3<T> &rVec, const TVec3<T> &rNormal)
{
JMAVECScaleAdd(rNormal.toCVec(), rVec.toCVec(), toVec(), -rNormal.dot(rVec));
}
TVec3<T>& subtract(const TVec3<T> &, const TVec3<T> &);
void subtract(const TVec3<T> &);
T dot(const register TVec3<T> &rOther) const NO_INLINE {
register const JGeometry::TVec3<f32>* this_vec = this;
T dot(const register TVec3<T> &rOther) const NO_INLINE
{
register const JGeometry::TVec3<f32> *this_vec = this;
__asm {
psq_l f2, 4(this_vec), 0, 0
psq_l f1, 4(rOther), 0, 0
@ -197,10 +235,11 @@ namespace JGeometry {
}
void zero();
void negate() {
register const JGeometry::TVec3<f32>* this_vec = this;
void negate()
{
register const JGeometry::TVec3<f32> *this_vec = this;
__asm {
psq_l f1, 0(this_vec), 0, 0
lfs f0, 8(this_vec)
@ -214,23 +253,26 @@ namespace JGeometry {
void negate(const TVec3<T> &rSrc);
float normalize(const TVec3<T> &rSrc);
inline TVec3<T> translate(const TVec3<T>& rSrc) const {
inline TVec3<T> translate(const TVec3<T> &rSrc) const
{
TVec3<T> tmp(*this);
tmp += rSrc;
return tmp;
}
inline TVec3<T> translateOpposite(const TVec3<T> &rSrc) const {
inline TVec3<T> translateOpposite(const TVec3<T> &rSrc) const
{
TVec3<T> tmp(*this);
tmp -= rSrc;
return tmp;
}
template<typename S>
template <typename S>
void cubic(const TVec3<T> &, const TVec3<T> &, const TVec3<T> &, const TVec3<T> &, T);
bool isZero() const;
bool epsilonEquals(const TVec3<T> &a1, T a2) const NO_INLINE {
bool epsilonEquals(const TVec3<T> &a1, T a2) const NO_INLINE
{
bool ret = false;
if (JGeometry::TUtil<f32>::epsilonEquals(x, a1.x, a2)) {
if (JGeometry::TUtil<f32>::epsilonEquals(y, a1.y, a2)) {
@ -245,36 +287,41 @@ namespace JGeometry {
TVec3<T>& operator=(const TVec3<T> &);
TVec3<T> operator*=(T);
TVec3<T> operator-(const TVec3<T> &) const;
TVec3<T> operator*(T scalar) const {
TVec3<T> operator*(T scalar) const NO_INLINE
{
TVec3<T> f = *this;
f.scale(scalar);
return f;
}
TVec3<T> operator-(const TVec3<T> &rhs) {
TVec3<T> operator-(const TVec3<T> &rhs) const NO_INLINE
{
TVec3<T> vec = *this;
JMathInlineVEC::PSVECSubtract(vec.toCVec(), rhs.toCVec(), vec.toVec());
return vec;
}
TVec3<T>& operator-=(const TVec3<T> &rhs) {
TVec3<T>& operator-=(const TVec3<T> &rhs) NO_INLINE
{
JMathInlineVEC::PSVECSubtract(toCVec(), rhs.toCVec(), toVec());
return *this;
}
TVec3<T> operator+(const TVec3<T> &rhs) const {
TVec3<T> operator+(const TVec3<T> &rhs) const NO_INLINE
{
TVec3<T> vec = *this;
JMathInlineVEC::PSVECAdd(vec.toCVec(), rhs.toCVec(), vec.toVec());
return vec;
}
TVec3<T>& operator+=(const TVec3<T> &rhs) {
TVec3<T>& operator+=(const TVec3<T> &rhs) NO_INLINE
{
JMathInlineVEC::PSVECAdd(toCVec(), rhs.toCVec(), toVec());
return *this;
}
const TVec3<T> operator-() const NO_INLINE {
const TVec3<T> operator-() const NO_INLINE
{
register f32 z, xy;
__asm {
psq_l xy, 0(r4), 0, 0
@ -284,48 +331,56 @@ namespace JGeometry {
psq_st xy, 0(r3), 0, 0
stfs z, 8(r3)
blr
}
};
}
TVec3<T> operator%(T scalar) const {
TVec3<T> operator%(T scalar) const
{
TVec3<T> f = *this;
f.scale(scalar);
return f;
}
inline TVec3<T> multInline2(T scalar) const
{
TVec3<T> f(*this);
f.scaleInline(scalar);
return f;
}
TVec3<T> operator/(T) const;
bool operator==(const TVec3<T> &);
/* Helper inline functions */
inline void setInline(const TVec3<T> &src) {
inline void setInline(const TVec3<T> &src)
{
x = src.x;
y = src.y;
z = src.z;
}
inline void setInline(T _x, T _y, T _z) {
inline void setInline(T _x, T _y, T _z)
{
x = _x;
y = _y;
z = _z;
}
inline void setInline(T val) {
inline void setInline(T val)
{
x = val;
y = val;
z = val;
}
inline Vec* toVec() {
return (Vec*)this;
}
inline Vec *toVec() { return (Vec *)this; }
inline const Vec* toCVec() const {
return (const Vec*)this;
}
inline const Vec *toCVec() const { return (const Vec *)this; }
inline void setInlinePS(register const TVec3<T> &src) {
register TVec3<T>* dst = this;
inline void setInlinePS(register const TVec3<T> &src)
{
register TVec3<T> *dst = this;
register f32 xy;
register f32 z;
@ -337,8 +392,9 @@ namespace JGeometry {
};
}
inline void setInlinePS_2(register const TVec3<T> &src) {
register TVec3<T>* dst = this;
inline void setInlinePS_2(register const TVec3<T> &src)
{
register TVec3<T> *dst = this;
register f32 z;
register f32 xy;
@ -350,8 +406,9 @@ namespace JGeometry {
};
}
inline void setInlineXYPS(register const TVec3<T> &src) {
register TVec3<T>* dst = this;
inline void setInlineXYPS(register const TVec3<T> &src)
{
register TVec3<T> *dst = this;
register f32 xy, scalar, _z;
__asm {
@ -359,6 +416,7 @@ namespace JGeometry {
lfs _z, 8(src)
psq_st xy, 0(dst), 0, 0
};
scalar = 500.0f;
f32 __z = _z;
@ -372,9 +430,10 @@ namespace JGeometry {
x = _y;
}
inline void setZero() {
register TVec3<T>* dst = this;
register const Vec* src = &gZeroVec;
inline void setZero()
{
register TVec3<T> *dst = this;
register const Vec *src = &gZeroVec;
register f32 z;
register f32 xy;
@ -386,21 +445,23 @@ namespace JGeometry {
};
}
inline void scaleInline(T scale) {
inline void scaleInline(T scale)
{
x *= scale;
y *= scale;
z *= scale;
}
inline void addInline(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
inline void addInline(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
register f32 aXY, bXY, aZ, bZ;
__asm {
psq_l aXY, 0(dst), 0, 0
psq_l bXY, 0(rOther), 0, 0
psq_l aZ, 8(dst), 1, 0
psq_l bZ, 0(rOther), 1, 0
psq_l bZ, 8(rOther), 1, 0
ps_add bXY, aXY, bXY
ps_add bZ, aZ, bZ
psq_st bXY, 0(dst), 0, 0
@ -408,8 +469,9 @@ namespace JGeometry {
};
}
inline void addInline2(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
inline void addInline2(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
register f32 _2, _1, _0;
__asm {
@ -424,12 +486,12 @@ namespace JGeometry {
};
}
inline void addInline3(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
//register f32 _2, _1, _0;
inline void addInline3(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
// register f32 _2, _1, _0;
register f32 dstXY, dstZ, srcXY, srcZ, totalZ;
__asm {
psq_l dstXY, 0(dst), 0, 0
psq_l srcXY, 0(rOther), 0, 0
@ -442,8 +504,9 @@ namespace JGeometry {
};
}
inline void addInline_4(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
inline void addInline_4(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
register f32 bZ, bXY, aZ, aXY;
__asm {
@ -458,8 +521,9 @@ namespace JGeometry {
};
}
inline void addInline_5(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
inline void addInline_5(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
register f32 bZ, bXY, aZ, aXY;
__asm {
@ -474,31 +538,60 @@ namespace JGeometry {
};
}
inline void addInline6(register const TVec3<T> &rOther) {
register TVec3<T>* dst = this;
//register f32 _2, _1, _0;
register f32 totalZ, dstZ, dstXY, srcZ, srcXY;
inline void addInline6(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
// register f32 _2, _1, _0;
register f32 totalZ, dstZ, dstXY, srcZ, srcXY;
#if __MWERKS__
#if __MWERKS__
__asm volatile {
psq_l dstXY, 0(dst), 0, 0
psq_l srcXY, 0(rOther), 0, 0
psq_l dstZ, 8(dst), 1, 0
ps_add dstXY, dstXY, srcXY
psq_l srcZ, 8(rOther), 1, 0
ps_add totalZ, dstZ, srcZ
psq_st dstXY, 0(dst), 0, 0
psq_st totalZ, 8(dst), 1, 0
psq_l dstXY, 0(dst), 0, 0
psq_l srcXY, 0(rOther), 0, 0
psq_l dstZ, 8(dst), 1, 0
ps_add dstXY, dstXY, srcXY
psq_l srcZ, 8(rOther), 1, 0
ps_add totalZ, dstZ, srcZ
psq_st dstXY, 0(dst), 0, 0
psq_st totalZ, 8(dst), 1, 0
};
#endif
#endif
}
inline void subInline(const TVec3<T>& rA, const TVec3<T>& rB) {
register TVec3<T>* dst = this;
register const TVec3<T>* a = &rA;
register const TVec3<T>* b = &rB;
register f32 aXY, aZ, bZ, bXY;
z = rB.z;
inline void addInline_7(register const TVec3<T> &rOther)
{
register TVec3<T> *dst = this;
register f32 sumZ, bZ, aZ, bXY, aXY;
__asm {
psq_l bXY, 0(rOther), 0, 0
psq_l aXY, 0(dst), 0, 0
psq_l aZ, 8(dst), 1, 0
ps_add aXY, aXY, bXY
psq_l bZ, 8(rOther), 1, 0
ps_add sumZ, aZ, bZ
psq_st aXY, 0(dst), 0, 0
psq_st sumZ, 8(dst), 1, 0
};
}
inline TVec3<T> _madd(const TVec3<T> &v) const {
TVec3<T> ret(*this);
ret.addInline_7(v);
return ret;
}
inline TVec3<T> madd(f32 scale, const TVec3<T> &v) const {
return _madd(v * scale);
}
inline void subInline(const TVec3<T> &rA, const TVec3<T> &rB)
{
register TVec3<T> *dst = this;
register const TVec3<T> *a = &rA;
register const TVec3<T> *b = &rB;
register f32 aXY, bZ, aZ, bXY;
z = rA.z;
__asm {
psq_l aXY, 0(a), 0, 0
@ -506,16 +599,17 @@ namespace JGeometry {
psq_l aZ, 8(dst), 1, 0
psq_l bZ, 8(b), 1, 0
ps_sub bXY, aXY, bXY
ps_sub bZ, aZ, bZ
ps_sub aZ, aZ, bZ
psq_st bXY, 0(dst), 0, 0
psq_st bZ, 8(dst), 1, 0
psq_st aZ, 8(dst), 1, 0
};
}
inline void subInline2(const TVec3<T>& rA, const TVec3<T>& rB) {
register TVec3<T>* dst = this;
register const TVec3<T>* a = &rA;
register const TVec3<T>* b = &rB;
inline void subInline2(const TVec3<T> &rA, const TVec3<T> &rB)
{
register TVec3<T> *dst = this;
register const TVec3<T> *a = &rA;
register const TVec3<T> *b = &rB;
register f32 bXY, aXY, bZ, aZ;
__asm {
@ -530,10 +624,11 @@ namespace JGeometry {
};
}
inline void subInline3(const TVec3<T>& rA, const TVec3<T>& rB) {
register TVec3<T>* dst = this;
register const TVec3<T>* a = &rA;
register const TVec3<T>* b = &rB;
inline void subInline3(const TVec3<T> &rA, const TVec3<T> &rB)
{
register TVec3<T> *dst = this;
register const TVec3<T> *a = &rA;
register const TVec3<T> *b = &rB;
register f32 bZ, bXY, aXY, aZ;
__asm {
@ -548,9 +643,10 @@ namespace JGeometry {
};
}
inline void subInline(const TVec3<T>& rA) {
register TVec3<T>* this_vec = this;
register const TVec3<T>* a = &rA;
inline void subInline(const TVec3<T> &rA)
{
register TVec3<T> *this_vec = this;
register const TVec3<T> *a = &rA;
register f32 bZ, aZ, aXY, bXY;
__asm {
@ -565,10 +661,28 @@ namespace JGeometry {
};
}
inline const TVec3<T> negateInline() const {
inline void subInline4(register const TVec3<T> &rVec)
{
register const TVec3<T> *this_vec = this;
//register const TVec3<T> *a = &rVec;
register f32 z_2, z_1, xy_2, xy_1, z_ret, xy_ret;
__asm {
psq_l xy_2, 0(rVec), 0, 0
psq_l xy_1, 0(this_vec), 0, 0
psq_l z_1, 8(this_vec), 1, 0
ps_sub xy_ret, xy_1, xy_2
psq_l z_2, 8(rVec), 1, 0
ps_sub z_ret, z_1, z_2
psq_st xy_ret, 0(this_vec), 0, 0
psq_st z_ret, 8(this_vec), 1, 0
};
}
inline const TVec3<T> negateInline() const
{
TVec3<T> ret;
register const TVec3<T>* src = this;
register TVec3<T>* dest = &ret;
register const TVec3<T> *src = this;
register TVec3<T> *dest = &ret;
register f32 xy, z;
__asm {
@ -578,15 +692,16 @@ namespace JGeometry {
lfs z, 8(src)
fneg z, z
stfs z, 8(dest)
}
};
return ret;
}
inline const TVec3<T> negateInlineAndScale(T scalar) const {
inline const TVec3<T> negateInlineAndScale(T scalar) const
{
TVec3<T> ret;
register const TVec3<T>* src = this;
register TVec3<T>* dest = &ret;
register const TVec3<T> *src = this;
register TVec3<T> *dest = &ret;
register f32 xy, z;
__asm {
@ -596,63 +711,55 @@ namespace JGeometry {
lfs z, 8(src)
fneg z, z
stfs z, 8(dest)
}
};
TVec3f trueRet = TVec3f(ret);
trueRet.scale(scalar);
return trueRet;
}
inline const TVec3<T> negateInline_2() const {
TVec3<T> ret;
register const TVec3<T>* src = this;
register TVec3<T>* dst = &ret;
register f32 xy, z;
inline void negateInline(register const TVec3<T> &rSrc)
{
register TVec3<T> *dst = this;
register f32 xy;
register f32 z;
__asm {
psq_l xy, 0(src), 0, 0
lfs z, 8(src)
psq_l xy, 0(rSrc), 0, 0
lfs z, 8(rSrc)
ps_neg xy, xy
fneg z, z
psq_st xy, 0(dst), 0, 0
stfs z, 8(dst)
}
};
}
inline void negateInline_2(register const TVec3<T> &rSrc)
{
register TVec3<T> *dst = this;
register f32 xy;
register f32 z;
__asm {
psq_l xy, 0(rSrc), 0, 0
ps_neg xy, xy
psq_st xy, 0(dst), 0, 0
lfs z, 8(rSrc)
fneg z, z
stfs z, 8(dst)
};
}
inline TVec3<T> negateInline_2() const
{
TVec3<T> ret;
ret.negateInline_2(*this);
return ret;
}
inline void negateInline(register const TVec3<T> &rSrc) {
register TVec3<T>* dst = this;
register f32 xy;
register f32 z;
__asm {
psq_l xy, 0(rSrc), 0, 0
lfs z, 8(rSrc)
ps_neg xy, xy
fneg z, z
psq_st xy, 0(dst), 0, 0
stfs z, 8(dst)
}
}
inline void negateInline_2(register const TVec3<T> &rSrc) {
register TVec3<T>* dst = this;
register f32 xy;
register f32 z;
__asm {
psq_l xy, 0(rSrc), 0, 0
ps_neg xy, xy
psq_st xy, 0(dst), 0, 0
lfs z, 8(rSrc)
fneg z, z
stfs z, 8(dst)
}
}
inline void negateInlineAndStore(register const TVec3<T> &rSrc, register TVec3<T> &rDest) {
register TVec3<T>* dst = this;
inline void negateInlineAndStore(register const TVec3<T> &rSrc, register TVec3<T> &rDest)
{
register TVec3<T> *dst = this;
register f32 xy;
register f32 z_neg, x, y, z, z_single;
@ -670,12 +777,13 @@ namespace JGeometry {
stfs x, 0(rDest)
stfs y, 4(rDest)
stfs z_single, 8(rDest)
}
};
}
inline void negateSelf() {
register TVec3<T>* src = this;
register TVec3<T>* dst = this;
inline void negateSelf()
{
register TVec3<T> *src = this;
register TVec3<T> *dst = this;
register f32 xy;
register f32 z;
@ -686,10 +794,11 @@ namespace JGeometry {
lfs z, 8(src)
fneg z, z
stfs z, 8(dst)
}
};
}
inline void setNegatedInline(register const TVec3<T> &rSrc) {
inline void setNegatedInline(register const TVec3<T> &rSrc)
{
register TVec3<T> *rDst = this;
register f32 xy;
register f32 z;
@ -701,17 +810,19 @@ namespace JGeometry {
lfs z, 8(rSrc)
fneg z, z
stfs z, 8(rDst)
}
};
}
inline void multAndSet(TVec3<T> *pDest, T scalar) {
inline void multAndSet(TVec3<T> *pDest, T scalar)
{
TVec3<T> mult_res = *this * scalar;
pDest->x = mult_res.x;
pDest->y = mult_res.y;
pDest->z = mult_res.z;
}
inline void multPS(register TVec3<T> &rVec1, register TVec3<T> &rVec2) {
inline void multPS(register TVec3<T> &rVec1, register TVec3<T> &rVec2)
{
register TVec3<T> *rDst = this;
register f32 xy_1, xy_2;
register f32 z_1, z_2;
@ -725,7 +836,27 @@ namespace JGeometry {
lfs z_2, 8(rVec1)
fmuls z_2, z_1, z_2
stfs z_2, 8(rDst)
}
};
}
inline f32 squareDistancePS(const register TVec3<T> &rVec1) const
{
register const TVec3<T> *this_vec = this;
register f32 yz_1, x_1;
register f32 yz_2, x_2;
register f32 ret;
__asm {
psq_l yz_1, 4(this_vec), 0, 0
psq_l yz_2, 4(rVec1), 0, 0
psq_l x_1, 0(this_vec), 0, 0
ps_sub yz_2, yz_1, yz_2
psq_l x_2, 0(rVec1), 0, 0
ps_sub x_2, x_1, x_2
ps_mul yz_2, yz_2, yz_2
ps_madd ret, x_2, x_2, yz_2
ps_sum0 ret, ret, yz_2, yz_2
};
return ret;
}
T x, y, z;
@ -738,14 +869,15 @@ namespace JGeometry {
x = _z;
}*/
template<typename T>
template <typename T>
struct TVec4 {
public:
/* Constructors */
inline TVec4() {}
template<typename T>
TVec4(T _x, T _y, T _z, T _h) {
template <typename T>
TVec4(T _x, T _y, T _z, T _h)
{
x = _x;
y = _y;
z = _z;
@ -753,11 +885,12 @@ namespace JGeometry {
}
/* General operations */
template<typename T>
template <typename T>
void set(const JGeometry::TVec4<T> &);
template<typename T>
void set(T _x, T _y, T _z, T _h) {
template <typename T>
void set(T _x, T _y, T _z, T _h)
{
x = _x;
y = _y;
z = _z;
@ -768,7 +901,7 @@ namespace JGeometry {
T x, y, z, h;
};
};
}; // namespace JGeometry
typedef JGeometry::TVec2<f32> TVec2f;
typedef JGeometry::TVec3<f32> TVec3f;

View File

@ -1,37 +1,40 @@
#pragma once
#include <math_types.hpp>
#include <revolution.h>
namespace std {
template <typename A1, typename B1>
struct pair {
A1 a1;
B1 b1;
pair() {
a1 = A1();
b1 = B1();
}
};
} // namespace std
template <typename A1, typename B1>
struct pair {
A1 a1;
B1 b1;
pair()
{
a1 = A1();
b1 = B1();
}
};
} // namespace std
namespace JMath
{
template<s32 Len, typename T>
namespace JMath {
template <s32 Bits, typename T>
class TSinCosTable {
public:
std::pair<f32, f32> table[Len];
static const u32 LEN = 1 << Bits;
std::pair<f32, f32> table[LEN];
f32 sinShort(s8 v) const { return table[static_cast<u8>(v) >> 3].a1; }
f32 cosShort(s8 v) const { return table[static_cast<u8>(v) >> 3].b1; }
inline f32 sinLap(f32 v) {
inline f32 sinLap(f32 v)
{
if (v < 0.0f) {
v *= -2607.5945f;
return -table[(u16)v & 0x3FFF].a1;
v *= -LEN / TWO_PI;
return -table[(u16)v & LEN - 1].a1;
}
else {
v *= 2607.5945f;
return table[(u16)v & 0x3FFF].a1;
v *= LEN / TWO_PI;
return table[(u16)v & LEN - 1].a1;
}
}
@ -39,20 +42,16 @@ namespace JMath
if (v < 0.0f) {
v = -v;
}
// 45.511112f == LEN / TWO_PI * PI / 180
v = 45.511112f * v;
return table[(u16)v & 0x3FFF].b1;
}
inline f32 get(f32 v) {
return table[(u16)v & 0x3FFF].b1;
return table[(u16)v & LEN - 1].b1;
}
inline f32 get(f32 v) { return table[(u16)v & LEN - 1].b1; }
};
template<s32 Len, typename T>
class TAtanTable
{
template <s32 Len, typename T>
class TAtanTable {
public:
TAtanTable();
@ -63,9 +62,8 @@ namespace JMath
T _1000;
};
template<s32 Len, typename T>
class TAsinAcosTable
{
template <s32 Len, typename T>
class TAsinAcosTable {
public:
TAsinAcosTable();
@ -78,12 +76,14 @@ namespace JMath
static TSinCosTable<14, f32> sSinCosTable;
static TAtanTable<1024, f32> sAtanTable;
static TAsinAcosTable<1024, f32> sAsinAcosTable;
};
}; // namespace JMath
inline f32 JMASSin(u16 s) {
inline f32 JMASSin(u16 s)
{
return JMath::sSinCosTable.sinShort(s);
}
inline f32 JMASCos(u16 s) {
inline f32 JMASCos(u16 s)
{
return JMath::sSinCosTable.cosShort(s);
}

View File

@ -2,6 +2,24 @@
#include "JSystem/JMath/JMath.hpp"
#include "Game/Util.hpp"
template<>
void TRot3f::mult33(const TVec3f &rSrc, TVec3f &rDst) const {
f32 a32, a22, a12, a31, a21, a11, a13, a33, a23;
a32 = mMtx[2][1];
a22 = mMtx[1][1];
a12 = mMtx[0][1];
a31 = mMtx[2][0];
a21 = mMtx[1][0];
a11 = mMtx[0][0];
a33 = mMtx[2][2];
a13 = mMtx[0][2];
a23 = mMtx[1][2];
rDst.set(rSrc.z * a13 + (rSrc.x * a11 + rSrc.y * a12), rSrc.z * a23 + (rSrc.x * a21 + rSrc.y * a22), rSrc.z * a33 + (rSrc.x * a31 + rSrc.y * a32));
}
AreaFormCube::AreaFormCube(int a1) {
_4 = 0;
_8 = a1;

View File

@ -0,0 +1,13 @@
#include <JSystem/JGeometry/TMatrix.hpp>
template<>
void TVec3f::scale(f32 scalar, const TVec3f &rOther) {
x = rOther.x * scalar;
y = rOther.y * scalar;
z = rOther.z * scalar;
}
template<>
void TRot3f::mult33(TVec3f &rDst) const {
mult33Inline(rDst, rDst);
}

View File

@ -4,6 +4,19 @@
#include <JSystem/JMath.hpp>
#include <JSystem/JMath/JMATrigonometric.hpp>
// JGeometry functions are painful to match, so this just gives the gist
#ifdef NON_MATCHING
template<>
void TVec3f::cubic(const TVec3f &rv1, const TVec3f &rv2, const TVec3f &rv3, const TVec3f &rv4, f32 a) {
set(
rv3 * (a * a * a - a * a)
+ rv2 * (a + a * a * a - 2.0f * a * a)
+ rv1 * (1.0f + 2.0f * a * a * a - 3.0f * a * a)
+ rv4 * (3.0f * a * a - 2.0f * a * a * a)
);
}
#endif
void SkeletalFishGuard::init(const JMapInfoIter &rIter) {
initModelManagerWithAnm("SkeletalFishGuard", nullptr, false);
MR::addToAttributeGroupSearchTurtle(this);

View File

@ -1,9 +1,9 @@
#include "Game/Gravity.hpp"
ConeGravity::ConeGravity() : PlanetGravity() {
_88 = 360.0f;
_8C = -1.0f;
_90 = 0.0f;
mValidDegree = 360.0f;
mValidCos = -1.0f;
mWorldRadius = 0.0f;
mEnableBottom = true;
mTopCutRate = 0.0f;
mLocalMtx.identity();
@ -20,21 +20,173 @@ void ConeGravity::setEnableBottom(bool val) {
}
void ConeGravity::setTopCutRate(f32 val) {
if (val < 0.0f)
val = 0.0f;
else if (val > 1.0f)
val = 1.0f;
mTopCutRate = val < 0.0f ? 0.0f : val > 1.0f ? 1.0f : val;
}
mTopCutRate = val;
inline f32 absfInline(f32 &orig, f32 v) {
orig = v;
return __fabsf(v);
}
bool ConeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
TVec3f worldBaseCenter, worldCentralAxis;
mWorldMtx.getYDir(worldCentralAxis);
mWorldMtx.getTransInline(worldBaseCenter);
TVec3f unitWorldCentralAxis;
f32 centralAxisLength;
MR::separateScalarAndDirection(&centralAxisLength, &unitWorldCentralAxis, worldCentralAxis);
TVec3f relativePosition = rPos - worldBaseCenter;
TVec3f positionOnBasePlane;
positionOnBasePlane.rejection(relativePosition, unitWorldCentralAxis);
if(MR::isNearZero(positionOnBasePlane, 0.00100000005f)) {
f32 positionOnCentralAxis;
f32 distance = absfInline(positionOnCentralAxis, relativePosition.dot(unitWorldCentralAxis));
if(positionOnCentralAxis > 0.0f) {
f32 height = centralAxisLength * (1.0f - mTopCutRate);
distance -= height;
if(distance < 0.0f) {
distance = 0.0f;
}
}
if(!isInRangeDistance(distance)) {
return false;
}
if(positionOnCentralAxis > 0.0f) {
pDest->set(-unitWorldCentralAxis);
}
else {
pDest->set(unitWorldCentralAxis);
}
*pScalar = distance;
return true;
}
f32 distanceToCentralAxis = PSVECMag(positionOnBasePlane.toCVec());
f32 centralAxisY = unitWorldCentralAxis.dot(relativePosition);
bool isInsideCone = false;
if(MR::isNearZero(centralAxisLength, 0.00100000005f) || MR::isNearZero(mWorldRadius, 0.00100000005f)) {
// The cone is too small to have an inner region
isInsideCone = false;
}
else if(distanceToCentralAxis < mWorldRadius - centralAxisY * (mWorldRadius / centralAxisLength)) {
isInsideCone = true;
}
TVec3f pointOfAttraction;
TVec3f dirOnDirectrix = worldBaseCenter + positionOnBasePlane * (mWorldRadius / distanceToCentralAxis);
TVec3f apex = worldBaseCenter + worldCentralAxis;
if(relativePosition.dot(worldCentralAxis) < 0.0f) {
if(!mEnableBottom) {
return false;
}
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, worldBaseCenter, dirOnDirectrix);
if(MR::isNearZero(pointOfAttraction - rPos, 0.00100000005f)) {
*pDest = -unitWorldCentralAxis;
*pScalar = 0.0f;
return true;
}
else {
return calcGravityFromMassPosition(pDest, pScalar, rPos, pointOfAttraction);
}
}
if(mTopCutRate < 0.00999999978f) {
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, dirOnDirectrix, apex);
}
else {
TVec3f generatrixTermination;
generatrixTermination.set(apex * (1.0f - mTopCutRate) + dirOnDirectrix * mTopCutRate);
TVec3f frustumBaseCenter;
frustumBaseCenter.set(worldBaseCenter + worldCentralAxis * (1.0f - mTopCutRate));
if((rPos - generatrixTermination).dot(generatrixTermination - frustumBaseCenter) <= 0.0f) {
// Attracted to the frustum
f32 distanceToCentralAxis = unitWorldCentralAxis.dot(rPos - frustumBaseCenter);
if(distanceToCentralAxis < 0.0f) {
distanceToCentralAxis = 0.0f;
}
if(isInRangeDistance(distanceToCentralAxis)) {
*pDest = -unitWorldCentralAxis;
*pScalar = distanceToCentralAxis;
return true;
}
else {
return false;
}
}
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, dirOnDirectrix, generatrixTermination);
}
if(MR::isNearZero(pointOfAttraction - rPos, 0.00100000005f)) {
TVec3f generatrixDirection = apex - dirOnDirectrix;
MR::normalizeOrZero(&generatrixDirection);
TVec3f gravity;
gravity.rejection(-positionOnBasePlane, generatrixDirection);
if(MR::isNearZero(gravity, 0.00100000005f)) {
*pDest = -unitWorldCentralAxis;
}
else {
MR::normalize(gravity, pDest);
}
*pScalar = 0.0f;
return true;
}
if(isInsideCone) {
MR::normalize(rPos - pointOfAttraction, pDest);
*pScalar = 0.0f;
return true;
}
return calcGravityFromMassPosition(pDest, pScalar, rPos, pointOfAttraction);
}
void ConeGravity::updateMtx(const TPos3f &rMtx) {
mWorldMtx.concat(rMtx, mLocalMtx);
TVec3f dirX;
mWorldMtx.getXDirInline(dirX);
_90 = VECMag(reinterpret_cast<Vec*>(&dirX));
TVec3f sideVec;
mWorldMtx.getXDirInline(sideVec);
mWorldRadius = PSVECMag(sideVec.toCVec());
TVec3f dirY; // unused
mWorldMtx.getYDir(dirY);
TVec3f axis; // unused
mWorldMtx.getYDir(axis);
// The developers could have left this in because there originally was a height member
// that they would set to ||axis|| * (1.0f - mTopCutRate)
}

View File

@ -2,305 +2,406 @@
#include "Game/Util/MathUtil.hpp"
#include "JSystem/JMath/JMath.hpp"
template<>
bool TVec3f::isZero() const {
register const TVec3f *rSrc = this;
register f32 sum;
#define REGION_NEGATIVE_X 0
#define REGION_BETWEEN_X 1
#define REGION_POSITIVE_X 2
__asm {
#define REGION_NEGATIVE_Y 0
#define REGION_BETWEEN_Y 3
#define REGION_POSITIVE_Y 6
#define REGION_NEGATIVE_Z 0
#define REGION_BETWEEN_Z 9
#define REGION_POSITIVE_Z 18
#define ENCODE_REGION(x, y, z) \
(x + y + z)
#define REGION_X_FACE_POSITIVE ENCODE_REGION(REGION_POSITIVE_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)
#define REGION_X_FACE_NEGATIVE ENCODE_REGION(REGION_NEGATIVE_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)
#define REGION_Y_FACE_POSITIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_POSITIVE_Y, REGION_BETWEEN_Z)
#define REGION_Y_FACE_NEGATIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_NEGATIVE_Y, REGION_BETWEEN_Z)
#define REGION_Z_FACE_POSITIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_POSITIVE_Z)
#define REGION_Z_FACE_NEGATIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_NEGATIVE_Z)
#define AXIS_X 1
#define AXIS_Y 3
#define AXIS_Z 9
#define ENCODE_EDGE(axis, half1, half2) \
(axis + half1 + half2)
#define ENCODE_CORNER(signumx, signumy, signumz) \
((signumx + 1) + (signumy + 1) * 3 + (signumz + 1) * 9)
template <>
bool TVec3f::isZero() const
{
register const TVec3f *rSrc = this;
register f32 sum;
__asm {
psq_l f1, 0(rSrc), 0, 0
lfs sum, 8(rSrc)
ps_mul f1, f1, f1
ps_madd sum, sum, sum, f1
ps_sum0 sum, sum, f1, f1
};
};
return sum <= 0.0000038146973f;
return sum <= 0.0000038146973f;
}
template<>
float TVec3f::normalize(const TVec3f& rSrc) {
x = rSrc.x;
y = rSrc.y;
z = rSrc.z;
float magnitude = PSVECMag(toCVec());
PSVECNormalize(toCVec(), toVec());
return magnitude;
template <>
float TVec3f::normalize(const TVec3f &rSrc)
{
x = rSrc.x;
y = rSrc.y;
z = rSrc.z;
float magnitude = PSVECMag(toCVec());
PSVECNormalize(toCVec(), toVec());
return magnitude;
}
CubeGravity::CubeGravity() : PlanetGravity() {
CubeGravity::CubeGravity() : PlanetGravity()
{
lenX = 1.0;
lenY = 1.0;
lenZ = 1.0;
mActiveFaces = 63;
lenX = 1.0;
lenY = 1.0;
lenZ = 1.0;
mActiveFaces = 63;
mCube.identity();
mPosition.identity();
mCube.identity();
mPosition.identity();
}
void CubeGravity::setCube(const TPos3f & cube) {
mCube = cube;
updateIdentityMtx();
void CubeGravity::setCube(const TPos3f &rCube)
{
mCube = rCube;
updateIdentityMtx();
}
void CubeGravity::updateMtx(const TPos3f &rMtx) {
mPosition.concat(rMtx, mCube);
TVec3f dir;
mPosition.getXDir(dir);
lenX = VECMag(dir.toCVec());
mPosition.getYDir(dir);
lenY = VECMag(dir.toCVec());
mPosition.getZDir(dir);
lenZ = VECMag(dir.toCVec());
void CubeGravity::updateMtx(const TPos3f &rMtx)
{
mPosition.concat(rMtx, mCube);
TVec3f dir;
mPosition.getXDir(dir);
lenX = PSVECMag(dir.toCVec());
mPosition.getYDir(dir);
lenY = PSVECMag(dir.toCVec());
mPosition.getZDir(dir);
lenZ = PSVECMag(dir.toCVec());
}
bool CubeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
int area = calcGravityArea(rPosition);
if(area < 0) return false;
TVec3f gravityForce;
float scalar;
if (
!calcFaceGravity(rPosition, area, &gravityForce, &scalar)
&& !calcCornerGravity(rPosition, area, &gravityForce, &scalar)
&& !calcEdgeGravity(rPosition, area, &gravityForce, &scalar)
) return false;
if(isInRangeDistance(scalar)) return false;
bool CubeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const
{
int area = calcGravityArea(rPosition);
if (area < 0) {
return false;
}
TVec3f gravityForce;
float scalar;
if (!calcFaceGravity(rPosition, area, &gravityForce, &scalar) && !calcCornerGravity(rPosition, area, &gravityForce, &scalar) && !calcEdgeGravity(rPosition, area, &gravityForce, &scalar)) {
return false;
}
if(pDest != NULL)
*pDest = gravityForce;
if (isInRangeDistance(scalar)) {
return false;
}
if(pScalar != NULL)
*pScalar = scalar;
return true;
if (pDest != NULL) {
*pDest = gravityForce;
}
if (pScalar != NULL) {
*pScalar = scalar;
}
return true;
}
int CubeGravity::calcGravityArea(const TVec3f &rPosition) const { // Area as in region, not area as in Area = Base * h
TVec3f dirX, dirY, dirZ, trans;
mPosition.getXDir(dirX);
mPosition.getYDir(dirY);
mPosition.getZDir(dirZ);
mPosition.getTrans(trans);
TVec3f relativePosition = rPosition - trans;
int area; // Region of the cube
float xDirDistance = relativePosition.dot(dirX) / lenX, yDirDistance = relativePosition.dot(dirY) / lenY, zDirDistance = relativePosition.dot(dirZ) / lenZ;
int CubeGravity::calcGravityArea(const TVec3f &rPosition) const
{
TVec3f dirX, dirY, dirZ, trans;
mPosition.getXDir(dirX);
mPosition.getYDir(dirY);
mPosition.getZDir(dirZ);
mPosition.getTrans(trans);
TVec3f relativePosition = rPosition - trans;
int area; // Region of the cube
float xDirDistance = relativePosition.dot(dirX) / lenX, yDirDistance = relativePosition.dot(dirY) / lenY, zDirDistance = relativePosition.dot(dirZ) / lenZ;
if(xDirDistance < -lenX) {
if((mActiveFaces & 2) != 2) return -1;
area = 0;
}
else {
if(xDirDistance <= lenX) {
area = 1;
}
else {
if((mActiveFaces & 1) != 1) return -1;
area = 2;
}
}
if (xDirDistance < -lenX) {
if ((mActiveFaces & 2) != 2) {
return -1;
}
area = REGION_NEGATIVE_X;
}
else {
if (xDirDistance <= lenX) {
area = REGION_BETWEEN_X;
}
else {
if ((mActiveFaces & 1) != 1) {
return -1;
}
area = REGION_POSITIVE_X;
}
}
if(yDirDistance < -lenY) {
if((mActiveFaces & 8) != 8) return -1;
}
else {
if(yDirDistance <= lenY) {
area += 3;
}
else {
if((mActiveFaces & 4) != 4) return -1;
area += 6;
}
}
if(zDirDistance < -lenZ) {
if((mActiveFaces & 32) != 32) return -1;
}
else {
if(zDirDistance <= lenZ) {
area += 9;
}
else {
if((mActiveFaces & 16) != 16) return -1;
area += 18;
}
}
return area;
if (yDirDistance < -lenY) {
if ((mActiveFaces & 8) != 8) {
return -1;
}
area += REGION_NEGATIVE_Y;
}
else {
if (yDirDistance <= lenY) {
area += REGION_BETWEEN_Y;
}
else {
if ((mActiveFaces & 4) != 4) {
return -1;
}
area += REGION_POSITIVE_Y;
}
}
if (zDirDistance < -lenZ) {
if ((mActiveFaces & 32) != 32) {
return -1;
}
area += REGION_NEGATIVE_Z;
}
else {
if (zDirDistance <= lenZ) {
area += REGION_BETWEEN_Z;
}
else {
if ((mActiveFaces & 16) != 16) {
return -1;
}
area += REGION_POSITIVE_Z;
}
}
return area;
}
bool CubeGravity::calcFaceGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
TVec3f antiFaceDir; // Negative of the normal vector of the face an object is on
switch(area) {
case 4:
mPosition.getZDir(antiFaceDir);
break;
case 10:
mPosition.getYDir(antiFaceDir);
break;
case 12:
mPosition.getXDir(antiFaceDir);
break;
case 14:
mPosition.getXDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
case 16:
mPosition.getYDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
case 22:
mPosition.getZDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
default:
return false;
}
TVec3f trans;
f32 distance; // Double-check what this really is
mPosition.getTrans(trans);
MR::separateScalarAndDirection(&distance, &antiFaceDir, antiFaceDir);
float gravityMagnitude = antiFaceDir.dot(trans - rPosition) / distance;
if(gravityMagnitude < 0.f) gravityMagnitude = 0.f;
*pDest = antiFaceDir;
*pScalar = gravityMagnitude;
return true;
bool CubeGravity::calcFaceGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
{
TVec3f antiFaceDir; // Negative of the normal vector of the face an object is on
switch (area) {
case REGION_Z_FACE_NEGATIVE:
mPosition.getZDir(antiFaceDir);
break;
case REGION_Y_FACE_NEGATIVE:
mPosition.getYDir(antiFaceDir);
break;
case REGION_X_FACE_NEGATIVE:
mPosition.getXDir(antiFaceDir);
break;
case REGION_X_FACE_POSITIVE:
mPosition.getXDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
case REGION_Y_FACE_POSITIVE:
mPosition.getYDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
case REGION_Z_FACE_POSITIVE:
mPosition.getZDir(antiFaceDir);
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
break;
default:
return false;
}
TVec3f trans;
f32 length;
mPosition.getTrans(trans);
MR::separateScalarAndDirection(&length, &antiFaceDir, antiFaceDir);
float height = antiFaceDir.dot(trans - rPosition) - length;
if (height < 0.0f) {
height = 0.0f;
}
*pDest = antiFaceDir;
*pScalar = height;
return true;
}
void helperFunc1(const TVec3f& a, TVec3f& b, const TVec3f& c) {
JMAVECScaleAdd(a.toCVec(), c.toCVec(), b.toVec(), -a.dot(c));
TVec3f negate(const TVec3f &in)
{
TVec3f tmp;
JGeometry::negateInternal(&in.x, &tmp.x);
return tmp;
}
bool CubeGravity::calcEdgeGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
{
// There is a mistake here: so long as area is not both even and negative, the function will not
// return here. The intent is that area should be neither even nor negative, since all edges
// are odd and positive. However, this mistake does not really matter since the switch will
// return if this does not.
if (!(((area & 1) ^ ((area & 0x80000000) >> 31)) - ((area & 0x80000000) >> 31))
|| area == ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)) {
return false;
}
TVec3f edgeVector, edgeTranslation, xDir, yDir, zDir, trans, positionOppositeInOrthogonalPlane;
mPosition.getXDir(xDir);
mPosition.getYDir(yDir);
mPosition.getZDir(zDir);
/*TVec3f translate(const TVec3f& a, const TVec3f& b) {
TVec3f tmp = a;
tmp += b;
return tmp;
}*/
switch (area) {
TVec3f negate(const TVec3f& in) {
TVec3f tmp;
JGeometry::negateInternal(&in.x, &tmp.x);
return tmp;
case ENCODE_EDGE(AXIS_X, REGION_NEGATIVE_Y, REGION_NEGATIVE_Z):
edgeVector = xDir;
edgeTranslation = negate(yDir) - zDir;
break;
case ENCODE_EDGE(AXIS_Y, REGION_NEGATIVE_X, REGION_NEGATIVE_Z):
edgeVector = yDir;
edgeTranslation = negate(xDir) - zDir;
break;
case ENCODE_EDGE(AXIS_Y, REGION_POSITIVE_X, REGION_NEGATIVE_Z):
edgeVector = yDir;
edgeTranslation = xDir - zDir;
break;
case ENCODE_EDGE(AXIS_X, REGION_POSITIVE_Y, REGION_NEGATIVE_Z):
edgeVector = xDir;
edgeTranslation = yDir - zDir;
break;
case ENCODE_EDGE(AXIS_Z, REGION_NEGATIVE_X, REGION_NEGATIVE_Y):
edgeVector = zDir;
edgeTranslation = negate(xDir) - yDir;
break;
case ENCODE_EDGE(AXIS_Z, REGION_POSITIVE_X, REGION_NEGATIVE_Y):
edgeVector = zDir;
edgeTranslation = xDir - yDir;
break;
case ENCODE_EDGE(AXIS_Z, REGION_NEGATIVE_X, REGION_POSITIVE_Y):
edgeVector = zDir;
edgeTranslation = negate(xDir).translate(yDir);
break;
case ENCODE_EDGE(AXIS_Z, REGION_POSITIVE_X, REGION_POSITIVE_Y):
edgeVector = zDir;
edgeTranslation = xDir.translate(yDir);
break;
case ENCODE_EDGE(AXIS_X, REGION_NEGATIVE_Y, REGION_POSITIVE_Z):
edgeVector = xDir;
edgeTranslation = negate(yDir).translate(zDir);
break;
case ENCODE_EDGE(AXIS_Y, REGION_NEGATIVE_X, REGION_POSITIVE_Z):
edgeVector = yDir;
edgeTranslation = negate(xDir).translate(zDir);
break;
case ENCODE_EDGE(AXIS_Y, REGION_POSITIVE_X, REGION_POSITIVE_Z):
edgeVector = yDir;
edgeTranslation = xDir.translate(zDir);
break;
case ENCODE_EDGE(AXIS_X, REGION_POSITIVE_Y, REGION_POSITIVE_Z):
edgeVector = xDir;
edgeTranslation = yDir.translate(zDir);
break;
default:
return false;
}
mPosition.getTrans(trans);
edgeTranslation += trans;
MR::normalizeOrZero(&edgeVector);
positionOppositeInOrthogonalPlane.rejection(edgeTranslation - rPosition, edgeVector);
if (positionOppositeInOrthogonalPlane.isZero()) {
pDest->normalize(edgeTranslation - trans);
*pScalar = 0.0;
}
else {
*pScalar = pDest->normalize(positionOppositeInOrthogonalPlane);
}
return true;
}
bool CubeGravity::calcEdgeGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
if(!(((area & 1) ^ ((area & 0x80000000) >> 31)) - ((area & 0x80000000) >> 31)) || area == 13) return false;
TVec3f stack_140, stack_134, xDir, yDir, zDir, trans, stack_f8;
mPosition.getXDir(xDir);
mPosition.getYDir(yDir);
mPosition.getZDir(zDir);
switch(area) {
case 1:
stack_140 = xDir;
stack_134 = negate(yDir) - zDir;
break;
case 3:
stack_140 = yDir;
stack_134 = negate(xDir) - zDir;
break;
case 5:
stack_140 = yDir;
stack_134 = xDir - zDir;
break;
case 7:
stack_140 = xDir;
stack_134 = yDir - zDir;
break;
case 9:
stack_140 = zDir;
stack_134 = negate(xDir) - yDir;
break;
case 11:
stack_140 = zDir;
stack_134 = xDir + yDir;
break;
case 15:
stack_140 = zDir;
stack_134 = negate(xDir).translate(yDir);
break;
case 17:
stack_140 = zDir;
stack_134 = xDir.translate(yDir);
break;
case 19:
stack_140 = xDir;
stack_134 = negate(yDir).translate(zDir);
break;
case 21:
stack_140 = yDir;
stack_134 = negate(xDir).translate(zDir);
break;
case 23:
stack_140 = yDir;
stack_134 = xDir.translate(zDir);
break;
case 25:
stack_140 = xDir;
stack_134 = yDir.translate(zDir);
break;
default:
return false;
}
mPosition.getTrans(trans);
stack_134 += trans;
MR::normalizeOrZero(&stack_140);
helperFunc1(stack_140, stack_f8, stack_134 - rPosition);
if(stack_f8.isZero()) {
pDest -> normalize(stack_134 - trans);
*pScalar = 0.0;
}
else {
*pScalar = pDest -> normalize(stack_f8);
}
return true;
}
bool CubeGravity::calcCornerGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
{
TVec3f vertex, xDir, yDir, zDir, trans;
mPosition.getXDir(xDir);
mPosition.getYDir(yDir);
mPosition.getZDir(zDir);
bool CubeGravity::calcCornerGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
TVec3f stack_140, xDir, yDir, zDir, trans;
mPosition.getXDir(xDir);
mPosition.getYDir(yDir);
mPosition.getZDir(zDir);
switch(area) {
case 0:
stack_140 = negate(xDir) - yDir - zDir;
break;
case 2:
stack_140 = xDir - yDir - zDir;
break;
case 6:
stack_140 = negate(xDir).translate(yDir) - zDir;
break;
case 8:
stack_140 = xDir.translate(yDir) - zDir;
break;
case 18:
stack_140 = (negate(xDir) - yDir).translate(zDir);
break;
case 20:
stack_140 = (xDir - yDir).translate(zDir);
break;
case 24:
stack_140 = negate(xDir).translate(yDir).translate(zDir);
break;
case 26:
stack_140 = xDir.translate(yDir).translate(zDir);
break;
default:
return false;
}
mPosition.getTrans(trans);
stack_140 += trans;
TVec3f stack_104 = stack_140 - rPosition;
if(stack_104.isZero()) {
*pScalar = 0.0;
pDest -> normalize(stack_140 - trans);
}
else {
*pScalar = pDest -> normalize(stack_104);
}
return true;
switch (area) {
case ENCODE_CORNER(-1, -1, -1):
vertex = negate(xDir) - yDir - zDir;
break;
case ENCODE_CORNER(1, -1, -1):
vertex = xDir - yDir - zDir;
break;
case ENCODE_CORNER(-1, 1, -1):
vertex = negate(xDir).translate(yDir) - zDir;
break;
case ENCODE_CORNER(1, 1, -1):
vertex = xDir.translate(yDir) - zDir;
break;
case ENCODE_CORNER(-1, -1, 1):
vertex = (negate(xDir) - yDir).translate(zDir);
break;
case ENCODE_CORNER(1, -1, 1):
vertex = (xDir - yDir).translate(zDir);
break;
case ENCODE_CORNER(-1, 1, 1):
vertex = negate(xDir).translate(yDir).translate(zDir);
break;
case ENCODE_CORNER(1, 1, 1):
vertex = xDir.translate(yDir).translate(zDir);
break;
default:
return false;
}
mPosition.getTrans(trans);
vertex += trans;
TVec3f gravity = vertex - rPosition;
if (gravity.isZero()) {
*pScalar = 0.0;
pDest->normalize(vertex - trans);
}
else {
*pScalar = pDest->normalize(gravity);
}
return true;
}

View File

@ -1,18 +1,20 @@
#include "Game/Gravity.hpp"
#include "Game/Util.hpp"
#include "Inline.hpp"
#include <JSystem/JMath/JMATrigonometric.hpp>
#include <math_types.hpp>
DiskGravity::DiskGravity() :
PlanetGravity(),
CALL_INLINE_FUNC(mLocalPosition, 0.0f, 50.0f, 0.0f),
CALL_INLINE_FUNC(mTranslation, 0.0f, 50.0f, 0.0f),
mLocalDirection(0, 1, 0),
mRotation(0, 1, 0),
CALL_INLINE_FUNC(mWorldPosition, 0.0f, 50.0f, 0.0f),
mLocalNormal(0, 1, 0),
mWorldNormal(0, 1, 0),
mSideDirection(1, 0, 0),
mSideVecOrtho(1, 0, 0),
mWorldSideDir(1, 0, 0)
mOppositeSideVecOrtho(1, 0, 0),
mWorldOppositeSideVecOrtho(1, 0, 0)
{
mRadius = 2500.0f;
mLocalRadius = 2500.0f;
mWorldRadius = 2500.0f;
mValidDegree = 360.0f;
mValidCos = -1.0f;
@ -25,8 +27,8 @@ void DiskGravity::setLocalPosition(const TVec3f &rLocalPos) {
}
void DiskGravity::setLocalDirection(const TVec3f &rLocalDir) {
mLocalDirection.set(rLocalDir);
MR::normalizeOrZero(&mLocalDirection);
mLocalNormal.set(rLocalDir);
MR::normalizeOrZero(&mLocalNormal);
updateLocalParam();
}
@ -36,7 +38,7 @@ void DiskGravity::setSideDirection(const TVec3f &rSideDir) {
}
void DiskGravity::setRadius(f32 val) {
mRadius = val;
mLocalRadius = val;
}
void DiskGravity::setValidDegee(f32 val) {
@ -52,52 +54,40 @@ void DiskGravity::setEnableEdgeGravity(bool val) {
mEnableEdgeGravity = val;
}
#ifdef NON_MATCHING
// matching this with the stack is fucking impossible
bool DiskGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pDistance, const TVec3f &rPosition) const {
TVec3f dirToPos;
dirToPos = rPosition - mTranslation;
f32 dot = dirToPos.dot(mRotation);
TVec3f relativePos;
relativePos = rPosition - mWorldPosition;
if (!mEnableBothSide && dot < 0.0f)
f32 centralAxisY = relativePos.dot(mWorldNormal);
if (!mEnableBothSide && centralAxisY < 0.0f)
return false;
TVec3f v33 = dirToPos - mRotation * dot;
f32 scalar;
MR::separateScalarAndDirection(&scalar, &v33, v33);
TVec3f dirOnDiskPlane = relativePos - mWorldNormal * centralAxisY;
f32 distanceToCentralAxis;
MR::separateScalarAndDirection(&distanceToCentralAxis, &dirOnDiskPlane, dirOnDiskPlane);
if (mValidCos > -1.0f && v33.dot(mWorldSideDir) < mValidCos)
if (mValidCos > -1.0f && dirOnDiskPlane.dot(mWorldOppositeSideVecOrtho) < mValidCos)
return false;
TVec3f gravity(0, 0, 0);
f32 distance = 0.0f;
if (scalar <= mWorldRadius) {
// This entire thing doesn't make much sense
const TVec3f* grav;
if (dot >= 0.0f) {
TVec3f neg;
neg.negateInline_2(mRotation);
grav = &neg;
}
else {
grav = &mRotation;
}
gravity = *grav;
distance = __fabsf(dot);
if (distanceToCentralAxis <= mWorldRadius) {
gravity = centralAxisY >= 0.0f ? mWorldNormal.negateInline_2() : mWorldNormal;
distance = __fabsf(centralAxisY);
}
else {
if (!mEnableBothSide) {
if (!mEnableEdgeGravity) {
return false;
}
TVec3f closestEdgePoint;
closestEdgePoint.set(dirOnDiskPlane * mWorldRadius);
closestEdgePoint.addInline2(mWorldPosition);
TVec3f v31;
v31.set(v33 * mWorldRadius);
v31.addInline2(mTranslation);
gravity = v31 - rPosition;
gravity = closestEdgePoint - rPosition;
MR::separateScalarAndDirection(&distance, &gravity, gravity);
}
@ -115,14 +105,42 @@ bool DiskGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pDistance, const TVec
return true;
}
#endif
void DiskGravity::updateLocalParam() {
TRot3f rot;
// Both of these variables are present because the codegen indicates they should be.
// In the final game, however, they have no behavioral effect and are not given any memory.
bool artifact = false;
bool &rArtifact = artifact;
mValidCos = JMath::sSinCosTable.cosLap(0.5f * mValidDegree);
if(MR::isNearZero(mLocalNormal, 0.00100000005f)) {
rArtifact = true;
mOppositeSideVecOrtho.zero();
return;
}
JMAVECScaleAdd(mLocalNormal.toCVec(), mSideDirection.toCVec(), mOppositeSideVecOrtho.toVec(), -mLocalNormal.dot(mSideDirection));
MR::normalizeOrZero(&mOppositeSideVecOrtho);
if(MR::isNearZero(mOppositeSideVecOrtho, 0.00100000005f)) {
mOppositeSideVecOrtho.zero();
return;
}
rot.identity();
rot.CALL_INLINE_FUNC(setRotate, mLocalNormal, 0.5f * mValidDegree * (PI / 180));
rArtifact = false;
if(!artifact) {
rot.mult(mOppositeSideVecOrtho, mOppositeSideVecOrtho);
}
}
void DiskGravity::updateMtx(const TPos3f &rMtx) {
rMtx.mult(mLocalPosition, mTranslation);
rMtx.mult33(mLocalDirection, mRotation);
rMtx.mult33(mSideVecOrtho, mWorldSideDir);
rMtx.mult(mLocalPosition, mWorldPosition);
rMtx.mult33(mLocalNormal, mWorldNormal);
rMtx.mult33(mOppositeSideVecOrtho, mWorldOppositeSideVecOrtho);
f32 _8;
MR::separateScalarAndDirection(&_8, &mRotation, mRotation);
mWorldRadius = mRadius * _8;
f32 axisScale;
MR::separateScalarAndDirection(&axisScale, &mWorldNormal, mWorldNormal);
mWorldRadius = mLocalRadius * axisScale;
}

View File

@ -2,6 +2,11 @@
#include "Game/Util.hpp"
#include "Inline.hpp"
#define DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY 0
#define DISK_TORUS_DISABLE_OUTER_EDGE_GRAVITY 1
#define DISK_TORUS_DISABLE_INNER_EDGE_GRAVITY 2
DiskTorusGravity::DiskTorusGravity() :
PlanetGravity(),
CALL_INLINE_FUNC(mLocalPosition, 0.0f, 50.0f, 0.0f),
@ -10,7 +15,7 @@ DiskTorusGravity::DiskTorusGravity() :
mRotation(0, 1, 0)
{
mRadius = 2000.0f;
_5C = 2000.0f;
mWorldRadius = 2000.0f;
mDiskRadius = 0.0f;
mEdgeType = 3;
mEnableBothSide = true;
@ -44,3 +49,82 @@ void DiskTorusGravity::setEdgeType(s32 val) {
void DiskTorusGravity::setBothSide(bool val) {
mEnableBothSide = val;
}
bool DiskTorusGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
TVec3f relativePosition;
relativePosition = rPos - mTranslation;
f32 centralAxisY = relativePosition.dot(mRotation);
if(!mEnableBothSide && centralAxisY < 0.0f) {
return false;
}
TVec3f dirOnTorusPlane = relativePosition - mRotation.multInline2(centralAxisY);
f32 distanceToCentralAxis;
MR::separateScalarAndDirection(&distanceToCentralAxis, &dirOnTorusPlane, dirOnTorusPlane);
if(MR::isNearZero(distanceToCentralAxis, 0.00100000005f)) {
// Just choose a direction in-plane for gravity if the object is sitting
// on the central axis (otherwise dirOnTorusPlane is zero)
MR::makeAxisVerticalZX(&dirOnTorusPlane, mRotation);
}
f32 innerRadius = mWorldRadius - mDiskRadius;
f32 worldRadius = mWorldRadius;
TVec3f gravity(0, 0, 0);
f32 distance = 0.0f;
if(distanceToCentralAxis < innerRadius) {
if(mEdgeType == DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY || mEdgeType == DISK_TORUS_DISABLE_INNER_EDGE_GRAVITY) {
return false;
}
TVec3f nearestInnerEdgePoint;
JMAVECScaleAdd(dirOnTorusPlane.toCVec(), mTranslation.toCVec(), nearestInnerEdgePoint.toVec(), innerRadius);
gravity = nearestInnerEdgePoint - rPos;
MR::separateScalarAndDirection(&distance, &gravity, gravity);
}
else if(distanceToCentralAxis > worldRadius) {
if(mEdgeType == DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY || mEdgeType == DISK_TORUS_DISABLE_OUTER_EDGE_GRAVITY) {
return false;
}
TVec3f nearestOuterEdgePoint;
JMAVECScaleAdd(dirOnTorusPlane.toCVec(), mTranslation.toCVec(), nearestOuterEdgePoint.toVec(), worldRadius);
gravity = nearestOuterEdgePoint - rPos;
MR::separateScalarAndDirection(&distance, &gravity, gravity);
}
else {
gravity = centralAxisY >= 0.0f ? mRotation.negateInline_2() : mRotation;
distance = __fabsf(centralAxisY);
}
if(!isInRangeDistance(distance)) {
return false;
}
if(pDest) {
*pDest = gravity;
}
if(pScalar) {
*pScalar = distance;
}
return true;
}
void DiskTorusGravity::updateMtx(const TPos3f &rMtx) {
rMtx.mult(mLocalPosition, mTranslation);
rMtx.mult33Inline(mLocalDirection, mRotation);
f32 worldScale;
MR::separateScalarAndDirection(&worldScale, &mRotation, mRotation);
mWorldRadius = mRadius * worldScale;
}

View File

@ -308,7 +308,7 @@ PlanetGravity* PointGravityCreator::createInstance() {
void PointGravityCreator::settingFromSRT(const TVec3f &rTrans, const TVec3f &rRotate, const TVec3f &rScale) {
mGravityInstance->mDistant = 500.0f * rScale.x;
mGravityInstance->mTranslation.setInlinePS(rTrans);
mGravityInstance->mOrigPosition.setInlinePS(rTrans);
}
PlanetGravity* PointGravityCreator::getGravity() {

View File

@ -31,7 +31,6 @@ bool ParallelGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TV
return true;
}
#ifdef NON_MATCHING
void ParallelGravity::updateMtx(const TPos3f &rMtx) {
rMtx.mult33Inline(mPlaneUpVec, mWorldPlaneUpVec);
rMtx.mult(mPlanePosition, mWorldPlanePosition);
@ -49,30 +48,21 @@ void ParallelGravity::updateMtx(const TPos3f &rMtx) {
mExtentZ = tempDir.squared();
}
}
#endif
void ParallelGravity::setPlane(const TVec3f &rPlaneUp, const TVec3f &rPlanePos) {
// Up vector
mPlaneUpVec.setInline(rPlaneUp);
VECMag(reinterpret_cast<const Vec*>(&mPlaneUpVec)); // unused result
VECNormalize(reinterpret_cast<const Vec*>(&mPlaneUpVec), reinterpret_cast<Vec*>(&mPlaneUpVec));
PSVECMag(mPlaneUpVec.toCVec()); // unused result
PSVECNormalize(mPlaneUpVec.toCVec(), mPlaneUpVec.toVec());
// Position
mPlanePosition = rPlanePos;
}
#ifdef NON_MATCHING
void ParallelGravity::setRangeBox(const TPos3f &rMtx) {
const u64* pSrc = reinterpret_cast<const u64*>(&rMtx);
u64* pDest = reinterpret_cast<u64*>(&mLocalMtx);
for (s32 i = 6; i >= 1; i--) {
*pDest++ = *pSrc++;
}
updateIdentityMtx();
mLocalMtx = rMtx;
updateIdentityMtx();
}
#endif
void ParallelGravity::setRangeCylinder(f32 radius, f32 height) {
mCylinderRadius = radius;
@ -84,11 +74,11 @@ void ParallelGravity::setRangeType(RANGE_TYPE rangeType) {
}
void ParallelGravity::setBaseDistance(f32 val) {
if (val >= 0.0f) {
mBaseDistance = val;
if (val < 0.0f) {
mBaseDistance = 2000.0f;
}
else {
mBaseDistance = 0.0f;
mBaseDistance = val;
}
}
@ -167,26 +157,23 @@ bool ParallelGravity::isInBoxRange(const TVec3f &rPosition, f32 *pScalar) const
}
bool ParallelGravity::isInCylinderRange(const TVec3f &rPosition, f32 *pScalar) const {
TVec3f v12;
f32 height = mWorldPlaneUpVec.dot(rPosition - mWorldPlanePosition);
// Check height range
TVec3f v11(rPosition - mWorldPlanePosition);
f32 v6 = mWorldPlaneUpVec.dot(v11);
if (v6 < 0.0f || mCylinderHeight < v6) {
if (height < 0.0f || mCylinderHeight < height) {
return false;
}
TVec3f positionOnWorldPlane;
// Check radius range
TVec3f v10(rPosition - mWorldPlanePosition);
f32 v8 = mWorldPlaneUpVec.dot(v10);
JMAVECScaleAdd(reinterpret_cast<const Vec*>(&mWorldPlaneUpVec), reinterpret_cast<const Vec*>(&v10), reinterpret_cast<Vec*>(&v12), -v8);
positionOnWorldPlane.rejection(rPosition - mWorldPlanePosition, mWorldPlaneUpVec);
f32 radius = VECMag(reinterpret_cast<const Vec*>(&v12));
f32 radius = PSVECMag(positionOnWorldPlane.toCVec());
if (radius > mCylinderRadius)
if (radius > mCylinderRadius) {
return false;
}
// Set speed
*pScalar = mBaseDistance + radius;

View File

@ -84,7 +84,7 @@ bool PlanetGravity::calcGravityFromMassPosition(TVec3f *pDirection, f32 *pScalar
TVec3f direction;
f32 scalar;
direction.subInline(rPosition, rMassPosition);
direction.subInline(rMassPosition, rPosition);
MR::separateScalarAndDirection(&scalar, &direction, direction);
if (!isInRangeDistance(scalar))

View File

@ -46,7 +46,7 @@ bool PlanetGravityManager::calcTotalGravityVector(TVec3f *pGravity, GravityInfo
if ((*pGravities)->calcGravity(&gravityVec, rPosition)) {
bool storeInfo = false;
f32 scalar = VECMag(reinterpret_cast<const Vec*>(&gravityVec));
f32 scalar = PSVECMag(gravityVec.toCVec());
// If same priority, add gravity vector to total result
if (priority == largestPriority) {

View File

@ -11,8 +11,8 @@ PointGravity::PointGravity() :
bool PointGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
TVec3f direction;
direction.subInline(rPosition, mTranslation);
f32 scalar = VECMag((Vec*)&direction);
direction.subInline(mTranslation, rPosition);
f32 scalar = PSVECMag((Vec*)&direction);
// Epsilon-equals zero? If so, direction is the zero vector.
if (MR::isNearZero(scalar, 0.01f)) {
@ -32,7 +32,7 @@ bool PointGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3
// Update result vector & scalar if applicable
else {
if (pDest) {
pDest->setInlinePS(direction);
pDest->setInlinePS_2(direction);
}
if (pScalar) {
*pScalar = scalar;

View File

@ -1,25 +1,110 @@
#include "Game/Gravity.hpp"
#include "Game/Util.hpp"
#include <JSystem/JMath/JMATrigonometric.hpp>
SegmentGravity::SegmentGravity() :
PlanetGravity(),
mSideVector(1, 0, 0),
_64(1, 0, 0),
_70(1, 0, 0),
_7C(0, 0, 0)
mOppositeSideVecOrtho(1, 0, 0),
mWorldOppositeSideVecOrtho(1, 0, 0),
mAxis(0, 0, 0)
{
_88 = 0.0f;
mSideDegree = 360.0f;
_90 = -1.0f;
mAxisLength = 0.0f;
mValidSideDegree = 360.0f;
mValidSideCos = -1.0f;
for (u32 i = 0 ; i < 2 ; i++) {
mGravityPoints[i].zero();
_40[i].zero();
_94[i] = 0.0f;
mWorldGravityPoints[i].zero();
mHemisphereExtension[i] = 0.0f;
mEdges[i] = true;
}
}
bool SegmentGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
TVec3f relPosFromBase = rPos - mWorldGravityPoints[0];
f32 axisY = relPosFromBase.dot(mAxis);
if(-1.0f < mValidSideCos) {
bool cmp = mWorldOppositeSideVecOrtho.squaredInline() <= 3.81469727e-06f;
if(!cmp) {
TVec3f dirOnBasePlane = relPosFromBase - mAxis * axisY;
MR::normalizeOrZero(&dirOnBasePlane);
if(dirOnBasePlane.dot(mWorldOppositeSideVecOrtho) < mValidSideCos) {
return false;
}
}
}
TVec3f attraction;
if(axisY < mHemisphereExtension[0]) {
if(!mEdges[0]) {
return false;
}
else {
attraction = mWorldGravityPoints[0];
}
}
else {
if(axisY > mAxisLength - mHemisphereExtension[1]) {
if(!mEdges[1]) {
return false;
}
attraction = mWorldGravityPoints[1];
}
else {
attraction = mWorldGravityPoints[0].madd(axisY, mAxis);
}
}
TVec3f gravity = attraction - rPos;
f32 distance;
MR::separateScalarAndDirection(&distance, &gravity, gravity);
if(!isInRangeDistance(distance)) {
return false;
}
if(pDest) {
*pDest = gravity;
}
if(pScalar) {
*pScalar = distance;
}
return true;
}
void SegmentGravity::updateLocalParam() {
TRot3f rot;
// Both of these variables are present because the codegen indicates they should be.
// In the final game, however, they have no behavioral effect and are not given any memory.
bool artifact = true;
bool &rArtifact = artifact;
mValidSideCos = JMath::sSinCosTable.cosLap(0.5f * mValidSideDegree);
TVec3f localAxis = mGravityPoints[1] - mGravityPoints[0];
MR::normalizeOrZero(&localAxis);
if(MR::isNearZero(localAxis, 0.00100000005f)) {
rArtifact = false;
mOppositeSideVecOrtho.zero();
return;
}
JMAVECScaleAdd(localAxis.toCVec(), mSideVector.toCVec(), mOppositeSideVecOrtho.toVec(), -localAxis.dot(mSideVector));
MR::normalize(&mOppositeSideVecOrtho);
if(MR::isNearZero(mOppositeSideVecOrtho, 0.00100000005f)) {
mOppositeSideVecOrtho.zero();
return;
}
rot.identity();
rot.setRotateInline2(localAxis, 0.5f * mValidSideDegree * (PI / 180));
// Necessary to force the compiler to load the arguments to `mult` in the correct order
rArtifact = false;
if(!artifact) {
rot.mult(mOppositeSideVecOrtho, mOppositeSideVecOrtho);
}
}
void SegmentGravity::setGravityPoint(u32 index, const TVec3f &rGravityPoint) {
mGravityPoints[index != 0] = rGravityPoint;
updateLocalParam();
@ -32,10 +117,19 @@ void SegmentGravity::setSideVector(const TVec3f &rSideVec) {
}
void SegmentGravity::setValidSideDegree(f32 val) {
mSideDegree = val;;
mValidSideDegree = val;;
updateLocalParam();
}
void SegmentGravity::setEdgeValid(u32 index, bool val) {
mEdges[index != 0] = val;
}
void SegmentGravity::updateMtx(const TPos3f &rMtx) {
for(s32 i = 0; i < 2; i++) {
rMtx.mult(mGravityPoints[i], mWorldGravityPoints[i]);
}
rMtx.mult33Inline(mOppositeSideVecOrtho, mWorldOppositeSideVecOrtho);
mAxis = mWorldGravityPoints[1] - mWorldGravityPoints[0];
MR::separateScalarAndDirection(&mAxisLength, &mAxis, mAxis);
}

View File

@ -14,6 +14,42 @@ void WireGravity::addPoint(const TVec3f &rPoint) {
mPoints.mArr[mCount++] = rPoint;
}
/*bool WireGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
bool WireGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
}*/
f32 distance = -1.0f;
TVec3f pointOfAttraction;
for(s32 i = 0; i < mCount - 1; i++) {
// unused
TVec3f wireBegin(mPoints.mArr[i]);
TVec3f wireEnd(mPoints.mArr[i + 1]);
TVec3f positionProjectedOntoWire;
MR::calcPerpendicFootToLineInside(&positionProjectedOntoWire, rPos, mPoints.mArr[i], mPoints.mArr[i + 1]);
f32 squareDistance = rPos.squareDistancePS(positionProjectedOntoWire);
if(squareDistance < distance || distance < 0.0f) {
pointOfAttraction = positionProjectedOntoWire;
distance = squareDistance;
}
}
if(!isInRangeSquare(distance)) {
return false;
}
if(distance >= 0.0f) {
TVec3f gravity(pointOfAttraction);
gravity.subInline4(rPos);
MR::separateScalarAndDirection(pScalar, pDest, gravity);
return true;
}
return false;
}

View File

@ -0,0 +1,28 @@
#include <JSystem/JGeometry/TMatrix.hpp>
#include <cmath>
inline f32 yy(f32 y) {
return y * y;
}
template<>
void TRot3f::setRotate(const TVec3f &mLocalDirection, f32 fr1e) {
TVec3f v;
v.set(mLocalDirection);
PSVECMag(v.toCVec());
PSVECNormalize(v.toCVec(), v.toVec());
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
f32 x, y, z;
y = v.y;
x = v.x;
z = v.z;
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * yy(x);
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * yy(y);
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * yy(z);
}