Files
tww/src/d/d_snap.cpp
T
LagoLunatic 13fd5f3dc4 d_a_bk OK
2025-03-24 20:32:30 -04:00

2244 lines
62 KiB
C++

//
// Generated by dtk
// Translation Unit: d_snap.cpp
//
#include "d/d_snap.h"
#include "d/d_com_inf_game.h"
#include "f_pc/f_pc_manager.h"
#include "f_op/f_op_camera.h"
#include "m_Do/m_Do_mtx.h"
#include "m_Do/m_Do_lib.h"
#include "JSystem/JUtility/JUTAssert.h"
// Needed for the .rodata section to match.
static const f32 dummy_2080[3] = {1.0f, 1.0f, 1.0f};
static const f32 dummy_2100[3] = {1.0f, 1.0f, 1.0f};
static const f32 dummy_3599[3] = {0.0f, 0.0f, 0.0f};
int (dSnap_packet::*dSnap_packet::m_judge_tbl[])() = {
NULL,
&dSnap_packet::JudgePost,
&dSnap_packet::JudgeBikutsuki,
&dSnap_packet::JudgeCoupleLook,
&dSnap_packet::JudgeGF,
&dSnap_packet::JudgeGenzo,
&dSnap_packet::JudgeObasan4,
&dSnap_packet::JudgeGene,
&dSnap_packet::JudgeGene,
&dSnap_packet::JudgeGene,
&dSnap_packet::JudgeTestM,
};
dSnap_packet l_snap;
struct CharaData {
/* 0x00 */ SVec offset;
/* 0x06 */ s16 radius;
/* 0x08 */ s16 height;
/* 0x0A */ u16 minRatio;
/* 0x0C */ s16 cullAngle;
/* 0x0E */ u16 minPixels;
/* 0x10 */ u8 figRoom;
/* 0x11 */ u8 m11;
}; // Size: 0x12
static const CharaData l_CharaData[] = {
{ // 0x00
/* offset */ {0, 10, 0},
/* radius */ 25,
/* height */ 80,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x01
/* offset */ {0, 20, 20},
/* radius */ 40,
/* height */ 90,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x02
/* offset */ {0, 10, 0},
/* radius */ 35,
/* height */ 130,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x03
/* offset */ {0, 10, 10},
/* radius */ 50,
/* height */ 130,
/* minRatio */ 300,
/* cullAngle */ 0x7FFF,
/* minPixels */ 3000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x04
/* offset */ {0, 20, 0},
/* radius */ 45,
/* height */ 160,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 2000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x05
/* offset */ {0, -30, 0},
/* radius */ 30,
/* height */ 60,
/* minRatio */ 500,
/* cullAngle */ 0x3FFF,
/* minPixels */ 2000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x06
/* offset */ {0, 20, 20},
/* radius */ 55,
/* height */ 140,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x07
/* offset */ {0, 20, 20},
/* radius */ 35,
/* height */ 150,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x08
/* offset */ {0, 10, 0},
/* radius */ 25,
/* height */ 70,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x09
/* offset */ {0, 10, 0},
/* radius */ 25,
/* height */ 70,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x02,
},
{ // 0x0A
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x03,
/* m11 */ 0x0C,
},
{ // 0x0B
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 60,
/* minRatio */ 400,
/* cullAngle */ 0x3E80,
/* minPixels */ 4000,
/* figRoom */ 0x03,
/* m11 */ 0x00,
},
{ // 0x0C
/* offset */ {0, -40, 0},
/* radius */ 60,
/* height */ 80,
/* minRatio */ 300,
/* cullAngle */ 0x7FFF,
/* minPixels */ 3000,
/* figRoom */ 0x03,
/* m11 */ 0x00,
},
{ // 0x0D
/* offset */ {0, 0, 0},
/* radius */ 20,
/* height */ 20,
/* minRatio */ 400,
/* cullAngle */ 0x7D00,
/* minPixels */ 3000,
/* figRoom */ 0x03,
/* m11 */ 0x00,
},
{ // 0x0E
/* offset */ {0, 30, 0},
/* radius */ 50,
/* height */ 120,
/* minRatio */ 200,
/* cullAngle */ 0x4650,
/* minPixels */ 3000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x0F
/* offset */ {0, 10, 0},
/* radius */ 35,
/* height */ 120,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x10
/* offset */ {0, 10, 20},
/* radius */ 60,
/* height */ 160,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x11
/* offset */ {0, 10, 0},
/* radius */ 50,
/* height */ 140,
/* minRatio */ 500,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x12
/* offset */ {0, 10, 20},
/* radius */ 60,
/* height */ 200,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x13
/* offset */ {0, 90, 30},
/* radius */ 60,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x14
/* offset */ {0, 75, 30},
/* radius */ 40,
/* height */ 80,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x15
/* offset */ {0, 20, 0},
/* radius */ 80,
/* height */ 180,
/* minRatio */ 550,
/* cullAngle */ 0x4A38,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x16
/* offset */ {0, 15, 0},
/* radius */ 60,
/* height */ 135,
/* minRatio */ 550,
/* cullAngle */ 0x32C8,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x17
/* offset */ {0, 15, 0},
/* radius */ 50,
/* height */ 155,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x18
/* offset */ {0, 10, 0},
/* radius */ 30,
/* height */ 80,
/* minRatio */ 550,
/* cullAngle */ 0x32C8,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x19
/* offset */ {0, 5, 0},
/* radius */ 30,
/* height */ 80,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1A
/* offset */ {0, 5, 10},
/* radius */ 45,
/* height */ 180,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1B
/* offset */ {0, 20, 0},
/* radius */ 45,
/* height */ 160,
/* minRatio */ 550,
/* cullAngle */ 0x5208,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1C
/* offset */ {0, 10, 10},
/* radius */ 45,
/* height */ 130,
/* minRatio */ 550,
/* cullAngle */ 0x2AF8,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1D
/* offset */ {0, 80, 0},
/* radius */ 35,
/* height */ 80,
/* minRatio */ 500,
/* cullAngle */ 0x4650,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1E
/* offset */ {0, 80, 0},
/* radius */ 40,
/* height */ 85,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x1F
/* offset */ {0, 30, 10},
/* radius */ 45,
/* height */ 115,
/* minRatio */ 550,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x20
/* offset */ {0, 10, 0},
/* radius */ 45,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x4268,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x21
/* offset */ {0, 10, 10},
/* radius */ 45,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2710,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x22
/* offset */ {0, 10, 10},
/* radius */ 45,
/* height */ 145,
/* minRatio */ 550,
/* cullAngle */ 0x3A98,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x23
/* offset */ {0, 20, 10},
/* radius */ 45,
/* height */ 145,
/* minRatio */ 550,
/* cullAngle */ 0x3E80,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x24
/* offset */ {0, 20, 10},
/* radius */ 45,
/* height */ 145,
/* minRatio */ 550,
/* cullAngle */ 0x3E80,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x25
/* offset */ {0, 30, 35},
/* radius */ 80,
/* height */ 160,
/* minRatio */ 550,
/* cullAngle */ 0x3A98,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x26
/* offset */ {0, 30, 30},
/* radius */ 75,
/* height */ 170,
/* minRatio */ 550,
/* cullAngle */ 0x2328,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x27
/* offset */ {0, 30, 30},
/* radius */ 75,
/* height */ 170,
/* minRatio */ 550,
/* cullAngle */ 0x2328,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x28
/* offset */ {0, 30, 30},
/* radius */ 75,
/* height */ 170,
/* minRatio */ 550,
/* cullAngle */ 0x2328,
/* minPixels */ 5000,
/* figRoom */ 0x02,
/* m11 */ 0x02,
},
{ // 0x29
/* offset */ {0, 20, 0},
/* radius */ 30,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 4000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2A
/* offset */ {0, 30, 0},
/* radius */ 50,
/* height */ 160,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 4500,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2B
/* offset */ {0, 30, 0},
/* radius */ 50,
/* height */ 160,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 4500,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2C
/* offset */ {0, 30, 0},
/* radius */ 50,
/* height */ 160,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 4500,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2D
/* offset */ {0, 20, 10},
/* radius */ 50,
/* height */ 80,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 4500,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2E
/* offset */ {0, 10, 0},
/* radius */ 50,
/* height */ 90,
/* minRatio */ 500,
/* cullAngle */ 0x32C8,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x2F
/* offset */ {0, 20, 10},
/* radius */ 50,
/* height */ 80,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 4500,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x30
/* offset */ {0, 10, 0},
/* radius */ 55,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x31
/* offset */ {0, 10, 0},
/* radius */ 55,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x32
/* offset */ {0, 10, 0},
/* radius */ 55,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x33
/* offset */ {0, 10, 0},
/* radius */ 55,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x55F0,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x34
/* offset */ {0, 0, 0},
/* radius */ 80,
/* height */ 120,
/* minRatio */ 200,
/* cullAngle */ 0x7FFF,
/* minPixels */ 2000,
/* figRoom */ 0x01,
/* m11 */ 0x00,
},
{ // 0x35
/* offset */ {0, 30, 10},
/* radius */ 80,
/* height */ 150,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 3000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x36
/* offset */ {0, 20, 20},
/* radius */ 40,
/* height */ 120,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x37
/* offset */ {0, 20, 30},
/* radius */ 40,
/* height */ 90,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x38
/* offset */ {0, 100, 40},
/* radius */ 50,
/* height */ 60,
/* minRatio */ 500,
/* cullAngle */ 0x4268,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x39
/* offset */ {0, 10, 0},
/* radius */ 65,
/* height */ 200,
/* minRatio */ 550,
/* cullAngle */ 0x2AF8,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x3A
/* offset */ {0, 50, 0},
/* radius */ 300,
/* height */ 400,
/* minRatio */ 100,
/* cullAngle */ 0x7FFF,
/* minPixels */ 4000,
/* figRoom */ 0x01,
/* m11 */ 0x00,
},
{ // 0x3B
/* offset */ {0, 0, 0},
/* radius */ 25,
/* height */ 25,
/* minRatio */ 550,
/* cullAngle */ 0x2AF8,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x00,
},
{ // 0x3C
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x0C,
},
{ // 0x3D
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x0C,
},
{ // 0x3E
/* offset */ {0, 10, 0},
/* radius */ 35,
/* height */ 120,
/* minRatio */ 550,
/* cullAngle */ 0x2AF8,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x02,
},
{ // 0x3F
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x0E,
},
{ // 0x40
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x01,
/* m11 */ 0x0C,
},
{ // 0x41
/* offset */ {0, 20, 0},
/* radius */ 30,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2710,
/* minPixels */ 4000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x42
/* offset */ {0, 10, 0},
/* radius */ 30,
/* height */ 60,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 2000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x43
/* offset */ {0, 20, 0},
/* radius */ 60,
/* height */ 200,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x44
/* offset */ {0, 20, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x45
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x46
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x47
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x48
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x49
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4A
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4B
/* offset */ {0, 20, 10},
/* radius */ 50,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4C
/* offset */ {0, 20, 10},
/* radius */ 50,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4D
/* offset */ {0, 90, 30},
/* radius */ 60,
/* height */ 90,
/* minRatio */ 500,
/* cullAngle */ VERSION_SELECT(0x2000, 0x6000, 0x6000),
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4E
/* offset */ {0, 20, 25},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x4F
/* offset */ {0, 30, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x02,
},
{ // 0x50
/* offset */ {0, -300, 0},
/* radius */ 870,
/* height */ 700,
/* minRatio */ 100,
/* cullAngle */ 0x6000,
/* minPixels */ 3000,
/* figRoom */ 0x06,
/* m11 */ 0x00,
},
{ // 0x51
/* offset */ {0, 0, 0},
/* radius */ 1000,
/* height */ 800,
/* minRatio */ 100,
/* cullAngle */ 0x4650,
/* minPixels */ 1000,
/* figRoom */ 0x06,
/* m11 */ 0x00,
},
{ // 0x52
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x06,
/* m11 */ 0x0E,
},
{ // 0x53
/* offset */ {0, 0, 0},
/* radius */ 40,
/* height */ 55,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x54
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x55
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x56
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x57
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x58
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x59
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x5A
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x5B
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x5C
/* offset */ {0, 15, 0},
/* radius */ 40,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x5D
/* offset */ {0, 700, 800},
/* radius */ 200,
/* height */ 200,
/* minRatio */ 300,
/* cullAngle */ 0x7FFF,
/* minPixels */ 3000,
/* figRoom */ 0x07,
/* m11 */ 0x00,
},
{ // 0x5E
/* offset */ {0, 85, 0},
/* radius */ 70,
/* height */ 80,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x07,
/* m11 */ 0x02,
},
{ // 0x5F
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x07,
/* m11 */ 0x06,
},
{ // 0x60
/* offset */ {0, 0, 0},
/* radius */ 50,
/* height */ 150,
/* minRatio */ 550,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x07,
/* m11 */ 0x0E,
},
{ // 0x61
/* offset */ {0, 20, 80},
/* radius */ 60,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 5000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x62
/* offset */ {0, 10, 20},
/* radius */ 60,
/* height */ 100,
/* minRatio */ 400,
/* cullAngle */ 0x3E80,
/* minPixels */ 4000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x63
/* offset */ {0, 20, 20},
/* radius */ 40,
/* height */ 50,
/* minRatio */ 500,
/* cullAngle */ 0x2000,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x64
/* offset */ {0, 0, 0},
/* radius */ 60,
/* height */ 60,
/* minRatio */ 200,
/* cullAngle */ 0x7530,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x65
/* offset */ {0, -25, 30},
/* radius */ 40,
/* height */ 60,
/* minRatio */ 300,
/* cullAngle */ 0x4E20,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x66
/* offset */ {0, -40, 50},
/* radius */ 50,
/* height */ 80,
/* minRatio */ 300,
/* cullAngle */ 0x2EE0,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x67
/* offset */ {0, -50, 0},
/* radius */ 50,
/* height */ 100,
/* minRatio */ 200,
/* cullAngle */ 0x4000,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x68
/* offset */ {0, -80, 0},
/* radius */ 80,
/* height */ 120,
/* minRatio */ 300,
/* cullAngle */ 0x7FFF,
/* minPixels */ 2000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x69
/* offset */ {0, 30, 0},
/* radius */ 120,
/* height */ 50,
/* minRatio */ 100,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6A
/* offset */ {0, -30, 0},
/* radius */ 30,
/* height */ 60,
/* minRatio */ 300,
/* cullAngle */ 0x7FFF,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6B
/* offset */ {0, -20, 0},
/* radius */ 60,
/* height */ 100,
/* minRatio */ 400,
/* cullAngle */ 0x7FFF,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6C
/* offset */ {10, -50, 0},
/* radius */ 60,
/* height */ 100,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6D
/* offset */ {0, 10, 10},
/* radius */ 60,
/* height */ 130,
/* minRatio */ 500,
/* cullAngle */ 0x2AF8,
/* minPixels */ 4000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6E
/* offset */ {0, 20, 20},
/* radius */ 130,
/* height */ 300,
/* minRatio */ 500,
/* cullAngle */ 0x2EE0,
/* minPixels */ 5000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x6F
/* offset */ {0, 20, 20},
/* radius */ 80,
/* height */ 160,
/* minRatio */ 400,
/* cullAngle */ 0x2EE0,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x70
/* offset */ {0, 20, 50},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 300,
/* cullAngle */ 0x4650,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x71
/* offset */ {0, 20, 50},
/* radius */ 70,
/* height */ 170,
/* minRatio */ 200,
/* cullAngle */ 0x4650,
/* minPixels */ 2000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x72
/* offset */ {0, 0, 0},
/* radius */ 400,
/* height */ 400,
/* minRatio */ 200,
/* cullAngle */ 0x7530,
/* minPixels */ 3000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x73
/* offset */ {0, 0, 0},
/* radius */ 200,
/* height */ 170,
/* minRatio */ 300,
/* cullAngle */ 0x7FBC,
/* minPixels */ 2000,
/* figRoom */ 0x05,
/* m11 */ 0x00,
},
{ // 0x74
/* offset */ {0, 20, 50},
/* radius */ 100,
/* height */ 140,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x75
/* offset */ {0, -120, 0},
/* radius */ 100,
/* height */ 100,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x76
/* offset */ {0, 10, 10},
/* radius */ 100,
/* height */ 200,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x77
/* offset */ {0, 10, 10},
/* radius */ 100,
/* height */ 200,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x78
/* offset */ {0, 10, 10},
/* radius */ 100,
/* height */ 200,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x79
/* offset */ {0, 10, 10},
/* radius */ 100,
/* height */ 250,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7A
/* offset */ {0, 20, 10},
/* radius */ 70,
/* height */ 210,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 3000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7B
/* offset */ {0, 20, 30},
/* radius */ 70,
/* height */ 150,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 3000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7C
/* offset */ {0, 20, 30},
/* radius */ 70,
/* height */ 150,
/* minRatio */ 300,
/* cullAngle */ 0x2AF8,
/* minPixels */ 3000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7D
/* offset */ {0, 200, 0},
/* radius */ 1000,
/* height */ 1200,
/* minRatio */ 100,
/* cullAngle */ 0x6D60,
/* minPixels */ 1000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7E
/* offset */ {0, -200, 0},
/* radius */ 360,
/* height */ 450,
/* minRatio */ 500,
/* cullAngle */ 0x4E20,
/* minPixels */ 500,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x7F
/* offset */ {0, 0, 0},
/* radius */ 400,
/* height */ 380,
/* minRatio */ 300,
/* cullAngle */ 0x7D00,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x80
/* offset */ {0, 0, 50},
/* radius */ 350,
/* height */ 400,
/* minRatio */ 100,
/* cullAngle */ 0x4650,
/* minPixels */ 1000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x81
/* offset */ {0, 200, 50},
/* radius */ 300,
/* height */ 550,
/* minRatio */ 200,
/* cullAngle */ 0x3E80,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x82
/* offset */ {0, 200, 50},
/* radius */ 350,
/* height */ 400,
/* minRatio */ 200,
/* cullAngle */ 0x3E80,
/* minPixels */ 4000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x83
/* offset */ {0, 100, 30},
/* radius */ 500,
/* height */ 300,
/* minRatio */ 200,
/* cullAngle */ 0x3E80,
/* minPixels */ 2000,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x84
/* offset */ {0, 400, 0},
/* radius */ 800,
/* height */ 800,
/* minRatio */ 200,
/* cullAngle */ 0x4650,
/* minPixels */ 1500,
/* figRoom */ 0x04,
/* m11 */ 0x00,
},
{ // 0x85
/* offset */ {0, 10, 0},
/* radius */ 130,
/* height */ 280,
/* minRatio */ 200,
/* cullAngle */ 0x4650,
/* minPixels */ 1200,
/* figRoom */ 0x04,
/* m11 */ 0x0A,
},
};
static const int CharaDataTblSize = ARRAY_SIZE(l_CharaData);
// The coordinates in pixels on the screen representing where the player can see while looking through the Picto Box.
static const int DSNAP_SHUTTER_LEFT = 174;
static const int DSNAP_SHUTTER_RIGHT = 468;
static const int DSNAP_SHUTTER_TOP = 86;
static const int DSNAP_SHUTTER_BOTTOM = 284;
static const Vec cylvtx[] = {
{0.0f, 0.0f, 1.0f},
{0.707099974155426f, 0.0f, 0.707099974155426f},
{1.0f, 0.0f, 0.0f},
{0.707099974155426f, 0.0f, -0.707099974155426f},
{0.0f, 0.0f, -1.0f},
};
static const Vec vdata[] = {
{-0.525731086730957f, 0.0f, 0.8506507873535156f},
{0.525731086730957f, 0.0f, 0.8506507873535156f},
{-0.525731086730957f, 0.0f, -0.8506507873535156f},
{0.525731086730957f, 0.0f, -0.8506507873535156f},
{0.0f, 0.8506507873535156f, 0.525731086730957f},
{0.0f, 0.8506507873535156f, -0.525731086730957f},
{0.0f, -0.8506507873535156f, 0.525731086730957f},
{0.0f, -0.8506507873535156f, -0.525731086730957f},
{0.8506507873535156f, 0.525731086730957f, 0.0f},
{-0.8506507873535156f, 0.525731086730957f, 0.0f},
{0.8506507873535156f, -0.525731086730957f, 0.0f},
{-0.8506507873535156f, -0.525731086730957f, 0.0f},
};
static const int tindices[][3] = {
{0x0, 0x4, 0x1},
{0x0, 0x9, 0x4},
{0x9, 0x5, 0x4},
{0x4, 0x5, 0x8},
{0x4, 0x8, 0x1},
{0x8, 0xA, 0x1},
{0x8, 0x3, 0xA},
{0x5, 0x3, 0x8},
{0x5, 0x2, 0x3},
{0x2, 0x7, 0x3},
{0x7, 0xA, 0x3},
{0x7, 0x6, 0xA},
{0x7, 0xB, 0x6},
{0xB, 0x0, 0x6},
{0x0, 0x1, 0x6},
{0x6, 0x1, 0xA},
{0x9, 0x0, 0xB},
{0x9, 0xB, 0x2},
{0x9, 0x2, 0x5},
{0x7, 0x2, 0xB},
};
/* 800CCF6C-800CCFE4 .text dSnap_PhotoIndex2TableIndex__Fi */
int dSnap_PhotoIndex2TableIndex(int photoIndex) {
int index = photoIndex - 0x49;
JUT_ASSERT(334, index >= 0 && index < CharaDataTblSize);
return index;
}
/* 800CCFE4-800CD00C .text dSnap_GetFigRoomId__Fi */
int dSnap_GetFigRoomId(int tableIndex) {
if (tableIndex >= (int)ARRAY_SIZE(l_CharaData)) {
return 0xFF;
}
return l_CharaData[tableIndex].figRoom;
}
/* 800CD00C-800CD068 .text __ct__9dSnap_ObjFv */
dSnap_Obj::dSnap_Obj() {
mActorPID = fpcM_ERROR_PROCESS_ID_e;
mPhoto = 0;
field_0x19 = 4;
field_0x1a = -1;
field_0x1b = 0;
mCullAngle = 0x7FFF;
mAngleY = 0;
mCapturedPixels = 0;
mCapturedRatio = 0.0f;
mMinX = 0;
mMinY = 0;
mMaxX = 0;
mMaxY = 0;
}
/* 800CD068-800CD6D0 .text CalcArea2D__9dSnap_ObjFv */
f32 dSnap_Obj::CalcArea2D() {
f32 f28 = 0.0f;
f32 f29 = mRadius;
f32 f30 = mHeight;
cXyz sp8c;
cXyz sp80;
cXyz sp74;
cXyz sp68;
cXyz sp5c;
cXyz sp50;
cXyz sp44;
cXyz sp38;
cXyz sp2c;
cXyz sp20;
cXyz sp14;
cXyz sp8;
f32 f0;
if (!(field_0x1b & 1)) {
mDoMtx_stack_c::transS(mCenter);
mDoMtx_stack_c::scaleM(f29, f30, f29);
mDoMtx_stack_c::YrotM(mAngleY);
sp44.x = 0.0f;
sp44.y = 0.0f;
sp44.z = 0.0f;
mDoMtx_stack_c::multVec(&sp44, &sp44);
sp38.x = 0.0f;
sp38.y = 1.0f;
sp38.z = 0.0f;
mDoMtx_stack_c::multVec(&sp38, &sp38);
for (int i = 0; i < field_0x19; i++) {
sp8c.x = cylvtx[i].x;
sp8c.y = 0.0f;
sp8c.z = cylvtx[i].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp74);
sp8c.y = 1.0f;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp68);
sp8c.x = cylvtx[i+1].x;
sp8c.z = cylvtx[i+1].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp5c);
sp8c.y = 0.0f;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp50);
f0 = 0.5f * cM3d_VectorProduct2d(sp74.x, sp74.y, sp68.x, sp68.y, sp5c.x, sp5c.y);
if (f0 > 0.0f) {
f28 += f0;
}
f0 = 0.5f * cM3d_VectorProduct2d(sp74.x, sp74.y, sp5c.x, sp5c.y, sp50.x, sp50.y);
if (f0 > 0.0f) {
f28 += f0;
}
mDoLib_project(&sp38, &sp2c);
f0 = 0.5f * cM3d_VectorProduct2d(sp2c.x, sp2c.y, sp5c.x, sp5c.y, sp68.x, sp68.y);
if (f0 > 0.0f) {
f28 += f0;
}
mDoLib_project(&sp44, &sp20);
f0 = 0.5f * cM3d_VectorProduct2d(sp20.x, sp20.y, sp74.x, sp74.y, sp50.x, sp50.y);
if (f0 > 0.0f) {
f28 += f0;
}
sp8c.x = -cylvtx[i].x;
sp8c.y = 1.0f;
sp8c.z = cylvtx[i].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp74);
sp8c.y = 0.0f;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp68);
sp8c.x = -cylvtx[i+1].x;
sp8c.z = cylvtx[i+1].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp5c);
sp8c.y = 1.0f;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp50);
f0 = 0.5f * cM3d_VectorProduct2d(sp74.x, sp74.y, sp68.x, sp68.y, sp5c.x, sp5c.y);
if (f0 > 0.0f) {
f28 += f0;
}
f0 = 0.5f * cM3d_VectorProduct2d(sp74.x, sp74.y, sp5c.x, sp5c.y, sp50.x, sp50.y);
if (f0 > 0.0f) {
f28 += f0;
}
mDoLib_project(&sp38, &sp14);
f0 = 0.5f * cM3d_VectorProduct2d(sp14.x, sp14.y, sp74.x, sp74.y, sp50.x, sp50.y);
if (f0 > 0.0f) {
f28 += f0;
}
mDoLib_project(&sp44, &sp8);
f0 = 0.5f * cM3d_VectorProduct2d(sp8.x, sp8.y, sp5c.x, sp5c.y, sp68.x, sp68.y);
if (f0 > 0.0f) {
f28 += f0;
}
}
} else {
mDoMtx_stack_c::transS(mCenter);
mDoMtx_stack_c::scaleM(f29, f29, f29);
for (int i = 0; i < (s32)ARRAY_SIZE(tindices); i++) {
sp8c.x = vdata[tindices[i][0]].x;
sp8c.y = vdata[tindices[i][0]].y;
sp8c.z = vdata[tindices[i][0]].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp74);
sp8c.x = vdata[tindices[i][1]].x;
sp8c.y = vdata[tindices[i][1]].y;
sp8c.z = vdata[tindices[i][1]].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp68);
sp8c.x = vdata[tindices[i][2]].x;
sp8c.y = vdata[tindices[i][2]].y;
sp8c.z = vdata[tindices[i][2]].z;
mDoMtx_stack_c::multVec(&sp8c, &sp80);
mDoLib_project(&sp80, &sp5c);
f0 = 0.5f * cM3d_VectorProduct2d(sp74.x, sp74.y, sp68.x, sp68.y, sp5c.x, sp5c.y);
if (f0 > 0.0f) {
f28 += f0;
}
}
}
return f28;
}
/* 800CD6D0-800CDAF8 .text draw__9dSnap_ObjFv */
void dSnap_Obj::draw() {
if (!(field_0x1b & 1)) {
f32 scaleX = mRadius;
f32 scaleY = mHeight;
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
mDoMtx_stack_c::transM(mCenter);
mDoMtx_stack_c::scaleM(scaleX, scaleY, scaleX);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
mDoMtx_stack_c::YrotM(mAngleY);
GXLoadPosMtxImm(mDoMtx_stack_c::get(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXBegin(GX_QUADS, GX_VTXFMT0, field_0x19 * 8);
for (int i = 0; i < field_0x19; i++) {
GXPosition3f32(cylvtx[i].x, 0.0f, cylvtx[i].z);
GXPosition3f32(cylvtx[i].x, 1.0f, cylvtx[i].z);
GXPosition3f32(cylvtx[i+1].x, 1.0f, cylvtx[i+1].z);
GXPosition3f32(cylvtx[i+1].x, 0.0f, cylvtx[i+1].z);
GXPosition3f32(-cylvtx[i].x, 1.0f, cylvtx[i].z);
GXPosition3f32(-cylvtx[i].x, 0.0f, cylvtx[i].z);
GXPosition3f32(-cylvtx[i+1].x, 0.0f, cylvtx[i+1].z);
GXPosition3f32(-cylvtx[i+1].x, 1.0f, cylvtx[i+1].z);
}
GXBegin(GX_TRIANGLES, GX_VTXFMT0, field_0x19 * 0xC);
for (int i = 0; i < field_0x19; i++) {
GXPosition3f32(0.0f, 1.0f, 0.0f);
GXPosition3f32(cylvtx[i+1].x, 1.0f, cylvtx[i+1].z);
GXPosition3f32(cylvtx[i].x, 1.0f, cylvtx[i].z);
GXPosition3f32(0.0f, 0.0f, 0.0f);
GXPosition3f32(cylvtx[i].x, 0.0f, cylvtx[i].z);
GXPosition3f32(cylvtx[i+1].x, 0.0f, cylvtx[i+1].z);
GXPosition3f32(0.0f, 1.0f, 0.0f);
GXPosition3f32(-cylvtx[i].x, 1.0f, cylvtx[i].z);
GXPosition3f32(-cylvtx[i+1].x, 1.0f, cylvtx[i+1].z);
GXPosition3f32(0.0f, 0.0f, 0.0f);
GXPosition3f32(-cylvtx[i+1].x, 0.0f, cylvtx[i+1].z);
GXPosition3f32(-cylvtx[i].x, 0.0f, cylvtx[i].z);
}
} else {
f32 scale = mRadius;
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
mDoMtx_stack_c::transM(mCenter);
mDoMtx_stack_c::scaleM(scale, scale, scale);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXLoadPosMtxImm(mDoMtx_stack_c::get(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
for (int i = 0; i < (s32)ARRAY_SIZE(tindices); i++) {
GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3);
GXPosition3f32(vdata[tindices[i][0]].x, vdata[tindices[i][0]].y, vdata[tindices[i][0]].z);
GXPosition3f32(vdata[tindices[i][1]].x, vdata[tindices[i][1]].y, vdata[tindices[i][1]].z);
GXPosition3f32(vdata[tindices[i][2]].x, vdata[tindices[i][2]].y, vdata[tindices[i][2]].z);
}
}
}
/* 800CDAF8-800CDB2C .text SetGeo__9dSnap_ObjFRC3Vecffs */
void dSnap_Obj::SetGeo(const Vec& center, f32 radius, f32 height, s16 angleY) {
field_0x1b &= ~1;
mCenter = center;
mRadius = radius;
mHeight = height;
mAngleY = angleY;
}
/* 800CDB2C-800CDB68 .text SetGeoSph__9dSnap_ObjFRC3Vecf */
void dSnap_Obj::SetGeoSph(const Vec& center, f32 radius) {
field_0x1b |= 1;
mCenter = center;
mRadius = radius;
mHeight = 0.0f;
mAngleY = 0;
}
/* 800CDB68-800CDB94 .text SetInf__9dSnap_ObjFUcPC10fopAc_ac_cUcUcs */
void dSnap_Obj::SetInf(u8 r4, const fopAc_ac_c* r5, u8 r6, u8 r7, s16 cullAngle) {
mPhoto = r4;
mActorPID = fopAcM_GetID(const_cast<fopAc_ac_c*>(r5));
field_0x1a = r6;
field_0x19 = r7;
mCullAngle = cullAngle;
}
/* 800CDB94-800CDBB0 .text SetAreaClear__9dSnap_ObjFv */
void dSnap_Obj::SetAreaClear() {
mMinX = 0x800;
mMinY = 0x800;
mMaxX = -0x800;
mMaxY = -0x800;
}
/* 800CDBB0-800CDC04 .text SetArea__9dSnap_ObjFss */
void dSnap_Obj::SetArea(s16 x, s16 y) {
if (GetMinX() > x) {
mMinX = x;
}
if (GetMinY() > y) {
mMinY = y;
}
if (GetMaxX() < x) {
mMaxX = x;
}
if (GetMaxY() < y) {
mMaxY = y;
}
}
/* 800CDC04-800CDC18 .text ChkPhoto__9dSnap_ObjFi */
bool dSnap_Obj::ChkPhoto(int r4) {
return mPhoto == r4 ? TRUE : FALSE;
}
/* 800CDC18-800CDC40 .text ChkSuccess__9dSnap_ObjFlf */
bool dSnap_Obj::ChkSuccess(s32 minPixels, f32 minRatio) {
if (mCapturedPixels > minPixels && mCapturedRatio > minRatio) {
return true;
}
return false;
}
/* 800CDC40-800CDCD8 .text ChkCamCull__9dSnap_ObjCFv */
bool dSnap_Obj::ChkCamCull() const {
if (!(field_0x1b & 1) && mCullAngle != 0x7FFF) {
// TODO: is this VECSubtract supposed to be an inline? dSnap_Obj::GetLen?
cXyz sp8;
VECSubtract(&dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0))->mLookat.mEye, &mCenter, &sp8);
s16 angle = cM_atan2s(sp8.x, sp8.z);
if (cLib_distanceAngleS(angle, mAngleY) > mCullAngle) {
return true;
}
}
return false;
}
/* 800CDCD8-800CDCDC .text Init__18dSnap_RegistObjElmFv */
void dSnap_RegistObjElm::Init() {}
/* 800CDCDC-800CDD70 .text Regist__18dSnap_RegistObjElmFRC9dSnap_Obj */
void dSnap_RegistObjElm::Regist(const dSnap_Obj& obj) {
m_obj = obj;
}
/* 800CDD70-800CDD84 .text Create__12dSnap_packetFv */
void dSnap_packet::Create() {
mFlag = 0;
mResult = 0;
mResultDetail = 0;
}
/* 800CDD84-800CDD94 .text ReleaseShutter__12dSnap_packetFv */
void dSnap_packet::ReleaseShutter() {
mFlag |= 1;
}
/* 800CDD94-800CDDA0 .text ChkReleaseShutter__12dSnap_packetFv */
u32 dSnap_packet::ChkReleaseShutter() {
return mFlag & 1;
}
/* 800CDDA0-800CDE20 .text Execute__12dSnap_packetFv */
void dSnap_packet::Execute() {
if (ChkReleaseShutter()) {
for (int col = 0; col < (s32)ARRAY_SIZE(m_tbl); col++) {
m_tbl[col].Init();
m_tbl[col].field_0x34 = 1e9f;
}
field_0x14 = 0;
}
}
/* 800CDE20-800CDF98 .text Regist__12dSnap_packetFRC9dSnap_Obj */
int dSnap_packet::Regist(const dSnap_Obj& obj) {
if (!ChkReleaseShutter()) {
return 0;
}
fopAc_ac_c* player = dComIfGp_getPlayer(0);
if (field_0x14 >= 0x3F) {
int col;
bool r6 = false;
int r29;
f32 f30 = -1e9f;
for (col = 0; col < ARRAY_SIZE(m_tbl); col++) {
if (f30 < m_tbl[col].field_0x34 && m_tbl[col].m_obj.GetPhoto() >= 0x48) {
r6 = true;
r29 = col;
f30 = m_tbl[col].field_0x34;
}
}
if (!r6) {
return 0;
}
f32 dist2 = player->current.pos.abs2(obj.mCenter);
if (obj.GetPhoto() >= 0x48 && dist2 > f30) {
return 0;
}
m_tbl[r29].Regist(obj);
m_tbl[r29].field_0x34 = dist2;
return 0;
} else {
m_tbl[field_0x14].Regist(obj);
m_tbl[field_0x14].field_0x34 = player->current.pos.abs2(m_tbl[field_0x14].m_obj.mCenter);
field_0x14++;
return 1;
}
}
/* 800CDF98-800CE118 .text dSnap_MatDl__Fv */
void dSnap_MatDl() {
GXSetNumChans(1);
GXSetCullMode(GX_CULL_BACK);
GXSetNumTexGens(0);
GXSetNumIndStages(0);
GXSetNumTevStages(1);
GXSetCoPlanar(GX_FALSE);
GXSetChanCtrl(GX_COLOR0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE);
GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_ZERO);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetZCompLoc(GX_TRUE);
GXSetPixelFmt(GX_PF_RGBA6_Z24, GX_ZC_LINEAR);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_ONE, GX_LO_CLEAR);
GXSetColorUpdate(GX_FALSE);
GXSetAlphaUpdate(GX_TRUE);
GXSetDither(GX_FALSE);
}
/* 800CE118-800CE298 .text dSnap_AlphaClearDL__Fv */
void dSnap_AlphaClearDL() {
GXSetNumChans(1);
GXSetCullMode(GX_CULL_BACK);
GXSetNumTexGens(0);
GXSetNumIndStages(0);
GXSetNumTevStages(1);
GXSetCoPlanar(GX_FALSE);
GXSetChanCtrl(GX_COLOR0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE);
GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_ZERO);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetZCompLoc(GX_TRUE);
GXSetPixelFmt(GX_PF_RGBA6_Z24, GX_ZC_LINEAR);
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE);
GXSetBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_CLEAR);
GXSetColorUpdate(GX_FALSE);
GXSetAlphaUpdate(GX_TRUE);
GXSetDither(GX_TRUE);
}
/* 800CE298-800CE374 .text draw__12dSnap_packetFv */
void dSnap_packet::draw() {
if (!ChkReleaseShutter()) {
return;
}
#if VERSION != VERSION_JPN
j3dSys.reinitGX();
#endif
ClearAlphaBuffer();
dSnap_MatDl();
for (int col = 0; col < field_0x14; col++) {
GXColor color = {0xFF, 0x00, 0x00, 0xFF};
GXSetDstAlpha(GX_TRUE, col*4);
GXSetTevColor(GX_TEVREG0, color);
m_tbl[col].m_obj.draw();
}
Judge();
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
GXSetBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_CLEAR);
GXSetDither(GX_TRUE);
}
/* 800CE374-800CE4A8 .text ClearAlphaBuffer__12dSnap_packetFv */
void dSnap_packet::ClearAlphaBuffer() {
GXColor color = {0x00, 0xFF, 0x00, 0xFF};
dSnap_AlphaClearDL();
GXSetDstAlpha(GX_TRUE, 0xFC);
GXSetTevColor(GX_TEVREG0, color);
Mtx44 mtx;
C_MTXOrtho(mtx, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 10.0f);
GXSetProjection(mtx, GX_ORTHOGRAPHIC);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16(0x0AE, 0x083, -0x005);
GXPosition3s16(0x1D4, 0x083, -0x005);
GXPosition3s16(0x1D4, 0x149, -0x005);
GXPosition3s16(0x0AE, 0x149, -0x005);
view_class* view = dComIfGp_getCamera(dComIfGp_getWindow(0)->getCameraID());
GXSetProjection(view->mProjMtx, GX_PERSPECTIVE);
}
/* 800CE4A8-800CE610 .text Judge__12dSnap_packetFv */
void dSnap_packet::Judge() {
if (!ChkReleaseShutter()) {
return;
}
mResult = 0;
GXDrawDone();
GXPokeAlphaRead(GX_READ_NONE);
for (int col = 0; col < (s32)ARRAY_SIZE(m_tbl); col++) {
m_tbl[col].m_obj.mCapturedPixels = 0;
m_tbl[col].m_obj.SetAreaClear();
}
for (int y = DSNAP_SHUTTER_TOP; y < DSNAP_SHUTTER_BOTTOM; y++) {
for (int x = DSNAP_SHUTTER_LEFT; x < DSNAP_SHUTTER_RIGHT; x++) {
u32 sp8;
GXPeekARGB(x, y, &sp8);
int r0 = sp8 >> 26;
if (r0 >= 0x3F) {
continue;
}
m_tbl[r0].m_obj.mCapturedPixels++;
m_tbl[r0].m_obj.SetArea(x, y);
}
}
for (int col = 0; col < field_0x14; col++) {
if (m_tbl[col].m_obj.mCapturedPixels == 0) {
continue;
}
f32 area = m_tbl[col].m_obj.CalcArea2D();
if (cM3d_IsZero(area)) {
continue;
}
m_tbl[col].m_obj.mCapturedRatio = m_tbl[col].m_obj.mCapturedPixels / area;
}
SetResult();
mFlag &= ~1;
}
/* 800CE610-800CE6A4 .text FindPhoto__12dSnap_packetFii */
int dSnap_packet::FindPhoto(int r4, int r5) {
if (r4 < 0 || r4 >= field_0x14) {
return -1;
}
for (int col = r4; col < field_0x14; col++) {
if (m_tbl[col].m_obj.ChkPhoto(r5)) {
return col;
}
}
return -1;
}
/* 800CE6A4-800CE70C .text JudgePost__12dSnap_packetFv */
int dSnap_packet::JudgePost() {
int col = FindPhoto(0, 1);
if (col == -1) {
return 0;
}
if (m_tbl[col].m_obj.ChkSuccess(2000, 0.25f)) {
return 1;
} else {
return 0;
}
}
/* 800CE70C-800CE77C .text JudgeBikutsuki__12dSnap_packetFv */
int dSnap_packet::JudgeBikutsuki() {
int col = FindPhoto(0, 2);
if (col == -1) {
return 0;
}
if (m_tbl[col].m_obj.ChkSuccess(2000, 0.25f)) {
return 2;
} else {
return 0;
}
}
/* 800CE77C-800CE83C .text JudgeCoupleLook__12dSnap_packetFv */
int dSnap_packet::JudgeCoupleLook() {
int col1 = FindPhoto(0, 3);
if (col1 == -1) {
return 0;
}
int col2 = FindPhoto(col1+1, 3);
if (col2 == -1) {
return 0;
}
if (m_tbl[col1].m_obj.ChkSuccess(2000, 0.25f) &&
m_tbl[col2].m_obj.ChkSuccess(2000, 0.25f))
{
return 3;
} else {
return 0;
}
}
/* 800CE83C-800CE8AC .text JudgeGF__12dSnap_packetFv */
int dSnap_packet::JudgeGF() {
int col = FindPhoto(0, 4);
if (col == -1) {
return 0;
}
if (m_tbl[col].m_obj.ChkSuccess(5000, 0.45f)) {
return 4;
} else {
return 0;
}
}
/* 800CE8AC-800CE96C .text JudgeGenzo__12dSnap_packetFv */
int dSnap_packet::JudgeGenzo() {
int col1 = FindPhoto(0, 5);
if (col1 == -1) {
return 0;
}
int col2 = FindPhoto(0, 6);
if (col2 == -1) {
return 0;
}
if (m_tbl[col1].m_obj.ChkSuccess(1500, 0.2f) &&
m_tbl[col2].m_obj.ChkSuccess(1500, 0.2f))
{
return 5;
} else {
return 0;
}
}
/* 800CE96C-800CEA08 .text JudgeObasan4__12dSnap_packetFv */
int dSnap_packet::JudgeObasan4() {
int col1 = FindPhoto(0, 6);
if (col1 == -1) {
return 0;
}
int col2 = FindPhoto(0, 5);
if (col2 != -1) {
return 0;
}
if (m_tbl[col1].m_obj.ChkSuccess(4000, 0.5f)) {
return 6;
} else {
return 0;
}
}
/* 800CEA08-800CEA10 .text JudgeTestM__12dSnap_packetFv */
int dSnap_packet::JudgeTestM() {
return 0;
}
/* 800CEA10-800CEA80 .text JudgeGene__12dSnap_packetFv */
int dSnap_packet::JudgeGene() {
int col = FindPhoto(0, field_0x10);
if (col == -1) {
return 0;
}
if (m_tbl[col].m_obj.ChkSuccess(4000, 0.5f)) {
return field_0x10;
} else {
return 0;
}
}
/* 800CEA80-800CEB80 .text JudgeFigure__12dSnap_packetFi */
int dSnap_packet::JudgeFigure(int col) {
if (field_0x10 >= 0xD0) {
return 0;
}
if (field_0x10 >= 0xCF) {
return 0;
}
int minPixels;
f32 minRatio;
if (field_0x10 > 0x48) {
int tableIndex = dSnap_PhotoIndex2TableIndex(field_0x10);
minPixels = l_CharaData[tableIndex].minPixels;
minRatio = l_CharaData[tableIndex].minRatio / 1000.0f;
} else {
return 0;
}
if (m_tbl[col].m_obj.mCapturedPixels < minPixels) {
return 0;
}
if (m_tbl[col].m_obj.mCapturedRatio < minRatio) {
mResultDetail |= 2;
}
if (m_tbl[col].m_obj.ChkCamCull()) {
mResultDetail |= 1;
}
return field_0x10;
}
/* 800CEB80-800CED0C .text SetResult__12dSnap_packetFv */
void dSnap_packet::SetResult() {
mResult = 0;
mResultDetail = 0;
u8 sp8[0xB];
for (int i = 0; i < ARRAY_SIZE(sp8); i++) {
sp8[i] = 0;
}
int r30 = -1;
for (int col = 0; col < field_0x14; col++) {
if (m_tbl[col].m_obj.mCapturedPixels == 0 || m_tbl[col].m_obj.GetPhoto() == 0) {
continue;
}
JUT_ASSERT(VERSION_SELECT(2325, 2327, 2327), 0 <= m_tbl[col].m_obj.GetPhoto() && m_tbl[col].m_obj.GetPhoto() < DSNAP_TYPE_LAST_INDEX);
if (m_tbl[col].m_obj.GetPhoto() < (s32)ARRAY_SIZE(sp8)) {
if (sp8[m_tbl[col].m_obj.GetPhoto()] != 0) {
continue;
}
if (m_judge_tbl[m_tbl[col].m_obj.GetPhoto()] != NULL) {
field_0x10 = m_tbl[col].m_obj.GetPhoto();
mResult = (this->*m_judge_tbl[m_tbl[col].m_obj.GetPhoto()])();
r30 = m_tbl[col].m_obj.mCapturedPixels;
if (mResult != 0) {
return;
}
}
sp8[m_tbl[col].m_obj.GetPhoto()] = 1;
} else {
if (r30 < m_tbl[col].m_obj.mCapturedPixels) {
field_0x10 = m_tbl[col].m_obj.GetPhoto();
mResult = JudgeFigure(col);
r30 = m_tbl[col].m_obj.mCapturedPixels;
}
}
}
}
/* 800CED0C-800CED34 .text dSnap_Create__Fv */
void dSnap_Create() {
l_snap.Create();
}
/* 800CED34-800CED5C .text dSnap_ReleaseShutter__Fv */
void dSnap_ReleaseShutter() {
l_snap.ReleaseShutter();
}
/* 800CED5C-800CED84 .text dSnap_Execute__Fv */
void dSnap_Execute() {
l_snap.Execute();
}
/* 800CED84-800CED94 .text dSnap_GetResult__Fv */
int dSnap_GetResult() {
return l_snap.GetResult();
}
/* 800CED94-800CEDA4 .text dSnap_GetResultDetail__Fv */
u8 dSnap_GetResultDetail() {
return l_snap.GetResultDetail();
}
/* 800CEDA4-800CEDD0 .text dSnap_RegistSnapObj__FR9dSnap_Obj */
void dSnap_RegistSnapObj(dSnap_Obj& obj) {
l_snap.Regist(obj);
}
/* 800CEDD0-800CEDF8 .text dSnap_RegistFig__FUcP10fopAc_ac_cfff */
void dSnap_RegistFig(u8 r3, fopAc_ac_c* actor, f32 f1, f32 f2, f32 f3) {
dSnap_RegistFig(r3, actor, actor->current.pos, actor->shape_angle.y, f1, f2, f3);
}
/* 800CEDF8-800CEFD4 .text dSnap_RegistFig__FUcP10fopAc_ac_cRC3Vecsfff */
void dSnap_RegistFig(u8 r3, fopAc_ac_c* actor, const Vec& pos, s16 angleY, f32 f1, f32 f2, f32 f3) {
if (!l_snap.ChkReleaseShutter()) {
return;
}
if (r3 >= 0xCF) {
return;
}
int tableIndex = dSnap_PhotoIndex2TableIndex(r3);
const CharaData& chara = l_CharaData[tableIndex];
mDoMtx_stack_c::YrotS(angleY);
cXyz sp14;
cXyz sp8;
sp8.x = chara.offset.x;
sp8.y = chara.offset.y;
sp8.z = chara.offset.z;
sp8.x = sp8.x * f3;
sp8.y = sp8.y * f3;
sp8.z = sp8.z * f3;
mDoMtx_stack_c::multVec(&sp8, &sp14);
sp14 += pos;
dSnap_Obj sp20;
sp20.SetGeo(sp14, chara.radius*f2, chara.height*f1, (int)angleY);
sp20.SetInf(r3, actor, 0, 4, chara.cullAngle);
dSnap_RegistSnapObj(sp20);
}
/* 800CEFD4-800CF054 .text dSnap_DebugDraw__Fv */
void dSnap_DebugDraw() {
if (l_snap.ChkReleaseShutter()) {
dComIfGd_setListMaskOff();
j3dSys.getDrawBuffer(1)->entryImm(&l_snap, 0xFF);
dComIfGd_setList();
}
}
/* 800CF054-800CF058 .text dSnap_Delete__Fv */
void dSnap_Delete() {}