ULTIMA8: A little more crusader intrinsic work

This commit is contained in:
Matthew Duggan 2020-09-26 10:08:42 +09:00
parent 41d4212da8
commit 1912bb5a24
4 changed files with 25 additions and 22 deletions

View File

@ -47,7 +47,7 @@ const char* const ConvertUsecodeCrusader::_intrinsics[] = {
"int16 Item::I_getMapArray(Item *)", // See TRIGGER::ordinal21 - stored in a variable 'mapNum'
"int16 Item::I_getStatus(Item *)",
"void Item::I_orStatus(Item *, uint16 flags)",
"int16 Item::I_equip(6 bytes)", // same coff as 0B5 - TODO: confirm this
"int16 Item::I_equip(6 bytes)", // same coff as 0B5
"byte Item::I_isOnScreen(Item *)", // called for gattling guns and camera
"byte Actor::I_isNPC(Item *)", // proably - actually checks is itemno < 256?
"byte Item::I_getZ(Item *)",

View File

@ -53,7 +53,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"World::I_gameDifficulty()",
"Item::getQLo(void)",
"Item::destroy(void)",
"Intrinsic000D()",
"Actor::I_getField0x81()", // same as field 0x63 in No Remorse
"Item::getX(void)",
"Item::getY(void)",
// 0010
@ -66,7 +66,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"World::I_getControlledNPCNum()",
"Actor::I_getDir()",
"Actor::I_getLastAnimSet()",
"Intrinsic0019()",
"Item::I_fireWeapon()",
"Item::create(uint16,uint16)",
"Item::popToCoords(uint16,uint16,uint8)",
"Actor::I_setDead()",
@ -94,10 +94,10 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Actor::I_getMana()",
"Item::getFamily(void)",
"Actor::destroyContents(void)",
"Intrinsic0033()",
"AudioProcess::I_setVolumeForItemSFX(uint16,uint16,byte)",
"Item::getDirToItem(uint16)",
"Intrinsic0035()",
"Intrinsic0036()",
"Item::I_getRangeIfVisible()",
"udioProcess::I_playSFXCru()",
"Item::andStatus(void)",
"Kernel::resetRef(uint16,ProcessType)",
@ -125,11 +125,11 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Actor::isDead(void)",
"Actor::I_clrInCombat()",
// 0050
"Actor::I_setDefaultActivity0",
"Actor::I_setDefaultActivity1",
"Actor::I_setDefaultActivity2",
"Actor::I_setActivity",
"World::I_setControlledNPCNum",
"Actor::I_setDefaultActivity0()",
"Actor::I_setDefaultActivity1()",
"Actor::I_setDefaultActivity2()",
"Actor::I_setActivity()",
"World::I_setControlledNPCNum()",
"Intrinsic0055()",
"Game::I_isReleaseBuild()",
"MainActor::I_setMana()",
@ -143,7 +143,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Ultima8Engine::I_setAvatarInStasis()",
// 0060
"Actor::I_isBusy()",
"Intrinsic0061()",
"Actor::I_getField0x13Flag2()",
"Actor::I_doAnim()",
"Item::legalCreateAtPoint(uint16,uint16,WorldPoint&)",
"Item::getPoint(WorldPoint&)",
@ -197,7 +197,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Item::setMapNum(sint16)",
"Item::getNpcNum(void)",
"Item::shoot(WorldPoint&,sint16,sint16)",
"Intrinsic0094()",
"CameraProcess::I_setCenterOn()",
"Item::enterFastArea(void)",
"Item::setBroken()",
"Item::hurl(sint16,sint16,sint16,sint16)",
@ -223,7 +223,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Item::isOn(uint16)",
"Actor::isDead(void)",
"Item::hurl(sint16,sint16,sint16,sint16)",
"Intrinsic00AD()",
"Item::I_inFastArea()",
"Item::getQHi(void)",
"Item::andStatus(void)",
// 00B0
@ -252,7 +252,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Item::setQuality(sint16)",
"Item::hurl(sint16,sint16,sint16,sint16)",
"Actor::I_addHp()",
"Intrinsic00C8()",
"CruHealerProcess::I_create()",
"Item::callEvent0A(sint16)",
"Item::setBroken()",
"Item::isOn(uint16)",
@ -309,7 +309,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
"Dtable::I_getMaxHPForNPC()",
"Actor::I_setHP()",
"Item::getQLo(void)",
"Intrinsic00FE()",
"BatteryChargerProcess::I_create()",
"Item::hurl(sint16,sint16,sint16,sint16)",
// 0100
"Item::andStatus(void)",

View File

@ -57,7 +57,7 @@ Intrinsic RegretIntrinsics[] = {
World::I_getControlledNPCNum, // Intrinsic016()
Actor::I_getDir, // Intrinsic017()
Actor::I_getLastAnimSet, // Intrinsic018()
0, // Intrinsic019()
Item::I_fireWeapon, // Intrinsic019()
Item::I_create, // Intrinsic01A()
Item::I_popToCoords, // Intrinsic01B()
Actor::I_setDead, // Intrinsic01C()
@ -85,10 +85,10 @@ Intrinsic RegretIntrinsics[] = {
MainActor::I_getMana, // Intrinsic030()
Item::I_getFamily, // Intrinsic031()
Actor::I_destroyContents, // Intrinsic032()
0, // Intrinsic033()
0, // Intrinsic033() Item::I_SetVolumeForItemSFX
Item::I_getDirToItem, // Intrinsic034()
0, // Intrinsic035()
0, // Intrinsic036()
Item::I_getRangeIfVisible, // Intrinsic036()
AudioProcess::I_playSFXCru, // Intrinsic037() TODO: Not exactly the same.
Item::I_andStatus, // Intrinsic038()
Kernel::I_resetRef, // Intrinsic039()
@ -121,7 +121,7 @@ Intrinsic RegretIntrinsics[] = {
Actor::I_setDefaultActivity2, // Intrinsic052()
Actor::I_setActivity, // Intrinsic053()
World::I_setControlledNPCNum, // Intrinsic054()
0, // Intrinsic055()
Item::I_receiveHit, // Intrinsic055()
UCMachine::I_true, // Actually Game::I_isReleaseBuild
MainActor::I_setMana, // Intrinsic057()
Item::I_use, // Intrinsic058()
@ -243,7 +243,7 @@ Intrinsic RegretIntrinsics[] = {
Item::I_setQuality, // Intrinsic0C5()
Item::I_hurl, // Intrinsic0C6()
Actor::I_addHp, // Intrinsic0C7()
0, // Intrinsic0C8()
CruHealerProcess::I_create, // Intrinsic0C8()
Item::I_equip, // Intrinsic0C9()
Item::I_setBroken, // Intrinsic0CA()
Item::I_isOn, // Intrinsic0CB()
@ -300,7 +300,7 @@ Intrinsic RegretIntrinsics[] = {
0, // DTable::I_getMaxHPForNPC()
Actor::I_setHp, // Intrinsic0FC()
Item::I_getQLo, // Intrinsic0FD()
0, // Intrinsic0FE()
BatteryChargerProcess::I_create, // Intrinsic0FE()
Item::I_hurl, // Intrinsic0FF()
// 0100
Item::I_andStatus, // Intrinsic100()
@ -355,7 +355,7 @@ Intrinsic RegretIntrinsics[] = {
Item::I_andStatus, // Intrinsic12F()
// 0130
Actor::I_getNpcNum, // Intrinsic130()
0, // Intrinsic131()
0, // Intrinsic131() - same as Intrinsic 116 in No Remorse
Item::I_andStatus, // Intrinsic132()
Item::I_hurl, // Intrinsic133()
Item::I_andStatus, // Intrinsic134()

View File

@ -1160,6 +1160,9 @@ uint16 Item::fireWeapon(int32 x, int32 y, int32 z, Direction dir, int firetype,
if (!GAME_IS_CRUSADER)
return 0;
if (GAME_IS_REGRET)
warning("Item::fireWeapon: TODO: Update for Regret (different firetypes)");
static const uint32 BULLET_SPLASH_SHAPE = 0x1d9;
ix += x;