mirror of
https://github.com/zeldaret/tp
synced 2026-05-23 06:54:28 -04:00
1033 lines
33 KiB
C++
1033 lines
33 KiB
C++
#include "Z2AudioLib/Z2SpeechMgr2.h"
|
|
#include "Z2AudioLib/Z2AudioMgr.h"
|
|
#include "Z2AudioLib/Z2EnvSeMgr.h"
|
|
#include "Z2AudioLib/Z2SceneMgr.h"
|
|
#include "Z2AudioLib/Z2SeMgr.h"
|
|
#include "JSystem/JMath/JMath.h"
|
|
|
|
struct Z2MdnPrm {
|
|
struct Unit {
|
|
u8 start;
|
|
u8 end;
|
|
};
|
|
|
|
struct Prm {
|
|
const Unit* main;
|
|
const u8* tail;
|
|
u8 mainNum;
|
|
u8 tailNum1;
|
|
u8 tailNum2;
|
|
};
|
|
|
|
static Unit const sReply[50];
|
|
static u8 const sReplyTail[10];
|
|
|
|
static Unit const sJoke[50];
|
|
static u8 const sJokeTail[10];
|
|
|
|
static Unit const sSexy[50];
|
|
static u8 const sSexyTail[10];
|
|
|
|
static Unit const sRidicule[50];
|
|
static u8 const sRidiculeTail[10];
|
|
|
|
static Unit const sBoring[54];
|
|
static u8 const sBoringTail[6];
|
|
|
|
static Unit const sIrritated[47];
|
|
static u8 const sIrritatedTail[10];
|
|
|
|
static Unit const sOrder[57];
|
|
static u8 const sOrderTail[6];
|
|
|
|
static Unit const sResent[53];
|
|
static u8 const sResentTail[5];
|
|
|
|
static Unit const sCheerful[53];
|
|
static u8 const sCheerfulTail[8];
|
|
|
|
static Unit const sConfused[53];
|
|
static u8 const sConfusedTail[5];
|
|
|
|
static Unit const sHostility[52];
|
|
static u8 const sHostilityTail[7];
|
|
|
|
static Unit const sTired[53];
|
|
static u8 const sTiredTail[8];
|
|
|
|
static Unit const sSerious[53];
|
|
static u8 const sSeriousTail[7];
|
|
|
|
static Unit const sReplyb[42];
|
|
static u8 const sReplybTail[7];
|
|
|
|
static Unit const sApologize[50];
|
|
static u8 const sApologizeTail[9];
|
|
|
|
static Unit const sDeside[50];
|
|
static u8 const sDesideTail[8];
|
|
|
|
static Unit const sAfford[52];
|
|
static u8 const sAffordTail[12];
|
|
|
|
static Prm const sPrm[17];
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sReply[50] = {
|
|
0x6A, 0x8A, 0x50, 0x5F, 0x53, 0x37, 0x37, 0x4F, 0x4F, 0x5E, 0xAA, 0x46, 0x52, 0x5A, 0x5A,
|
|
0x4F, 0x4F, 0x45, 0x45, 0x56, 0x64, 0x79, 0x79, 0x79, 0x87, 0x95, 0x95, 0x89, 0x89, 0x4C,
|
|
0x4C, 0x4B, 0x52, 0x41, 0x41, 0x5B, 0x5F, 0x71, 0x53, 0x47, 0x89, 0x7D, 0x77, 0x88, 0x88,
|
|
0x80, 0x80, 0x77, 0x52, 0x43, 0x43, 0x42, 0x42, 0x42, 0x42, 0x53, 0x53, 0x4C, 0x4C, 0x5B,
|
|
0x5A, 0x70, 0x75, 0x33, 0x5E, 0x5F, 0x5F, 0x60, 0x5E, 0x68, 0x4B, 0x3B, 0x3B, 0x58, 0x59,
|
|
0x5D, 0x60, 0x63, 0x63, 0x54, 0x3E, 0x38, 0x38, 0x39, 0x35, 0x41, 0x41, 0x41, 0x41, 0x56,
|
|
0x71, 0x85, 0x85, 0xA2, 0xA2, 0x52, 0x52, 0x5C, 0x5C, 0x75,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sReplyTail[10] = {
|
|
0x5E, 0x7F, 0x68, 0x39, 0x56, 0x75, 0x47, 0x71, 0x7D, 0x33,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sJoke[50] = {
|
|
0x68, 0x57, 0x57, 0x55, 0x55, 0x51, 0x5B, 0x64, 0x6B, 0x7B, 0x7B, 0x5C, 0x77, 0x97, 0x8D,
|
|
0x97, 0x97, 0x8D, 0x66, 0x69, 0xA2, 0x5C, 0x87, 0x4F, 0x69, 0x5F, 0x5F, 0x83, 0x83, 0x82,
|
|
0x7F, 0x96, 0x96, 0xB0, 0x70, 0xA1, 0x6D, 0x6D, 0x6D, 0x59, 0x4C, 0x4B, 0x5A, 0x40, 0x4A,
|
|
0xAD, 0xA3, 0xAE, 0xAE, 0x63, 0x46, 0x45, 0x3D, 0x47, 0x47, 0x5A, 0x4D, 0x6E, 0x6A, 0x7F,
|
|
0x7F, 0x7F, 0x7F, 0xA1, 0xA1, 0xA5, 0x5C, 0x60, 0x5C, 0x6B, 0x6B, 0x7E, 0x81, 0x60, 0x66,
|
|
0x64, 0x60, 0xB1, 0x6C, 0x6D, 0x6D, 0x7E, 0x7A, 0x97, 0x97, 0x99, 0xA5, 0x89, 0x90, 0xA4,
|
|
0x45, 0x45, 0x29, 0x4C, 0x4B, 0x64, 0x64, 0x60, 0x5C, 0xB1,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sJokeTail[10] = {
|
|
0x51, 0x97, 0x60, 0xB0, 0x6F, 0x5E, 0x5A, 0xA6, 0x4F, 0x4F,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sSexy[50] = {
|
|
0x5E, 0x60, 0x5F, 0x63, 0x63, 0x72, 0x72, 0x78, 0x4D, 0x7A, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E,
|
|
0x59, 0x59, 0x7A, 0x7A, 0xA5, 0x90, 0x8D, 0x86, 0x62, 0x72, 0x79, 0x79, 0x86, 0x7F, 0x8B,
|
|
0x85, 0x7B, 0x7B, 0x5E, 0x5E, 0x6D, 0x6D, 0x88, 0x5F, 0xA3, 0xA3, 0x95, 0x95, 0x7F, 0x79,
|
|
0x79, 0x79, 0x73, 0x5E, 0x54, 0x45, 0x4F, 0x4F, 0x63, 0x51, 0x56, 0x54, 0x63, 0x63, 0x7B,
|
|
0x7B, 0x7B, 0x7B, 0x3B, 0x3B, 0x52, 0x88, 0x8C, 0x6B, 0x98, 0x98, 0xA3, 0xA6, 0x86, 0x89,
|
|
0x76, 0x79, 0x79, 0x5C, 0x6A, 0x90, 0xAB, 0x5C, 0x7D, 0x52, 0x49, 0x54, 0x57, 0x49, 0x55,
|
|
0x79, 0x65, 0x65, 0x4A, 0x5C, 0x78, 0x78, 0x8B, 0x8D, 0x7C,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sSexyTail[10] = {
|
|
0x52, 0x79, 0x82, 0xA5, 0x62, 0x86, 0x3F, 0x7D, 0x57, 0x7C,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sRidicule[50] = {
|
|
0xA7, 0x5A, 0x5A, 0x52, 0x52, 0x85, 0x85, 0x8C, 0x63, 0x73, 0x73, 0x90, 0x50, 0x46, 0x74,
|
|
0x74, 0xA3, 0xA7, 0x41, 0x51, 0x58, 0x34, 0x34, 0x2A, 0x5A, 0x81, 0x5D, 0x42, 0x4B, 0x70,
|
|
0x70, 0xB1, 0xB1, 0xB1, 0xB1, 0x65, 0x6A, 0xB1, 0x54, 0xA8, 0xA8, 0x6B, 0x6C, 0x55, 0x55,
|
|
0x63, 0x63, 0x6F, 0x7E, 0x64, 0x58, 0x62, 0x63, 0x47, 0x5C, 0x5C, 0x5C, 0x4D, 0x79, 0x40,
|
|
0x40, 0x58, 0x48, 0x54, 0x54, 0x4E, 0x4E, 0x6E, 0x6E, 0x4B, 0x47, 0x67, 0x90, 0xA0, 0x79,
|
|
0x79, 0x79, 0x7C, 0x7C, 0x6C, 0x6C, 0x73, 0x73, 0x6E, 0x6E, 0x36, 0x3F, 0x3C, 0x56, 0x2D,
|
|
0x2D, 0x2D, 0x2D, 0x8C, 0x8C, 0x8B, 0x8B, 0x93, 0x93, 0x6E,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sRidiculeTail[10] = {
|
|
0x81, 0x67, 0x6D, 0x8C, 0x90, 0x85, 0xB1, 0x4D, 0x4F, 0x6E,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sBoring[54] = {
|
|
0x8E, 0x9C, 0x9C, 0x5A, 0x5A, 0x52, 0x52, 0x5B, 0x5C, 0x56, 0x5C, 0x52, 0x52, 0x2D, 0x2D, 0x5B,
|
|
0x59, 0x56, 0x56, 0x56, 0x56, 0x6B, 0x6B, 0x58, 0x4C, 0x8E, 0x8E, 0x59, 0x61, 0x54, 0xA0, 0x4D,
|
|
0x5D, 0x59, 0x48, 0x30, 0x30, 0x5B, 0x5B, 0x5B, 0x4A, 0x64, 0x64, 0x7A, 0x7A, 0x92, 0x62, 0x62,
|
|
0x65, 0xA0, 0xA0, 0xB3, 0xB3, 0x4E, 0x4A, 0x49, 0x49, 0x98, 0x98, 0x83, 0x83, 0x76, 0x76, 0x7E,
|
|
0x7F, 0x58, 0x5A, 0x51, 0x57, 0x65, 0x65, 0x60, 0x60, 0x72, 0x72, 0x85, 0x8C, 0x89, 0x89, 0x89,
|
|
0x89, 0x5A, 0x5A, 0x63, 0x66, 0x5E, 0x5E, 0x71, 0x62, 0x55, 0x55, 0x85, 0x85, 0x5B, 0x5B, 0x5B,
|
|
0x5B, 0x5E, 0x70, 0x56, 0x56, 0x4C, 0x4C, 0x59, 0x59, 0x5B, 0x5B, 0x71,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sBoringTail[6] = {
|
|
0x92, 0x58, 0x59, 0x5B, 0x70, 0x71,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sIrritated[47] = {
|
|
0x6C, 0x91, 0x67, 0x8B, 0x8B, 0xA2, 0xA2, 0xAB, 0x48, 0x64, 0x73, 0x61, 0x61, 0x64, 0x64, 0x6D,
|
|
0x60, 0x7E, 0x4A, 0x55, 0x6A, 0x63, 0x66, 0x78, 0x5C, 0x5A, 0x6E, 0x79, 0x75, 0x62, 0x62, 0x57,
|
|
0x85, 0x3F, 0x3C, 0x83, 0x83, 0x9B, 0x78, 0x65, 0x65, 0x67, 0x65, 0x65, 0x87, 0x88, 0x88, 0x3D,
|
|
0x4C, 0x68, 0x68, 0x4D, 0x5B, 0x6E, 0x6E, 0x74, 0x56, 0x63, 0x6B, 0x8C, 0x8C, 0x93, 0x93, 0x4E,
|
|
0x4E, 0x69, 0x77, 0x75, 0x75, 0x71, 0x79, 0x4F, 0x4F, 0x6F, 0x4E, 0x42, 0x71, 0x75, 0x5E, 0x68,
|
|
0xAD, 0x6E, 0x72, 0x82, 0x83, 0x87, 0x85, 0x85, 0x85, 0x8E, 0x60, 0x6D, 0x80, 0x80,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sIrritatedTail[10] = {
|
|
0x64, 0x61, 0x4E, 0x91, 0xA0, 0x85, 0x9B, 0x67, 0x6F, 0x64,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sOrder[57] = {
|
|
0x77, 0x5F, 0x5F, 0x73, 0x73, 0x66, 0x66, 0x6B, 0x6B, 0x7A, 0x7A, 0x60, 0x54, 0x5F, 0x5F,
|
|
0x69, 0x69, 0x5A, 0x86, 0x84, 0x84, 0x96, 0x96, 0x94, 0x94, 0x8A, 0x87, 0x84, 0x5A, 0x2C,
|
|
0x4E, 0x52, 0x52, 0x52, 0x52, 0x51, 0x51, 0x6E, 0x62, 0x5E, 0x6C, 0xA3, 0xA3, 0x5B, 0x62,
|
|
0x63, 0x63, 0x66, 0x66, 0x51, 0x51, 0x5B, 0x5B, 0x78, 0x78, 0x8F, 0x8F, 0x83, 0x61, 0x7A,
|
|
0x7A, 0x4E, 0x75, 0x81, 0x81, 0x71, 0x71, 0x83, 0x83, 0x66, 0x5D, 0x5D, 0x65, 0x47, 0x53,
|
|
0x6D, 0x6D, 0x8C, 0x8F, 0x8F, 0x8F, 0x2C, 0x2B, 0x6A, 0x6A, 0x5C, 0x5C, 0x54, 0x54, 0x60,
|
|
0xAC, 0xA1, 0x4E, 0x5B, 0x5B, 0x5F, 0x5F, 0x79, 0x4A, 0x60, 0x60, 0x5A, 0x5A, 0x35, 0x2E,
|
|
0x48, 0x48, 0x69, 0x69, 0x6D, 0x6D, 0x94, 0x94, 0x97,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sOrderTail[6] = {
|
|
0x60, 0xA8, 0x5B, 0x4E, 0x5D, 0x87,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sResent[53] = {
|
|
0x6F, 0x5F, 0x5F, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x4B, 0x4B, 0x6B, 0x6B, 0x86,
|
|
0x86, 0x4A, 0x4A, 0x6D, 0x6D, 0x6D, 0x6D, 0x8C, 0x8C, 0x84, 0x84, 0x64, 0x64, 0x6C, 0x6C, 0x92,
|
|
0x92, 0x6A, 0x5F, 0x6F, 0x6F, 0x62, 0x62, 0x62, 0x75, 0x5A, 0x5A, 0x5A, 0x5A, 0x60, 0x60, 0x6A,
|
|
0x6A, 0x76, 0x76, 0x6A, 0x6A, 0x7F, 0x7F, 0x9A, 0x9A, 0x98, 0x56, 0x5B, 0x5B, 0x6F, 0x82, 0x98,
|
|
0x98, 0x9B, 0x9B, 0x6E, 0x6E, 0x61, 0x61, 0x5C, 0x5F, 0x67, 0x62, 0x8A, 0xA9, 0x65, 0x65, 0x31,
|
|
0x31, 0x8C, 0x8C, 0x69, 0x69, 0x7E, 0x67, 0x67, 0x5B, 0x73, 0x73, 0x65, 0x65, 0x56, 0x56, 0x5E,
|
|
0x5E, 0xAA, 0xAA, 0x9E, 0x9E, 0x5A, 0x5A, 0x57, 0x57, 0x57,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sResentTail[5] = {
|
|
0x4A, 0x98, 0x8A, 0x7E, 0x57,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sCheerful[53] = {
|
|
0x64, 0x6D, 0x6D, 0x6D, 0x99, 0x6D, 0x40, 0x51, 0x51, 0x6F, 0x6F, 0x66, 0x66, 0x60, 0xA7, 0xAF,
|
|
0xB3, 0x61, 0x61, 0xA7, 0xA7, 0x5E, 0x8B, 0x75, 0x77, 0x72, 0x72, 0x93, 0x93, 0x8B, 0x8B, 0x88,
|
|
0x88, 0x77, 0x77, 0x80, 0x80, 0x80, 0x80, 0x67, 0x67, 0x4D, 0x4A, 0x69, 0x44, 0xA1, 0x64, 0xA8,
|
|
0xAE, 0x85, 0x85, 0x8D, 0x95, 0xA9, 0xA9, 0x91, 0x91, 0x67, 0x69, 0x60, 0x60, 0x5E, 0x5E, 0x54,
|
|
0x34, 0x6B, 0x63, 0x4F, 0x4F, 0x46, 0x46, 0x55, 0x6F, 0x6A, 0x6A, 0x75, 0x75, 0x75, 0x75, 0x70,
|
|
0x70, 0x9F, 0x9F, 0x55, 0x55, 0x63, 0x63, 0x63, 0x62, 0x9C, 0x9C, 0xA8, 0x85, 0x65, 0x65, 0x65,
|
|
0x65, 0x70, 0x6B, 0x6B, 0x6B, 0x6D, 0x6D, 0x57, 0x57, 0x7B,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sCheerfulTail[8] = {
|
|
0x60, 0x6D, 0x4D, 0x44, 0x9C, 0x54, 0x70, 0x7B,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sConfused[53] = {
|
|
0x83, 0x80, 0x80, 0x82, 0x82, 0x82, 0x82, 0x5B, 0x75, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75, 0x62,
|
|
0x62, 0x62, 0x4D, 0x56, 0x56, 0x59, 0x59, 0x59, 0x59, 0x74, 0x74, 0x85, 0x7D, 0x8D, 0x8D, 0x70,
|
|
0x70, 0x5A, 0x5A, 0x6B, 0x6B, 0x6B, 0x6B, 0x70, 0x79, 0x73, 0x73, 0x71, 0x71, 0x75, 0x75, 0x7B,
|
|
0x7B, 0x5F, 0x5F, 0x62, 0x76, 0x64, 0x7B, 0x7B, 0x7B, 0x7C, 0x7F, 0x65, 0x7C, 0x7C, 0x68, 0x43,
|
|
0x40, 0x67, 0x67, 0x69, 0x69, 0x5F, 0x5F, 0x5D, 0x5D, 0x5D, 0xA2, 0xA2, 0xA2, 0xA6, 0xA6, 0x9A,
|
|
0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x8E, 0x8E, 0x94, 0x8E, 0x95, 0x95, 0x95, 0x95, 0x42,
|
|
0x38, 0x38, 0x38, 0x83, 0x83, 0x8E, 0x8E, 0x4C, 0x56, 0x56,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sConfusedTail[5] = {
|
|
0x2C, 0x42, 0x4C, 0x7C, 0x49,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sHostility[52] = {
|
|
0x85, 0x71, 0x71, 0x73, 0x73, 0x3B, 0x62, 0x84, 0x94, 0x94, 0x94, 0xAF, 0x98, 0xAD, 0xAD,
|
|
0x5A, 0x5A, 0x63, 0x63, 0x97, 0x90, 0x90, 0x7B, 0x73, 0x73, 0x63, 0x63, 0x55, 0x55, 0x65,
|
|
0x66, 0x7F, 0x7F, 0x87, 0x87, 0x8A, 0x8A, 0x94, 0x5D, 0x5C, 0x5A, 0x67, 0x67, 0x68, 0x68,
|
|
0x5C, 0x5C, 0x56, 0x56, 0x53, 0x53, 0x73, 0x73, 0x87, 0x87, 0x8B, 0x8B, 0x74, 0x74, 0x5B,
|
|
0x6F, 0x78, 0x73, 0x6E, 0x6E, 0x71, 0x71, 0x5B, 0x5B, 0x6E, 0x6E, 0x66, 0x57, 0x5C, 0x61,
|
|
0x65, 0x6B, 0x6E, 0x6E, 0x83, 0x83, 0x96, 0x3F, 0x56, 0x56, 0x56, 0x56, 0x4F, 0x5F, 0x57,
|
|
0x62, 0x6A, 0x5F, 0x72, 0x72, 0x62, 0x62, 0x65, 0x5E, 0x69, 0x69, 0x63, 0x63, 0x7F,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sHostilityTail[7] = {
|
|
0x97, 0x67, 0x94, 0x6A, 0x66, 0x4F, 0x6A,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sTired[53] = {
|
|
0x70, 0x70, 0x70, 0x5C, 0x5C, 0x5C, 0x6F, 0x6F, 0x6F, 0x93, 0x8C, 0x9A, 0x9D, 0x89, 0x99, 0x7A,
|
|
0x91, 0x8D, 0x8D, 0x8D, 0x8D, 0x69, 0x69, 0x72, 0x72, 0x65, 0x65, 0x65, 0x9E, 0x98, 0x98, 0x2A,
|
|
0x50, 0x54, 0x54, 0x49, 0x64, 0x59, 0x59, 0x62, 0x62, 0x62, 0x44, 0x5E, 0x9F, 0x91, 0x63, 0x63,
|
|
0x63, 0x57, 0x57, 0x2A, 0x64, 0x52, 0x5B, 0x5C, 0x5C, 0x5C, 0x5C, 0x59, 0x63, 0x75, 0x66, 0x69,
|
|
0x61, 0x67, 0x67, 0x67, 0x67, 0x65, 0x6A, 0x6A, 0x7B, 0x75, 0x75, 0x75, 0x75, 0x69, 0x69, 0x64,
|
|
0x64, 0x51, 0x67, 0x68, 0x68, 0x6F, 0x6F, 0x6F, 0x7F, 0x95, 0x9C, 0x87, 0x84, 0x8A, 0x72, 0x84,
|
|
0x84, 0x6D, 0x6D, 0x6A, 0x6A, 0x8D, 0x8D, 0x8D, 0x8D, 0x3B,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sTiredTail[8] = {
|
|
0x66, 0x6F, 0x3B, 0x7A, 0x49, 0x91, 0x5C, 0x6A,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sSerious[53] = {
|
|
0x52, 0x65, 0x65, 0x72, 0x5A, 0x61, 0x61, 0x7B, 0x80, 0x92, 0x93, 0x9D, 0x9D, 0x70, 0x79, 0x76,
|
|
0x62, 0x57, 0x5A, 0x53, 0x53, 0x59, 0x59, 0x65, 0x63, 0x60, 0x60, 0x6A, 0x83, 0x80, 0x7F, 0x5D,
|
|
0x5C, 0x45, 0x5D, 0x71, 0x72, 0x65, 0x65, 0x65, 0x66, 0x4B, 0xB2, 0x60, 0x5C, 0x5C, 0x5C, 0x5B,
|
|
0x5F, 0x55, 0x55, 0x5E, 0x5E, 0x5F, 0x5B, 0x4D, 0x58, 0x60, 0x5B, 0x50, 0x50, 0x56, 0x56, 0x56,
|
|
0x7D, 0x6E, 0x72, 0x73, 0x73, 0x6A, 0x64, 0x54, 0x58, 0x57, 0x57, 0x5D, 0x5D, 0x64, 0x5F, 0x53,
|
|
0x53, 0x52, 0x54, 0x4D, 0x4D, 0x4D, 0x4D, 0x59, 0x59, 0x59, 0x69, 0x6B, 0x6B, 0x5A, 0x72, 0x69,
|
|
0x70, 0x60, 0x3C, 0x81, 0x81, 0x92, 0x92, 0x8E, 0x98, 0x87,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sSeriousTail[7] = {
|
|
0x7B, 0x69, 0x4B, 0x61, 0x52, 0x59, 0x87,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sReplyb[42] = {
|
|
0x5C, 0x45, 0x45, 0x71, 0x9F, 0x57, 0xB4, 0xB4, 0x56, 0x62, 0x8E, 0x61, 0x61, 0xB0,
|
|
0xB0, 0x3C, 0x59, 0x4A, 0x64, 0xA4, 0xA4, 0x5A, 0x5A, 0x5A, 0x5A, 0x72, 0x72, 0x4B,
|
|
0x6B, 0x97, 0x97, 0x59, 0x60, 0x60, 0x60, 0x69, 0x3E, 0x3E, 0x57, 0x42, 0x5E, 0x76,
|
|
0x76, 0x6C, 0x6C, 0x9B, 0x6E, 0x84, 0x6F, 0x9B, 0x9B, 0x90, 0x90, 0x76, 0x76, 0x72,
|
|
0x72, 0x8A, 0x2C, 0x1F, 0x1F, 0x95, 0x95, 0x69, 0x4C, 0x59, 0x59, 0x79, 0x5B, 0x44,
|
|
0x44, 0x4F, 0x52, 0x58, 0x5A, 0x6F, 0x6E, 0x8A, 0x8E, 0x8E, 0x8E, 0x8C, 0x8C, 0x9B,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sReplybTail[7] = {
|
|
0x4F, 0x4A, 0xA2, 0x4F, 0x65, 0x98, 0x5C,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sApologize[50] = {
|
|
0x6A, 0x6A, 0x6A, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x57, 0x57, 0x63, 0x61,
|
|
0x54, 0x54, 0x54, 0x54, 0x58, 0x58, 0x58, 0x58, 0x45, 0x45, 0x56, 0x56, 0x5B, 0x5B, 0x37,
|
|
0x53, 0x53, 0x53, 0x59, 0x59, 0x59, 0x49, 0x58, 0x58, 0x55, 0x56, 0x56, 0x83, 0x7F, 0x7F,
|
|
0x83, 0x83, 0x75, 0x75, 0x88, 0x76, 0x7E, 0x75, 0x75, 0x83, 0x85, 0x85, 0x85, 0x85, 0x8E,
|
|
0x89, 0x89, 0x89, 0x5C, 0x5C, 0x6E, 0x6E, 0x6E, 0x6E, 0x68, 0x65, 0x5F, 0x5F, 0x6A, 0x58,
|
|
0x5B, 0x70, 0x72, 0x72, 0x72, 0x72, 0x6E, 0x76, 0x6B, 0x6B, 0x58, 0x69, 0x66, 0x66, 0x64,
|
|
0x64, 0x60, 0x61, 0x63, 0x6A, 0x62, 0x62, 0x64, 0x65, 0x71,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sApologizeTail[9] = {
|
|
0x7C, 0x6E, 0x63, 0x71, 0x51, 0x37, 0x75, 0x58, 0x5C,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sDeside[50] = {
|
|
0x77, 0x77, 0x77, 0x58, 0x58, 0x6F, 0x78, 0x5F, 0x66, 0x5E, 0x6E, 0x62, 0x62, 0x2E, 0x5A,
|
|
0x58, 0x54, 0x52, 0x52, 0x5C, 0x59, 0x56, 0x56, 0x4B, 0x4B, 0x63, 0x63, 0x4D, 0x4E, 0x4A,
|
|
0x69, 0x71, 0x71, 0x76, 0x80, 0x80, 0x80, 0x73, 0x73, 0x5C, 0x7C, 0x64, 0x83, 0x89, 0x89,
|
|
0x82, 0x82, 0x7F, 0x7F, 0x88, 0x88, 0x90, 0x91, 0x89, 0x89, 0x57, 0x73, 0x67, 0x67, 0x81,
|
|
0x84, 0x6C, 0x6C, 0x5F, 0x69, 0x76, 0x76, 0x6C, 0x75, 0x82, 0x64, 0x75, 0x72, 0x80, 0x69,
|
|
0x62, 0x5D, 0x67, 0x5D, 0x5F, 0x62, 0x59, 0x5D, 0x55, 0x55, 0x48, 0x5F, 0x5F, 0x5F, 0x5D,
|
|
0x75, 0x6A, 0x66, 0x76, 0x69, 0x69, 0x69, 0x60, 0x60, 0x5F,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sDesideTail[8] = {
|
|
0x64, 0x2E, 0x4A, 0x57, 0x80, 0x48, 0x7C, 0x5F,
|
|
};
|
|
|
|
Z2MdnPrm::Unit const Z2MdnPrm::sAfford[52] = {
|
|
0x4E, 0x45, 0x52, 0x5B, 0x56, 0x5B, 0x59, 0x52, 0x52, 0x57, 0x5C, 0x50, 0x50, 0x49, 0x80,
|
|
0x6E, 0x6E, 0x5A, 0x5C, 0x60, 0x6A, 0x62, 0x62, 0x6A, 0x71, 0x48, 0x4C, 0x5B, 0x5A, 0x40,
|
|
0x40, 0x49, 0x49, 0x50, 0x51, 0x51, 0x51, 0x3A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x57, 0x57,
|
|
0x5A, 0x7F, 0x6A, 0x6A, 0x69, 0x69, 0x8C, 0x57, 0x57, 0x48, 0x48, 0x48, 0x4B, 0x4C, 0x49,
|
|
0x45, 0x47, 0x47, 0x4C, 0x48, 0x50, 0x50, 0x49, 0x42, 0x42, 0x42, 0x34, 0x26, 0x3C, 0x2C,
|
|
0x7D, 0x6E, 0x56, 0x79, 0x79, 0x50, 0x4C, 0x50, 0x43, 0x52, 0x51, 0x66, 0x6C, 0x64, 0x63,
|
|
0x63, 0x5D, 0x69, 0x70, 0x56, 0x50, 0x4B, 0x92, 0x86, 0x8F, 0x4B, 0x4F, 0x57, 0x56,
|
|
};
|
|
|
|
u8 const Z2MdnPrm::sAffordTail[12] = {
|
|
0x63, 0x8E, 0x5B, 0x59, 0x4C, 0x3A, 0x69, 0x47, 0x41, 0x59, 0x50, 0x55,
|
|
};
|
|
|
|
const Z2MdnPrm::Prm Z2MdnPrm::sPrm[17] = {
|
|
{Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, ARRAY_SIZE(Z2MdnPrm::sReply), 6, 4},
|
|
{Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, ARRAY_SIZE(Z2MdnPrm::sJoke), 3, 7},
|
|
{Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, ARRAY_SIZE(Z2MdnPrm::sSexy), 3, 7},
|
|
{Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, ARRAY_SIZE(Z2MdnPrm::sRidicule), 3, 7},
|
|
{Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, ARRAY_SIZE(Z2MdnPrm::sBoring), 1, 5},
|
|
{Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, ARRAY_SIZE(Z2MdnPrm::sIrritated), 3, 7},
|
|
{Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, ARRAY_SIZE(Z2MdnPrm::sOrder), 2, 4},
|
|
{Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, ARRAY_SIZE(Z2MdnPrm::sResent), 2, 3},
|
|
{Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, ARRAY_SIZE(Z2MdnPrm::sCheerful), 1, 7},
|
|
{Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, ARRAY_SIZE(Z2MdnPrm::sConfused), 3, 2},
|
|
{Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, ARRAY_SIZE(Z2MdnPrm::sHostility), 2, 5},
|
|
{Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, ARRAY_SIZE(Z2MdnPrm::sTired), 3, 5},
|
|
{Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, ARRAY_SIZE(Z2MdnPrm::sSerious), 2, 5},
|
|
{Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, ARRAY_SIZE(Z2MdnPrm::sReplyb), 4, 3},
|
|
{Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, ARRAY_SIZE(Z2MdnPrm::sApologize), 4, 5},
|
|
{Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, ARRAY_SIZE(Z2MdnPrm::sDeside), 1, 7},
|
|
{Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, ARRAY_SIZE(Z2MdnPrm::sAfford), 2, 10},
|
|
};
|
|
|
|
Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance<Z2SpeechMgr2>(true), random(0) {
|
|
mTextNum = 0;
|
|
mTextCount = -1;
|
|
mMood = 0;
|
|
mVoice = 0;
|
|
field_0x3ff = 0;
|
|
field_0x401 = 0;
|
|
|
|
for (int i = 0; i < 64; i++) {
|
|
field_0x402[i] = -1;
|
|
}
|
|
}
|
|
|
|
void Z2SpeechMgr2::setString(const u16* s, s16 textNum, u8 speakerID, u16 mood) {
|
|
switch (speakerID) {
|
|
case 0x13:
|
|
case 0x15:
|
|
mVoice = 1;
|
|
break;
|
|
case 0x12:
|
|
case 0x14:
|
|
mVoice = 2;
|
|
break;
|
|
case 0x04:
|
|
case 0x07:
|
|
case 0x0a:
|
|
case 0x16:
|
|
case 0x19:
|
|
case 0x1d:
|
|
case 0x21:
|
|
case 0x24:
|
|
case 0x29:
|
|
case 0x2c:
|
|
case 0x2d:
|
|
case 0x32:
|
|
case 0x33:
|
|
case 0x3f:
|
|
case 0x40:
|
|
case 0x41:
|
|
case 0x53:
|
|
case 0x54:
|
|
case 0x55:
|
|
case 0x59:
|
|
case 0x5a:
|
|
case 0x5b:
|
|
case 0x5c:
|
|
case 0x60:
|
|
case 0x61:
|
|
case 0x62:
|
|
case 0x63:
|
|
case 0x64:
|
|
mVoice = 12;
|
|
break;
|
|
case 0x1e:
|
|
case 0x1f:
|
|
case 0x22:
|
|
case 0x25:
|
|
case 0x27:
|
|
case 0x3d:
|
|
case 0x65:
|
|
case 0x66:
|
|
case 0x67:
|
|
case 0x68:
|
|
case 0x69:
|
|
case 0x6a:
|
|
mVoice = 13;
|
|
break;
|
|
case 0x37:
|
|
case 0x38:
|
|
case 0x39:
|
|
case 0x3a:
|
|
case 0x3b:
|
|
case 0x3c:
|
|
case 0x6c:
|
|
case 0x6d:
|
|
mVoice = 14;
|
|
break;
|
|
case 0x2f:
|
|
mVoice = 15;
|
|
break;
|
|
case 0x0f:
|
|
case 0x10:
|
|
case 0x34:
|
|
case 0x35:
|
|
case 0x36:
|
|
case 0x70:
|
|
mVoice = 16;
|
|
break;
|
|
case 0x0e:
|
|
case 0x42:
|
|
case 0x44:
|
|
mVoice = 17;
|
|
break;
|
|
case 0x0c:
|
|
mVoice = 18;
|
|
break;
|
|
case 0x09:
|
|
case 0x26:
|
|
case 0x6f:
|
|
mVoice = 30;
|
|
break;
|
|
case 0x08:
|
|
mVoice = 31;
|
|
break;
|
|
case 0x00:
|
|
case 0x01:
|
|
case 0x02:
|
|
case 0x03:
|
|
mVoice = 99;
|
|
return;
|
|
case 0x71:
|
|
default:
|
|
mVoice = 11;
|
|
break;
|
|
}
|
|
|
|
if (mVoice == 1 || mVoice == 2) {
|
|
if (mood == 0) {
|
|
mMood = 0;
|
|
} else {
|
|
if (mood > 17) {
|
|
if ((mVoice == 21) || (mVoice == 20)) {
|
|
mMood = 0;
|
|
}
|
|
} else {
|
|
mMood = mood - 1;
|
|
}
|
|
}
|
|
} else {
|
|
mMood = mood;
|
|
}
|
|
|
|
for (int i = 0; i < 500; i++) {
|
|
mText[i] = 0;
|
|
}
|
|
|
|
JUT_ASSERT(383, s != NULL);
|
|
|
|
if (textNum > 500) {
|
|
mTextNum = 500;
|
|
JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", textNum, 500);
|
|
} else {
|
|
mTextNum = textNum;
|
|
}
|
|
|
|
#if VERSION >= VERSION_WII_USA_R2
|
|
for (int i = 0; i <= mTextNum; i++)
|
|
#else
|
|
for (int i = 0; i < mTextNum; i++)
|
|
#endif
|
|
{
|
|
mText[i] = s[i];
|
|
}
|
|
|
|
mTextCount = 0;
|
|
field_0x3ff = 0;
|
|
field_0x400 = 0;
|
|
field_0x401 = 0;
|
|
|
|
for (int i = 0; i < 64; i++) {
|
|
field_0x402[i] = -1;
|
|
}
|
|
|
|
selectUnit(false);
|
|
}
|
|
|
|
void Z2SpeechMgr2::setTextCount(s16 textCount) {
|
|
if (mVoice != 99) {
|
|
field_0x3ff = 0x0;
|
|
|
|
#if VERSION != VERSION_SHIELD_DEBUG
|
|
textCount = (textCount == 0) ? 0 : textCount - 1;
|
|
#endif
|
|
|
|
bool all_text = false;
|
|
if (mTextCount == 0 && textCount >= mTextNum) {
|
|
all_text = true;
|
|
}
|
|
|
|
mTextCount = textCount;
|
|
if (mTextCount >= mTextNum) {
|
|
mTextCount = mTextNum;
|
|
}
|
|
|
|
if (mVoice == 1 || mVoice == 2) {
|
|
if (!field_0x0.isSoundAttached()) {
|
|
speakOneWord(false);
|
|
}
|
|
} else if (all_text) {
|
|
if (mMood == 0) {
|
|
mSpeech.startSound(Z2SE_SY_TEXT_DISP_ALL, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
}
|
|
} else {
|
|
if (!isNonVerbal()) {
|
|
JAISoundID sound_id;
|
|
switch (mVoice) {
|
|
case 0xb:
|
|
sound_id = Z2SE_SY_TEXT_OUT;
|
|
break;
|
|
case 0xc:
|
|
sound_id = Z2SE_SY_TEXT_OUT_FEMALE;
|
|
break;
|
|
case 0xd:
|
|
sound_id = Z2SE_SY_TEXT_OUT_CHILD;
|
|
break;
|
|
case 0xe:
|
|
sound_id = Z2SE_SY_TEXT_OUT_GORON;
|
|
break;
|
|
case 0xf:
|
|
sound_id = Z2SE_SY_TEXT_OUT_ZORA;
|
|
break;
|
|
case 0x10:
|
|
sound_id = Z2SE_SY_TEXT_OUT_GREY;
|
|
break;
|
|
case 0x11:
|
|
sound_id = Z2SE_SY_TEXT_OUT_SPIRIT;
|
|
break;
|
|
case 0x12:
|
|
sound_id = Z2SE_SY_TEXT_OUT_BRAVE;
|
|
break;
|
|
case 0x1e:
|
|
sound_id = Z2SE_SY_TEXT_OUT_GANON;
|
|
break;
|
|
case 0x1f:
|
|
sound_id = Z2SE_SY_TEXT_OUT_ZANT;
|
|
break;
|
|
}
|
|
|
|
mSpeech.startSound(sound_id, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SpeechMgr2::speakOneWord(bool param_0) {
|
|
if (Z2GetSceneMgr()->isSceneExist() && (mVoice == 1 || mVoice == 2) &&
|
|
field_0x400 == 0 && field_0x3ff <= 30)
|
|
{
|
|
if (mTextCount >= mTextNum) {
|
|
selectTail();
|
|
field_0x400 = 1;
|
|
} else if (isNonVerbal()) {
|
|
return;
|
|
}
|
|
|
|
u32 soundID = mMood + Z2SE_HYL_MDN_RPLY;
|
|
f32 fxMix = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
|
|
bool soundStarted = mSpeech.startSound(soundID, &field_0x0, NULL, 0, fxMix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
mSpeech.setPortData(&field_0x0, 8, field_0x402[field_0x401 - 1] + 1, -1);
|
|
|
|
if (field_0x400 == 0) {
|
|
selectUnit(param_0);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool Z2SpeechMgr2::isNonVerbal() {
|
|
switch(mText[mTextCount]) {
|
|
case '\0':
|
|
case ' ':
|
|
case '!':
|
|
case '\"':
|
|
case '#':
|
|
case '$':
|
|
case '%':
|
|
case '&':
|
|
case '\'':
|
|
case '(':
|
|
case ')':
|
|
case '*':
|
|
case '+':
|
|
case ',':
|
|
case '-':
|
|
case '.':
|
|
case '/':
|
|
case ':':
|
|
case ';':
|
|
case '<':
|
|
case '=':
|
|
case '>':
|
|
case '?':
|
|
case 'K':
|
|
case 'L':
|
|
case 'M':
|
|
case 'N':
|
|
case 'O':
|
|
case '[':
|
|
case '\\':
|
|
case ']':
|
|
case '^':
|
|
case '_':
|
|
case 0x813f:
|
|
case 0x8140:
|
|
case 0x8141:
|
|
case 0x8142:
|
|
case 0x8143:
|
|
case 0x8144:
|
|
case 0x8145:
|
|
case 0x8146:
|
|
case 0x8147:
|
|
case 0x8148:
|
|
case 0x8149:
|
|
case 0x814a:
|
|
case 0x814b:
|
|
case 0x8151:
|
|
case 0x815e:
|
|
case 0x8162:
|
|
case 0x8166:
|
|
case 0x8168:
|
|
case 0x8169:
|
|
case 0x816a:
|
|
case 0x816d:
|
|
case 0x816e:
|
|
case 0x816f:
|
|
case 0x8170:
|
|
case 0x8171:
|
|
case 0x8172:
|
|
case 0x8175:
|
|
case 0x8176:
|
|
case 0x817b:
|
|
case 0x817c:
|
|
case 0x8181:
|
|
case 0x818f:
|
|
case 0x8190:
|
|
case 0x8193:
|
|
case 0x8194:
|
|
case 0x8195:
|
|
case 0x8196:
|
|
return true;
|
|
}
|
|
|
|
#if VERSION != VERSION_SHIELD_DEBUG
|
|
if(mText[mTextCount] == 0xA) {
|
|
switch (mVoice) {
|
|
case 1:
|
|
case 2:
|
|
return false;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return false;
|
|
}
|
|
|
|
typedef struct {
|
|
s8 unitIndex;
|
|
u8 field_0x1;
|
|
} Z2ConnectCost;
|
|
|
|
void Z2SpeechMgr2::selectUnit(bool param_0) {
|
|
Z2ConnectCost cost[5];
|
|
|
|
if (field_0x401 >= 64) {
|
|
field_0x0->stop();
|
|
return;
|
|
}
|
|
|
|
s8 unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum);
|
|
s8 ZVar3;
|
|
s8 cVar5;
|
|
|
|
if (field_0x401 != 0 && param_0) {
|
|
cVar5 = 0;
|
|
s8 ZVar4 = field_0x402[field_0x401 - 1];
|
|
|
|
while (true) {
|
|
bool bVar1 = false;
|
|
unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum);
|
|
|
|
for (int i = 0; i < field_0x401; i++) {
|
|
if (field_0x402[i] == unitIndex) {
|
|
bVar1 = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (bVar1) {
|
|
continue;
|
|
}
|
|
|
|
for (int i = 0; i < cVar5; i++) {
|
|
if (unitIndex == cost[i].unitIndex) {
|
|
bVar1 = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (bVar1) {
|
|
continue;
|
|
}
|
|
|
|
const Z2MdnPrm::Unit* units = Z2MdnPrm::sPrm[mMood].main;
|
|
u8 local_3f = JMAAbs(units[unitIndex].start - units[ZVar4].end);
|
|
Z2ConnectCost connectCost = {unitIndex, local_3f};
|
|
cost[cVar5] = connectCost;
|
|
cVar5++;
|
|
|
|
if (cVar5 == 5) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
u16 tmp = cost[0].field_0x1;
|
|
unitIndex = cost[0].unitIndex;
|
|
for (int i = 0; i < 5; i++) {
|
|
if (cost[i].field_0x1 < tmp) {
|
|
tmp = cost[i].field_0x1;
|
|
unitIndex = cost[i].unitIndex;
|
|
}
|
|
}
|
|
}
|
|
|
|
field_0x402[field_0x401] = unitIndex;
|
|
field_0x401++;
|
|
}
|
|
|
|
void Z2SpeechMgr2::selectTail() {
|
|
Z2ConnectCost cost[5];
|
|
s8 cVar9 = 0;
|
|
s8 ZVar1 = field_0x402[field_0x401 - 1];
|
|
s8 ZVar6;
|
|
u8 bVar3 = 0;
|
|
|
|
while (true) {
|
|
bool bVar5 = false;
|
|
|
|
switch (mVoice) {
|
|
case 2:
|
|
bVar3 = Z2MdnPrm::sPrm[mMood].tailNum1;
|
|
ZVar6 = random.get_uint8(bVar3);
|
|
break;
|
|
case 1:
|
|
bVar3 = Z2MdnPrm::sPrm[mMood].tailNum2;
|
|
ZVar6 = Z2MdnPrm::sPrm[mMood].tailNum1 + random.get_uint8(bVar3);
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
for (int i = 0; i < cVar9; i++) {
|
|
if (ZVar6 == cost[i].unitIndex) {
|
|
bVar5 = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!bVar5) {
|
|
u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].tail[ZVar6] - Z2MdnPrm::sPrm[mMood].main[ZVar1].end);
|
|
Z2ConnectCost connectCost = {ZVar6, local_3f};
|
|
cost[cVar9] = connectCost;
|
|
cVar9++;
|
|
|
|
if (cVar9 == bVar3 || cVar9 == 5) {
|
|
s8 tmp_r8;
|
|
u16 tmp_r9 = cost[0].field_0x1;
|
|
tmp_r8 = cost[0].unitIndex;
|
|
int local_3c = bVar3 < 5 ? bVar3 : 5;
|
|
for (int i = 0; i < local_3c; i++) {
|
|
if (cost[i].field_0x1 < tmp_r9) {
|
|
tmp_r9 = cost[i].field_0x1;
|
|
tmp_r8 = cost[i].unitIndex;
|
|
}
|
|
}
|
|
field_0x402[field_0x401 - 1] = tmp_r8 + Z2MdnPrm::sPrm[mMood].mainNum;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SpeechMgr2::framework() {
|
|
switch (mVoice) {
|
|
case 1:
|
|
case 2:
|
|
if (field_0x0) {
|
|
field_0x3ff++;
|
|
if (field_0x3ff > 30) {
|
|
return;
|
|
}
|
|
} else {
|
|
mTextCount = 0;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Z2SpeechMgr2::playOneShotVoice(u8 speakerID, u16 param_1, Vec* posPtr, s8 param_3) {
|
|
if (speakerID == 0) {
|
|
return;
|
|
}
|
|
|
|
f32 fxmix = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
|
|
|
|
if (mVoice == 1 || mVoice == 2) {
|
|
JAISoundID sound_id(-1);
|
|
switch (param_1) {
|
|
case 25:
|
|
sound_id = Z2SE_MSG_V_MDN_D21;
|
|
break;
|
|
case 30:
|
|
sound_id = Z2SE_MSG_V_MDN_LAUGH_30;
|
|
break;
|
|
case 31:
|
|
sound_id = Z2SE_MSG_V_MDN_LAUGH_31;
|
|
break;
|
|
case 32:
|
|
sound_id = Z2SE_MSG_V_MDN_LAUGH_32;
|
|
break;
|
|
case 100:
|
|
sound_id = Z2SE_MSG_V_A_MDN_1;
|
|
break;
|
|
case 101:
|
|
sound_id = Z2SE_MSG_V_A_MDN_2;
|
|
break;
|
|
case 102:
|
|
sound_id = Z2SE_MSG_V_A_MDN_102;
|
|
break;
|
|
case 103:
|
|
sound_id = Z2SE_MSG_V_A_MDN_103;
|
|
break;
|
|
case 104:
|
|
sound_id = Z2SE_MSG_V_A_MDN_104;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
if (sound_id != -1) {
|
|
mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)posPtr,
|
|
speakerID, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
|
|
} else {
|
|
JAISoundID sound_id = Z2SE_MESSAGE_SE_COMMON;
|
|
switch (speakerID) {
|
|
case 3:
|
|
if (param_1 == 1) {
|
|
Z2GetSeqMgr()->subBgmStart(Z2BGM_ITEM_GET_MINI);
|
|
return;
|
|
}
|
|
break;
|
|
case 30:
|
|
if (param_1 == 15) {
|
|
sound_id = Z2SE_TAMABE_V_TUTO_BIKKURI;
|
|
}
|
|
break;
|
|
case 29:
|
|
if (param_1 == 4) {
|
|
sound_id = Z2SE_KYURY_MV_ZEKKU;
|
|
} else if (param_1 == 5) {
|
|
sound_id = Z2SE_KYURY_MV_WORRY;
|
|
}
|
|
break;
|
|
case 32:
|
|
if (param_1 == 6) {
|
|
sound_id = Z2SE_MOI_MV_WOUND_UMEKI;
|
|
}
|
|
break;
|
|
case 35:
|
|
if (param_1 == 10) {
|
|
sound_id = Z2SE_HANJO_MV_CRY;
|
|
}
|
|
break;
|
|
case 37:
|
|
if (param_1 == 10) {
|
|
sound_id = Z2SE_BESU_MV_DOUYOU;
|
|
}
|
|
break;
|
|
case 47:
|
|
if (param_1 == 15) {
|
|
sound_id = Z2SE_ZRA_MV_WOUND_BREATH;
|
|
} else if (param_1 == 17) {
|
|
sound_id = Z2SE_ZRA_MV_WOUND_COUGH;
|
|
}
|
|
break;
|
|
case 69:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_CAT;
|
|
} else if (param_1 == 2) {
|
|
sound_id = Z2SE_MSG_V_PERU;
|
|
}
|
|
break;
|
|
case 70:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_DOG;
|
|
}
|
|
break;
|
|
case 71:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_KOKKO;
|
|
}
|
|
break;
|
|
case 72:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_SQUIRREL;
|
|
}
|
|
break;
|
|
case 73:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_MONKEY;
|
|
}
|
|
break;
|
|
case 74:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_FROG;
|
|
}
|
|
break;
|
|
case 107:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_MSG_V_MYNA;
|
|
}
|
|
break;
|
|
case 113:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_HS_V_CRY_UMAKUSA;
|
|
}
|
|
break;
|
|
case 112:
|
|
if (param_1 == 1) {
|
|
sound_id = Z2SE_TKJ_V_SHOP_TALK;
|
|
}
|
|
break;
|
|
case 38:
|
|
if (param_1 == 4) {
|
|
sound_id = Z2SE_D21V_MDN_HATTOSURU;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (field_0x0) {
|
|
field_0x0.releaseSound();
|
|
}
|
|
mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)posPtr, speakerID,
|
|
fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
if (field_0x0) {
|
|
mSpeech.setPortData(&field_0x0, 8, param_1, -1);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool Z2SpeechMgr2::isMidnaSpeak() {
|
|
if ((mVoice == 1 || mVoice == 2) && field_0x0) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Z2SpeechStarter::Z2SpeechStarter() : Z2SoundStarter(false) {}
|
|
|
|
bool Z2SpeechStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr,
|
|
const JGeometry::TVec3<f32>* posPtr, u32 portData, f32 fxmix,
|
|
f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps) {
|
|
JUT_ASSERT(1076, handlePtr);
|
|
|
|
if (Z2GetSceneMgr()->isInDarkness() && Z2GetSceneMgr()->getDemoSeWaveNum() != 0x77
|
|
&& Z2GetSceneMgr()->getDemoSeWaveNum() != 0x78) {
|
|
fxmix = 1.0f;
|
|
} else {
|
|
f32 tmp = Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f;
|
|
if (tmp) {
|
|
fxmix = tmp;
|
|
} else if (Z2GetSceneMgr()->getDemoSeWaveNum() == 0x6c || Z2GetSceneMgr()->getDemoSeWaveNum() == 0x77) {
|
|
fxmix = 0.07f;
|
|
} else {
|
|
fxmix += Z2GetEnvSeMgr()->getFogDensity() * 0.5f;
|
|
if (fxmix > 1.0f) {
|
|
fxmix = 1.0f;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool ret = Z2GetAudioMgr()->startSound(soundID, handlePtr, posPtr);
|
|
|
|
if (*handlePtr) {
|
|
if (portData != 0) {
|
|
setPortData(handlePtr, 6, portData, -1);
|
|
}
|
|
if (fxmix > 0.0f) {
|
|
(*handlePtr)->getAuxiliary().moveFxMix(fxmix, moveSteps);
|
|
}
|
|
if (pitch != 1.0f) {
|
|
(*handlePtr)->getAuxiliary().movePitch(pitch, moveSteps);
|
|
}
|
|
if (volume != 1.0f) {
|
|
(*handlePtr)->getAuxiliary().moveVolume(volume, moveSteps);
|
|
}
|
|
if (pan != -1.0f) {
|
|
(*handlePtr)->getAuxiliary().movePan(pan, moveSteps);
|
|
}
|
|
if (dolby != -1.0f) {
|
|
(*handlePtr)->getAuxiliary().moveDolby(dolby, moveSteps);
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|