[Scummvm-git-logs] scummvm master -> f185e419563d0e8b975c0e64e07e77ea7aef5213

mduggan mgithub at guarana.org
Sat Jul 24 05:01:12 UTC 2021


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
ce62a023eb ULTIMA8: Update usecode function tables
7fcbc9249c ULTIMA8: Make Usecode variant selection more generic
f185e41956 ULTIMA8: Item sorter improvements for large flat objects


Commit: ce62a023ebf63e0396ed1e3ee840801752aed39e
    https://github.com/scummvm/scummvm/commit/ce62a023ebf63e0396ed1e3ee840801752aed39e
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-07-24T13:48:09+09:00

Commit Message:
ULTIMA8: Update usecode function tables

Added the function list for the FR version of remorse and the DE version of
regret.

Also updated output with newer script for other alternate versions.  Results
should be more accurate than before and also added offset comments so I can fix
errors in the future more easily.

Changed paths:
    engines/ultima/ultima8/usecode/regret_intrinsics.h
    engines/ultima/ultima8/usecode/remorse_intrinsics.h


diff --git a/engines/ultima/ultima8/usecode/regret_intrinsics.h b/engines/ultima/ultima8/usecode/regret_intrinsics.h
index 3a9232c3da..be4611e26c 100644
--- a/engines/ultima/ultima8/usecode/regret_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/regret_intrinsics.h
@@ -30,6 +30,7 @@ namespace Ultima {
 namespace Ultima8 {
 
 // Crusader: No Regret Intrinsics
+// Main list for the updated version (1.06) (as on GOG)
 Intrinsic RegretIntrinsics[] = {
 	World::I_getAlertActive, // Intrinsic000()
 	Item::I_getFrame, // Intrinsic001()
@@ -411,368 +412,751 @@ Intrinsic RegretIntrinsics[] = {
 //
 
 Intrinsic RegretDemoIntrinsics[] = {
-	World::I_getAlertActive,
-	Item::I_getFrame,
-	Item::I_setFrame,
-	Item::I_getMapArray,
-	Item::I_getStatus,
-	Item::I_orStatus,
-	Item::I_equip,
-	Item::I_isPartlyOnScreen,
-	Actor::I_isNPC,
-	Item::I_getZ,
-	World::I_gameDifficulty,
-	Item::I_getQLo,
-	Item::I_destroy,
-	Actor::I_getUnkByte,
-	Item::I_getX,
-	Item::I_getY,
-	// 0010
-	AudioProcess::I_playSFXCru,
-	Item::I_getShape,
-	Item::I_explode,
-	UCMachine::I_rndRange,
-	Item::I_legalCreateAtCoords,
-	Item::I_andStatus,
-	World::I_getControlledNPCNum,
-	Actor::I_getDir,
-	Actor::I_getLastAnimSet,
-	Item::I_fireWeapon,
-	Item::I_create,
-	Item::I_popToCoords,
-	Actor::I_setDead,
-	Item::I_push,
-	Item::I_getEtherealTop,
-	Item::I_getQLo,
-	// 0020
-	Item::I_setQLo,
-	Item::I_getQHi,
-	Item::I_setQHi,
-	Item::I_getClosestDirectionInRange,
-	Item::I_hurl,
-	Item::I_getCY,
-	Item::I_getCX,
-	SpriteProcess::I_createSprite,
-	Item::I_setNpcNum,
-	AudioProcess::I_playSFXCru,
-	Item::I_setShape,
-	Item::I_pop,
-	AudioProcess::I_stopSFXCru,
-	Item::I_isCompletelyOn,
-	Item::I_popToContainer,
-	Actor::I_getHp,
-	// 0030
-	MainActor::I_getMana,
-	Item::I_getFamily,
-	Actor::I_destroyContents,
-	0, // setVolForItem
-	Item::I_getDirToItem,
-	AudioProcess::I_isSFXPlayingForObject,
-	Item::I_touch,
-	Item::I_inFastArea,
-	AudioProcess::I_stopSFXCru,
-	Item::I_fall,
-	Item::I_getRangeIfVisible,
-	AudioProcess::I_playSFXCru,
-	Item::I_andStatus,
-	Kernel::I_resetRef,
-	Egg::I_getEggId,
-	MainActor::I_addItemCru,
-	// 0040
-	Actor::I_getMap,
-	Item::I_cast,
-	0,
-	Item::I_isOn,
-	Item::I_legalMoveToPoint,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	// 0050
-	Item::I_isOn,
-	Item::I_getQHi,
-	Actor::I_getCurrentActivityNo,
-	Actor::I_isDead,
-	Actor::I_clrInCombat,
-	Actor::I_setDefaultActivity0,
-	Actor::I_setDefaultActivity1,
-	Actor::I_setDefaultActivity2,
-	Actor::I_setActivity,
-	World::I_setControlledNPCNum,
-	Item::I_receiveHit,
-	UCMachine::I_true,
-	MainActor::I_setMana,
-	Item::I_use,
-	Item::I_setUnkEggType,
-	MusicProcess::I_playMusic,
-	// 0060
-	Item::I_getSurfaceWeight,
-	Item::I_isCentreOn,
-	Item::I_setFrame,
-	Actor::I_getLastAnimSet,
-	Ultima8Engine::I_setAvatarInStasis,
-	Actor::I_isBusy,
-	0,
-	Actor::I_doAnim,
-	Item::I_legalCreateAtPoint,
-	Item::I_hurl,
-	Kernel::I_getNumProcesses,
-	Item::I_getCY,
-	Item::I_getPoint,
-	0,
-	0,
-	CruStatusGump::I_hideStatusGump,
-	// 0070
-	Actor::I_turnToward,
-	ComputerGump::I_readComputer,
-	MovieGump::I_playMovieCutsceneRegret,
+	World::I_getAlertActive,        // Intrinsic000 10e8:048d
+	Item::I_getFrame,               // Intrinsic001 10b0:0826
+	Item::I_setFrame,               // Intrinsic002 10b0:0882
+	Item::I_getMapArray,            // Intrinsic003 10b0:0cea
+	Item::I_getStatus,              // Intrinsic004 10b0:10aa
+	Item::I_orStatus,               // Intrinsic005 10b0:25b6
+	Item::I_equip,                  // Intrinsic006 10b0:2a1e
+	Item::I_isPartlyOnScreen,       // Intrinsic007 10b0:41c1
+	Actor::I_isNPC,                 // Intrinsic008 10b0:24ca
+	Item::I_getZ,                   // Intrinsic009 10b0:0266
+	World::I_gameDifficulty,        // Intrinsic00A 10f8:3fcd
+	Item::I_getQLo,                 // Intrinsic00B 10b0:38a9
+	Item::I_destroy,                // Intrinsic00C 10b0:13d7
+	Actor::I_getUnkByte,            // Intrinsic00D 10f8:44f4
+	Item::I_getX,                   // Intrinsic00E 10b0:013e
+	Item::I_getY,                   // Intrinsic00F 10b0:0176
+	// 0x010
+	AudioProcess::I_playSFXCru,     // Intrinsic010 10b0:3954
+	Item::I_getShape,               // Intrinsic011 10b0:068f
+	Item::I_explode,                // Intrinsic012 1160:0a77
+	UCMachine::I_rndRange,          // Intrinsic013 12d8:0293
+	Item::I_legalCreateAtCoords,    // Intrinsic014 10b0:114d
+	Item::I_andStatus,              // Intrinsic015 10b0:25cf
+	World::I_getControlledNPCNum,   // Intrinsic016 1148:0048
+	Actor::I_getDir,                // Intrinsic017 10f8:3e0c
+	Actor::I_getLastAnimSet,        // Intrinsic018 10f8:3e26
+	Item::I_fireWeapon,             // Intrinsic019 1140:1a86
+	Item::I_create,                 // Intrinsic01A 10b0:1259
+	Item::I_popToCoords,            // Intrinsic01B 10b0:1383
+	Actor::I_setDead,               // Intrinsic01C 10f8:22a8
+	Item::I_push,                   // Intrinsic01D 10b0:13c4
+	Item::I_getEtherealTop,         // Intrinsic01E 10b8:26f8
+	Item::I_getQLo,                 // Intrinsic01F 10b0:38a9
+	// 0x020
+	Item::I_setQLo,                 // Intrinsic020 10b0:38c2
+	Item::I_getQHi,                 // Intrinsic021 10b0:385e
+	Item::I_setQHi,                 // Intrinsic022 10b0:387a
+	Item::I_getClosestDirectionInRange, // Intrinsic023 10e0:0000
+	Item::I_hurl,                   // Intrinsic024 1048:134f
+	Item::I_getCY,                  // Intrinsic025 10b0:02de
+	Item::I_getCX,                  // Intrinsic026 10b0:029a
+	SpriteProcess::I_createSprite,  // Intrinsic027 1150:00de
+	Item::I_setNpcNum,              // Intrinsic028 10b0:0c96
+	AudioProcess::I_playSFXCru,     // Intrinsic029 10b0:3973
+	Item::I_setShape,               // Intrinsic02A 10b0:0717
+	Item::I_pop,                    // Intrinsic02B 10b0:13aa
+	AudioProcess::I_stopSFXCru,     // Intrinsic02C 10b0:39ef
+	Item::I_isCompletelyOn,         // Intrinsic02D 10b0:1fa3
+	Item::I_popToContainer,         // Intrinsic02E 10b0:139a
+	Actor::I_getHp,                 // Intrinsic02F 10f8:39ea
+	// 0x030
+	MainActor::I_getMana,           // Intrinsic030 10f8:3b4a
+	Item::I_getFamily,              // Intrinsic031 10b0:1036
+	Actor::I_destroyContents,       // Intrinsic032 10b0:14f3
+	0, // AudioProcess::I_setVolumeForItemSFX, // Intrinsic033 10b0:3a33
+	Item::I_getDirToItem,           // Intrinsic034 10b0:1ab8
+	AudioProcess::I_isSFXPlayingForObject, // Intrinsic035 10b0:3a0b
+	Item::I_touch,                  // Intrinsic036 10b0:2558
+	Item::I_inFastArea,             // Intrinsic037 10b0:3a56
+	AudioProcess::I_stopSFXCru,     // Intrinsic038 10b0:39d0
+	Item::I_fall,                   // Intrinsic039 1048:13eb
+	Item::I_getRangeIfVisible,      // Intrinsic03A 1140:258e
+	AudioProcess::I_playSFXCru,     // Intrinsic03B 10b0:39b1
+	Item::I_andStatus,              // Intrinsic03C 10b0:25cf
+	Kernel::I_resetRef,             // Intrinsic03D 11e8:0c63
+	Egg::I_getEggId,                // Intrinsic03E 10a0:05bb
+	MainActor::I_addItemCru,        // Intrinsic03F 1008:03ab
+	// 0x040
+	Actor::I_getMap,                // Intrinsic040 10f8:3243
+	Item::I_cast,                   // Intrinsic041 10b0:2f5e
+	0,                              // Intrinsic042 1198:0013
+	Item::I_isOn,                   // Intrinsic043 10b0:1f2e
+	Item::I_legalMoveToPoint,       // Intrinsic044 10b0:1791
+	Item::I_getQHi,                 // Intrinsic045 10b0:385e
+	Item::I_isOn,                   // Intrinsic046 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic047 10b0:385e
+	Item::I_isOn,                   // Intrinsic048 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic049 10b0:385e
+	Item::I_isOn,                   // Intrinsic04A 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic04B 10b0:385e
+	Item::I_isOn,                   // Intrinsic04C 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic04D 10b0:385e
+	Item::I_isOn,                   // Intrinsic04E 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic04F 10b0:385e
+	// 0x050
+	Item::I_isOn,                   // Intrinsic050 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic051 10b0:385e
+	Actor::I_getCurrentActivityNo,  // Intrinsic052 10f8:3a03
+	Actor::I_isDead,                // Intrinsic053 10f8:2278
+	Actor::I_clrInCombat,           // Intrinsic054 10f8:389f
+	Actor::I_setDefaultActivity0,   // Intrinsic055 10f8:329d
+	Actor::I_setDefaultActivity1,   // Intrinsic056 10f8:32ba
+	Actor::I_setDefaultActivity2,   // Intrinsic057 10f8:32d7
+	Actor::I_setActivity,           // Intrinsic058 10f8:33b5
+	World::I_setControlledNPCNum,   // Intrinsic059 1148:0038
+	Item::I_receiveHit,             // Intrinsic05A 1140:04cb
+	UCMachine::I_true,              // Intrinsic05B 1058:00c1
+	MainActor::I_setMana,           // Intrinsic05C 10f8:3b64
+	Item::I_use,                    // Intrinsic05D 10b0:26ab
+	Item::I_setUnkEggType,          // Intrinsic05E 10b0:0e43
+	MusicProcess::I_playMusic,		// Intrinsic05F 1210:0173
+	// 0x060
+	Item::I_getSurfaceWeight,       // Intrinsic060 10b0:0602
+	Item::I_isCentreOn,             // Intrinsic061 10b0:446e
+	Item::I_setFrame,               // Intrinsic062 10b0:0882
+	Actor::I_getLastAnimSet,        // Intrinsic063 10f8:3e26
+	Ultima8Engine::I_setAvatarInStasis, // Intrinsic064 10f8:3d96
+	Actor::I_isBusy,                // Intrinsic065 10f8:0261
+	0, // Actor::I_getField0x13Flag2(), // Intrinsic066 10f8:2499
+	Actor::I_doAnim,                // Intrinsic067 10f8:039a
+	Item::I_legalCreateAtPoint,     // Intrinsic068 10b0:10c0
+	Item::I_hurl,                   // Intrinsic069 1048:134f
+	Kernel::I_getNumProcesses,      // Intrinsic06A 11e8:0977
+	Item::I_getCY,                  // Intrinsic06B 10b0:02de
+	Item::I_getPoint,               // Intrinsic06C 10b0:247a
+	0,                              // Intrinsic06D 1008:0134
+	0,                              // Intrinsic06E 1008:0123
+	CruStatusGump::I_hideStatusGump, // Intrinsic06F 11c8:0000
+	// 0x070
+	Actor::I_turnToward,            // Intrinsic070 10f8:3961
+	ComputerGump::I_readComputer,   // Intrinsic071 1390:0005
+	MovieGump::I_playMovieCutsceneRegret, // Intrinsic072 1448:0b5a
 	UCMachine::I_true, // update inventory ui updates (not needed)
 	MusicProcess::I_pauseMusic,
 	MusicProcess::I_unpauseMusic,
-	Item::I_isInNpc,
-	Ultima8Engine::I_setCruStasis,
-	Ultima8Engine::I_clrCruStasis,
-	PaletteFaderProcess::I_jumpToAllGivenColor,
-	PaletteFaderProcess::I_fadeToGamePal,
-	Actor::I_isDead,
-	Actor::I_getNpcNum,
-	UCMachine::I_false,  // null intrinsic (returns 0)
-	UCMachine::I_true,
-	Item::I_unequip,
-	// 0080
-	Item::I_andStatus,
-	Item::I_move,
-	Ultima8Engine::I_getUnkCrusaderFlag,
-	Ultima8Engine::I_setUnkCrusaderFlag,
-	Ultima8Engine::I_clrUnkCrusaderFlag,
-	PaletteFaderProcess::I_fadeToBlack,
-	MainActor::I_clrKeycards,
-	MusicProcess::I_stopMusic,
-	PaletteFaderProcess::I_jumpToAllBlack,
-	0, // set unk flag A4
-	0, // clr unk flag A4
+	Item::I_isInNpc,                // Intrinsic076 10b0:24f9
+	Ultima8Engine::I_setCruStasis,  // Intrinsic077 1008:00e7
+	Ultima8Engine::I_clrCruStasis,  // Intrinsic078 1008:00ed
+	PaletteFaderProcess::I_jumpToAllGivenColor, // Intrinsic079 1418:0923
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic07A 1418:0729
+	Actor::I_isDead,                // Intrinsic07B 10f8:2278
+	Actor::I_getNpcNum,             // Intrinsic07C 10b0:0cb2
+	UCMachine::I_false,             // Intrinsic07D 10b0:2952
+	UCMachine::I_true,              // Intrinsic07E 1058:00a1
+	Item::I_unequip,                // Intrinsic07F 10b0:2a51
+	// 0x080
+	Item::I_andStatus,              // Intrinsic080 10b0:25cf
+	Item::I_move,                   // Intrinsic081 10b0:1575
+	Ultima8Engine::I_getUnkCrusaderFlag, // Intrinsic082 1008:0f1c
+	Ultima8Engine::I_setUnkCrusaderFlag, // Intrinsic083 1008:0f20
+	Ultima8Engine::I_clrUnkCrusaderFlag, // Intrinsic084 1008:0f16
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic085 1418:071b
+	MainActor::I_clrKeycards,       // Intrinsic086 10f8:4443
+	MusicProcess::I_pauseMusic,     // Intrinsic087 1210:02b0
+	PaletteFaderProcess::I_jumpToAllBlack, // Intrinsic088 1418:080f
+	0, // I_setUnkFlagA4
+	0, // I_clrUnkFlagA4
 	Game::I_playDemoScreen,
-	MainActor::I_teleportToEgg,
-	PaletteFaderProcess::I_fadeToGamePal,
-	Actor::I_clrImmortal,
-	Actor::I_setActivity,
-	// 0090
-	Item::I_getQuality,
-	Item::I_setQuality,
-	MainActor::I_getMaxEnergy,
-	CameraProcess::I_moveTo,
-	Actor::I_setImmortal,
-	CameraProcess::I_getCameraX,
-	CameraProcess::I_getCameraY,
-	Item::I_setMapArray,
-	Actor::I_getNpcNum,
-	Item::I_shoot,
-	CameraProcess::I_setCenterOn,
-	Item::I_enterFastArea,
-	Item::I_setBroken,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Ultima8Engine::I_moveKeyDownRecently,
-	// 00A0
-	MainActor::I_teleportToEgg,
-	Actor::I_createActor,
-	Actor::I_clrInCombat,
-	PaletteFaderProcess::I_jumpToGreyScale,
-	PaletteFaderProcess::I_jumpToNormalPalette,
-	CruStatusGump::I_showStatusGump,
-	Item::I_andStatus,
-	AudioProcess::I_playSFX,
-	AudioProcess::I_isSFXPlaying,
-	Item::I_getDirFromTo16,
-	Item::I_setFrame,
-	Egg::I_getUnkEggType,
-	Egg::I_setEggXRange,
-	Item::I_overlaps,
-	Item::I_isOn,
-	Egg::I_getEggXRange,
-	// 00B0
-	World::I_clrAlertActive,
-	PaletteFaderProcess::I_fadeToGivenColor,
-	Actor::I_setDead,
-	Game::I_playCredits,
-	PaletteFaderProcess::I_jumpToAllWhite,
-	Actor::I_isFalling,
-	Item::I_getFamilyOfType,
-	Actor::I_getNpcNum,
-	Item::I_getQLo,
-	Item::I_getQHi,
-	Item::I_avatarStoleSomething,
-	Item::I_andStatus,
-	Ultima8Engine::I_getCurrentTimerTick,
-	World::I_setAlertActive,
-	Ultima8Engine::I_getAvatarInStasis,
-	MainActor::I_addItemCru,
-	// 00C0
-	Actor::I_getLastAnimSet,
-	Item::I_getCY,
-	CurrentMap::I_canExistAt,
-	Item::I_isOn,
-	Actor::I_isDead,
-	Item::I_hurl,
-	Item::I_getQHi,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_getDirToCoords,
-	0,
-	Actor::I_getNpcNum,
-	Item::I_getCY,
-	// 00D0
-	Item::I_isOn,
-	Item::I_getFootpadData,
-	Actor::I_isDead,
-	Actor::I_createActorCru,
-	Actor::I_setActivity,
-	KeypadGump::I_showKeypad,
-	Item::I_andStatus,
-	UCMachine::I_numToStr,
-	UCMachine::I_false, // null intrinsic
-	Actor::I_getDir,
-	Item::I_getQHi,
-	Item::I_setQuality,
-	Item::I_use,
-	Item::I_hurl,
-	Actor::I_addHp,
-	CruHealerProcess::I_create,
-	// 00E0
-	Item::I_equip,
-	Item::I_setBroken,
-	Item::I_isOn,
-	Actor::I_teleport,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Actor::I_isInCombat,
-	Actor::I_getLastActivityNo,
-	Actor::I_setCombatTactic,
-	Actor::I_setDead,
-	CameraProcess::I_getCameraY,
-	Actor::I_getEquip,
-	Actor::I_setEquip,
-	Actor::I_getDefaultActivity0,
-	Actor::I_getDefaultActivity1,
-	Actor::I_getDefaultActivity2,
-	// 00F0
-	Actor::I_getLastAnimSet,
-	Item::I_getQLo,
-	Item::I_getQHi,
-	Actor::I_getNpcNum,
-	Actor::I_setUnkByte,
-	Item::I_hurl,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Item::I_getCY,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	// 0100
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Actor::I_setDead,
-	// 0110
-	Actor::I_getMaxHp,
-	Actor::I_setHp,
-	Item::I_getQLo,
-	BatteryChargerProcess::I_create,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_isOn,
-	Actor::I_isDead,
-	Actor::I_setActivity,
-	Item::I_getQHi,
-	Actor::I_getLastAnimSet,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	// 0120
-	Item::I_getQHi,
-	Item::I_hurl,
-	Actor::I_getNpcNum,
-	Item::I_getCY,
-	Item::I_hurl,
-	Item::I_isOn,
-	MainActor::I_hasKeycard,
-	UCMachine::I_false, // null intrinsic
-	Actor::I_isDead,
-	Actor::I_clrImmortal,
-	UCMachine::I_numToStr,
-	Item::I_getQHi,
-	Actor::I_setActivity,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	// 0130
-	Actor::I_getDir,
-	Actor::I_setDead,
-	Actor::I_getNpcNum,
-	Item::I_getQLo,
-	Item::I_isCrusTypeNPC,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_getQ,
-	Item::I_setQ,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	// 0140
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_andStatus,
-	Actor::I_getNpcNum,
-	Item::I_fireDistance,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	CameraProcess::I_getCameraY,
-	CameraProcess::I_getCameraZ,
-	Actor::I_clrInCombat,
-	Item::I_getTypeFlag,
-	Actor::I_getNpcNum,
-	// 0150
-	Item::I_hurl,
-	Item::I_getCY,
-	Item::I_getCZ,
-	Item::I_setFrame,
-	0,
+	MainActor::I_teleportToEgg,     // Intrinsic08C 10a0:04c4
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic08D 1418:0801
+	Actor::I_clrImmortal,           // Intrinsic08E 10f8:241e
+	Actor::I_setActivity,           // Intrinsic08F 10f8:33b5
+	// 0x090
+	Item::I_getQuality,             // Intrinsic090 10b0:0d1c
+	Item::I_setQuality,             // Intrinsic091 10b0:0d60
+	MainActor::I_getMaxEnergy,      // Intrinsic092 10f8:3b81
+	CameraProcess::I_moveTo,        // Intrinsic093 1198:0ce8
+	Actor::I_setImmortal,           // Intrinsic094 10f8:2403
+	CameraProcess::I_getCameraX,    // Intrinsic095 1198:1d06
+	CameraProcess::I_getCameraY,    // Intrinsic096 1198:1d0e
+	Item::I_setMapArray,            // Intrinsic097 10b0:0cce
+	Actor::I_getNpcNum,             // Intrinsic098 10b0:0cb2
+	Item::I_shoot,                  // Intrinsic099 10b0:38f1
+	CameraProcess::I_setCenterOn,   // Intrinsic09A 1198:1ae6
+	Item::I_enterFastArea,          // Intrinsic09B 10b0:2b34
+	Item::I_setBroken,              // Intrinsic09C 10b0:2614
+	Item::I_hurl,                   // Intrinsic09D 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic09E 10b0:0cb2
+	Ultima8Engine::I_moveKeyDownRecently, // Intrinsic09F 10b0:4437
+	// 0x0A0
+	MainActor::I_teleportToEgg,     // Intrinsic0A0 10a0:04ed
+	Actor::I_createActor,           // Intrinsic0A1 10f8:280e
+	Actor::I_clrInCombat,           // Intrinsic0A2 10f8:389f
+	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic0A3 1038:0605
+	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic0A4 1418:0b05
+	CruStatusGump::I_showStatusGump, // Intrinsic0A5 11c8:0006
+	Item::I_andStatus,              // Intrinsic0A6 10b0:25cf
+	AudioProcess::I_playSFX,        // Intrinsic0A7 12d8:04d0
+	AudioProcess::I_isSFXPlaying,   // Intrinsic0A8 12d8:05ba
+	Item::I_getDirFromTo16,         // Intrinsic0A9 10e0:01c7
+	Item::I_setFrame,               // Intrinsic0AA 10b0:0882
+	Egg::I_getUnkEggType,           // Intrinsic0AB 10b0:0da3
+	Egg::I_setEggXRange,            // Intrinsic0AC 10a0:0551
+	Item::I_overlaps,               // Intrinsic0AD 10b0:1d09
+	Item::I_isOn,                   // Intrinsic0AE 10b0:1f2e
+	Egg::I_getEggXRange,            // Intrinsic0AF 10a0:0513
+	// 0x0B0
+	World::I_clrAlertActive,       // Intrinsic0B0 10e8:0247
+	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic0B1 1418:0b3b
+	Actor::I_setDead,               // Intrinsic0B2 10f8:22a8
+	Game::I_playCredits,            // Intrinsic0B3 1008:009c
+	PaletteFaderProcess::I_jumpToAllWhite, // Intrinsic0B4 1418:0899
+	Actor::I_isFalling,             // Intrinsic0B5 10f8:2198
+	Item::I_getFamilyOfType,        // Intrinsic0B6 1110:03ec
+	Actor::I_getNpcNum,             // Intrinsic0B7 10b0:0cb2
+	Item::I_getQLo,                 // Intrinsic0B8 10b0:38a9
+	Item::I_getQHi,                 // Intrinsic0B9 10b0:385e
+	Item::I_avatarStoleSomething,   // Intrinsic0BA 10b0:2ffa
+	Item::I_andStatus,              // Intrinsic0BB 10b0:25cf
+	Ultima8Engine::I_getCurrentTimerTick, // Intrinsic0BC 1040:03b8
+	World::I_setAlertActive,       // Intrinsic0BD 10e8:0000
+	Ultima8Engine::I_getAvatarInStasis, // Intrinsic0BE 10f8:3d8e
+	MainActor::I_addItemCru,        // Intrinsic0BF 1008:03ab
+	// 0x0C0
+	Actor::I_getLastAnimSet,        // Intrinsic0C0 10f8:3e26
+	Item::I_getCY,                  // Intrinsic0C1 10b0:02de
+	CurrentMap::I_canExistAt,       // Intrinsic0C2 1160:0d96
+	Item::I_isOn,                   // Intrinsic0C3 10b0:1f2e
+	Actor::I_isDead,                // Intrinsic0C4 10f8:2278
+	Item::I_hurl,                   // Intrinsic0C5 1048:134f
+	Item::I_getQHi,                 // Intrinsic0C6 10b0:385e
+	Item::I_andStatus,              // Intrinsic0C7 10b0:25cf
+	Item::I_hurl,                   // Intrinsic0C8 1048:134f
+	Item::I_andStatus,              // Intrinsic0C9 10b0:25cf
+	Item::I_hurl,                   // Intrinsic0CA 1048:134f
+	Item::I_andStatus,              // Intrinsic0CB 10b0:25cf
+	Item::I_getDirToCoords,         // Intrinsic0CC 10b0:1a2d
+	MainActor::I_removeItemCru,     // Intrinsic0CD 1008:0b7f
+	Actor::I_getNpcNum,             // Intrinsic0CE 10b0:0cb2
+	Item::I_getCY,                  // Intrinsic0CF 10b0:02de
+	// 0x0D0
+	Item::I_isOn,                   // Intrinsic0D0 10b0:1f2e
+	Item::I_getFootpadData,         // Intrinsic0D1 10b0:1aed
+	Actor::I_isDead,                // Intrinsic0D2 10f8:2278
+	Actor::I_createActorCru,        // Intrinsic0D3 10b0:3cd8
+	Actor::I_setActivity,           // Intrinsic0D4 10f8:33b5
+	KeypadGump::I_showKeypad,       // Intrinsic0D5 13b0:00fe
+	Item::I_andStatus,              // Intrinsic0D6 10b0:25cf
+	UCMachine::I_numToStr,          // Intrinsic0D7 13f0:0073
+	UCMachine::I_false,             // Intrinsic0D8 10b0:2952
+	Actor::I_getDir,                // Intrinsic0D9 10f8:3e0c
+	Item::I_getQHi,                 // Intrinsic0DA 10b0:385e
+	Item::I_setQuality,             // Intrinsic0DB 10b0:0d60
+	Item::I_use,                    // Intrinsic0DC 10b0:26ab
+	Item::I_hurl,                   // Intrinsic0DD 1048:134f
+	Actor::I_addHp,                 // Intrinsic0DE 10f8:3e40
+	CruHealerProcess::I_create,     // Intrinsic0DF 1140:2a98
+	// 0x0E0
+	Item::I_equip,                  // Intrinsic0E0 10b0:2a1e
+	Item::I_setBroken,              // Intrinsic0E1 10b0:2614
+	Item::I_isOn,                   // Intrinsic0E2 10b0:1f2e
+	Actor::I_teleport,              // Intrinsic0E3 10f8:30b8
+	Item::I_getQHi,                 // Intrinsic0E4 10b0:385e
+	Item::I_isOn,                   // Intrinsic0E5 10b0:1f2e
+	Actor::I_isInCombat,            // Intrinsic0E6 10f8:21b7
+	Actor::I_getLastActivityNo,     // Intrinsic0E7 10f8:452f
+	Actor::I_setCombatTactic,       // Intrinsic0E8 10f8:3c8c
+	Actor::I_setDead,               // Intrinsic0E9 10f8:22a8
+	CameraProcess::I_getCameraY,    // Intrinsic0EA 1198:1d0e
+	Actor::I_getEquip,              // Intrinsic0EB 10f8:2e86
+	Actor::I_setEquip,              // Intrinsic0EC 10f8:2eb9
+	Actor::I_getDefaultActivity0,   // Intrinsic0ED 10f8:332b
+	Actor::I_getDefaultActivity1,   // Intrinsic0EE 10f8:3345
+	Actor::I_getDefaultActivity2,   // Intrinsic0EF 10f8:335f
+	// 0x0F0
+	Actor::I_getLastAnimSet,        // Intrinsic0F0 10f8:3e26
+	Item::I_getQLo,                 // Intrinsic0F1 10b0:38a9
+	Item::I_getQHi,                 // Intrinsic0F2 10b0:385e
+	Actor::I_getNpcNum,             // Intrinsic0F3 10b0:0cb2
+	Actor::I_setUnkByte,            // Intrinsic0F4 10f8:4511
+	Item::I_hurl,                   // Intrinsic0F5 1048:134f
+	Actor::I_setDead,               // Intrinsic0F6 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic0F7 10b0:38a9
+	Item::I_getCY,                  // Intrinsic0F8 10b0:02de
+	Actor::I_getNpcNum,             // Intrinsic0F9 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0FA 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0FB 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0FC 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0FD 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0FE 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0FF 10b0:0cb2
+	// 0x100
+	Item::I_hurl,                   // Intrinsic100 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic101 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic102 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic103 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic104 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic105 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic106 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic107 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic108 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic109 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic10A 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic10B 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic10C 10b0:25cf
+	Actor::I_setDead,               // Intrinsic10D 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic10E 10b0:38a9
+	Actor::I_setDead,               // Intrinsic10F 10f8:22a8
+	// 0x110
+	Actor::I_getMaxHp,              // Intrinsic110 10f8:3a6b
+	Actor::I_setHp,                 // Intrinsic111 10f8:3c56
+	Item::I_getQLo,                 // Intrinsic112 10b0:38a9
+	BatteryChargerProcess::I_create, // Intrinsic113 1140:2a78
+	Item::I_hurl,                   // Intrinsic114 1048:134f
+	Item::I_andStatus,              // Intrinsic115 10b0:25cf
+	Item::I_isOn,                   // Intrinsic116 10b0:1f2e
+	Actor::I_isDead,                // Intrinsic117 10f8:2278
+	Actor::I_setActivity,           // Intrinsic118 10f8:33b5
+	Item::I_getQHi,                 // Intrinsic119 10b0:385e
+	Actor::I_getLastAnimSet,        // Intrinsic11A 10f8:3e26
+	Actor::I_setDead,               // Intrinsic11B 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic11C 10b0:38a9
+	Item::I_isOn,                   // Intrinsic11D 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic11E 10b0:385e
+	Item::I_isOn,                   // Intrinsic11F 10b0:1f2e
+	// 0x120
+	Item::I_getQHi,                 // Intrinsic120 10b0:385e
+	Item::I_hurl,                   // Intrinsic121 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic122 10b0:0cb2
+	Item::I_getCY,                  // Intrinsic123 10b0:02de
+	Item::I_hurl,                   // Intrinsic124 1048:134f
+	Item::I_isOn,                   // Intrinsic125 10b0:1f2e
+	MainActor::I_hasKeycard,        // Intrinsic126 10f8:43e0
+	UCMachine::I_false,             // Intrinsic127 10b0:2952
+	Actor::I_isDead,                // Intrinsic128 10f8:2278
+	Actor::I_clrImmortal,           // Intrinsic129 10f8:241e
+	UCMachine::I_numToStr,          // Intrinsic12A 13f0:0073
+	Item::I_getQHi,                 // Intrinsic12B 10b0:385e
+	Actor::I_setActivity,           // Intrinsic12C 10f8:33b5
+	Item::I_andStatus,              // Intrinsic12D 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic12E 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic12F 10b0:25cf
+	// 0x130
+	Actor::I_getDir,                // Intrinsic130 10f8:3e0c
+	Actor::I_setDead,               // Intrinsic131 10f8:22a8
+	Actor::I_getNpcNum,             // Intrinsic132 10b0:0cb2
+	Item::I_getQLo,                 // Intrinsic133 10b0:38a9
+	Item::I_isCrusTypeNPC,          // Intrinsic134 10b0:443f
+	Item::I_andStatus,              // Intrinsic135 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic136 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic137 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic138 10b0:0cb2
+	Item::I_getQ,                   // Intrinsic139 10b0:0d06
+	Item::I_setQ,                   // Intrinsic13A 10b0:0fd1
+	Item::I_andStatus,              // Intrinsic13B 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic13C 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic13D 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic13E 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic13F 10b0:25cf
+	// 0x140
+	Actor::I_getNpcNum,             // Intrinsic140 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic141 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic142 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic143 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic144 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic145 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic146 10b0:0cb2
+	Item::I_fireDistance,           // Intrinsic147 1140:20cb
+	Item::I_andStatus,              // Intrinsic148 10b0:25cf
+	Item::I_hurl,                   // Intrinsic149 1048:134f
+	Item::I_andStatus,              // Intrinsic14A 10b0:25cf
+	CameraProcess::I_getCameraY,    // Intrinsic14B 1198:1d0e
+	CameraProcess::I_getCameraZ,    // Intrinsic14C 1198:1d16
+	Actor::I_clrInCombat,           // Intrinsic14D 10f8:389f
+	Item::I_getTypeFlag,            // Intrinsic14E 10b0:1061
+	Actor::I_getNpcNum,             // Intrinsic14F 10b0:0cb2
+	// 0x150
+	Item::I_hurl,                   // Intrinsic150 1048:134f
+	Item::I_getCY,                  // Intrinsic151 10b0:02de
+	Item::I_getCZ,                  // Intrinsic152 10b0:0322
+	Item::I_setFrame,               // Intrinsic153 10b0:0882
+	0								// Unused Intrinsic154 1050:0079
+};
+
+//////////////////////////////////////////////////////////
+
+// =========================================================
+// Intrinsics for German version.
+// This is annoyingly similar to the main version, but has an extra intrinsic inserted,
+// at 13F so they are all offset after taht
+//
+
+Intrinsic RegretDeIntrinsics[] = {
+	// 0x000
+	World::I_getAlertActive,        // Intrinsic000 10e8:048d
+	Item::I_getFrame,               // Intrinsic001 10b0:0826
+	Item::I_setFrame,               // Intrinsic002 10b0:0882
+	Item::I_getMapArray,            // Intrinsic003 10b0:0cea
+	Item::I_getStatus,              // Intrinsic004 10b0:10aa
+	Item::I_orStatus,               // Intrinsic005 10b0:25b6
+	Item::I_equip,                  // Intrinsic006 10b0:2a1e
+	Item::I_isPartlyOnScreen,       // Intrinsic007 10b0:41c1
+	Actor::I_isNPC,                 // Intrinsic008 10b0:24ca
+	Item::I_getZ,                   // Intrinsic009 10b0:0266
+	World::I_gameDifficulty,        // Intrinsic00A 10f8:3fcd
+	Item::I_getQLo,                 // Intrinsic00B 10b0:38a9
+	Item::I_destroy,                // Intrinsic00C 10b0:13d7
+	Actor::I_getUnkByte,            // Intrinsic00D 10f8:44f4
+	Item::I_getX,                   // Intrinsic00E 10b0:013e
+	Item::I_getY,                   // Intrinsic00F 10b0:0176
+	// 0x010
+	AudioProcess::I_playSFXCru,     // Intrinsic010 10b0:3954
+	Item::I_getShape,               // Intrinsic011 10b0:068f
+	Item::I_explode,                // Intrinsic012 1160:0a77
+	UCMachine::I_rndRange,          // Intrinsic013 12d8:0293
+	Item::I_legalCreateAtCoords,    // Intrinsic014 10b0:114d
+	Item::I_andStatus,              // Intrinsic015 10b0:25cf
+	World::I_getControlledNPCNum,   // Intrinsic016 1148:0048
+	Actor::I_getDir,                // Intrinsic017 10f8:3e0c
+	Actor::I_getLastAnimSet,        // Intrinsic018 10f8:3e26
+	Item::I_fireWeapon,             // Intrinsic019 1140:1a86
+	Item::I_create,                 // Intrinsic01A 10b0:1259
+	Item::I_popToCoords,            // Intrinsic01B 10b0:1383
+	Actor::I_setDead,               // Intrinsic01C 10f8:22a8
+	Item::I_push,                   // Intrinsic01D 10b0:13c4
+	Item::I_getEtherealTop,         // Intrinsic01E 10b8:26f8
+	Item::I_getQLo,                 // Intrinsic01F 10b0:38a9
+	// 0x020
+	Item::I_setQLo,                 // Intrinsic020 10b0:38c2
+	Item::I_getQHi,                 // Intrinsic021 10b0:385e
+	Item::I_setQHi,                 // Intrinsic022 10b0:387a
+	Item::I_getClosestDirectionInRange, // Intrinsic023 10e0:0000
+	Item::I_hurl,                   // Intrinsic024 1048:134f
+	Item::I_getCY,                  // Intrinsic025 10b0:02de
+	Item::I_getCX,                  // Intrinsic026 10b0:029a
+	SpriteProcess::I_createSprite,  // Intrinsic027 1150:00de
+	Item::I_setNpcNum,              // Intrinsic028 10b0:0c96
+	AudioProcess::I_playSFXCru,     // Intrinsic029 10b0:3973
+	Item::I_setShape,               // Intrinsic02A 10b0:0717
+	Item::I_pop,                    // Intrinsic02B 10b0:13aa
+	AudioProcess::I_stopSFXCru,     // Intrinsic02C 10b0:39ef
+	Item::I_isCompletelyOn,         // Intrinsic02D 10b0:1fa3
+	Item::I_popToContainer,         // Intrinsic02E 10b0:139a
+	Actor::I_getHp,                 // Intrinsic02F 10f8:39ea
+	// 0x030
+	MainActor::I_getMana,           // Intrinsic030 10f8:3b4a
+	Item::I_getFamily,              // Intrinsic031 10b0:1036
+	Actor::I_destroyContents,       // Intrinsic032 10b0:14f3
+	0, // AudioProcess::I_setVolumeForItemSFX,  // Intrinsic033 10b0:3a33
+	Item::I_getDirToItem,           // Intrinsic034 10b0:1ab8
+	AudioProcess::I_isSFXPlayingForObject, // Intrinsic035 10b0:3a0b
+	Item::I_getRangeIfVisible,      // Intrinsic036 1140:258e
+	AudioProcess::I_playSFXCru,     // Intrinsic037 10b0:39b1
+	Item::I_andStatus,              // Intrinsic038 10b0:25cf
+	Kernel::I_resetRef,             // Intrinsic039 11e8:0c63
+	Item::I_touch,                  // Intrinsic03A 10b0:2558
+	Egg::I_getEggId,                // Intrinsic03B 10a0:05bb
+	MainActor::I_addItemCru,        // Intrinsic03C 1008:03ab
+	Actor::I_getMap,                // Intrinsic03D 10f8:3243
+	Item::I_cast,                   // Intrinsic03E 10b0:2f5e
+	0,                              // Intrinsic03F 1198:0013
+	// 0x040
+	AudioProcess::I_stopSFXCru,     // Intrinsic040 10b0:39d0
+	Item::I_isOn,                   // Intrinsic041 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic042 10b0:385e
+	Item::I_isOn,                   // Intrinsic043 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic044 10b0:385e
+	Item::I_isOn,                   // Intrinsic045 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic046 10b0:385e
+	Item::I_isOn,                   // Intrinsic047 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic048 10b0:385e
+	Item::I_isOn,                   // Intrinsic049 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic04A 10b0:385e
+	Item::I_isOn,                   // Intrinsic04B 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic04C 10b0:385e
+	Actor::I_getCurrentActivityNo,  // Intrinsic04D 10f8:3a03
+	Actor::I_isDead,                // Intrinsic04E 10f8:2278
+	Actor::I_clrInCombat,           // Intrinsic04F 10f8:389f
+	// 0x050
+	Actor::I_setDefaultActivity0,   // Intrinsic050 10f8:329d
+	Actor::I_setDefaultActivity1,   // Intrinsic051 10f8:32ba
+	Actor::I_setDefaultActivity2,   // Intrinsic052 10f8:32d7
+	Actor::I_setActivity,           // Intrinsic053 10f8:33b5
+	World::I_setControlledNPCNum,   // Intrinsic054 1148:0038
+	Item::I_receiveHit,             // Intrinsic055 1140:04cb
+	UCMachine::I_true,              // Intrinsic056 1058:00c1
+	MainActor::I_setMana,           // Intrinsic057 10f8:3b64
+	Item::I_use,                    // Intrinsic058 10b0:26ab
+	Item::I_setUnkEggType,          // Intrinsic059 10b0:0e43
+	MusicProcess::I_playMusic,      // Intrinsic05A 1210:01a2
+	Item::I_getSurfaceWeight,       // Intrinsic05B 10b0:0602
+	Item::I_isCentreOn,             // Intrinsic05C 10b0:446e
+	Item::I_setFrame,               // Intrinsic05D 10b0:0882
+	Actor::I_getLastAnimSet,        // Intrinsic05E 10f8:3e26
+	Ultima8Engine::I_setAvatarInStasis, // Intrinsic05F 10f8:3d96
+	// 0x060
+	Actor::I_isBusy,                // Intrinsic060 10f8:0261
+	0, // Actor::I_getField0x13Flag2(),   // Intrinsic061 10f8:2499
+	Actor::I_doAnim,                // Intrinsic062 10f8:039a
+	Item::I_legalCreateAtPoint,     // Intrinsic063 10b0:10c0
+	Item::I_getPoint,               // Intrinsic064 10b0:247a
+	Item::I_legalMoveToPoint,       // Intrinsic065 10b0:1791
+	Item::I_fall,                   // Intrinsic066 1048:13eb
+	Item::I_hurl,                   // Intrinsic067 1048:134f
+	Kernel::I_getNumProcesses,      // Intrinsic068 11e8:0977
+	Item::I_getCY,                  // Intrinsic069 10b0:02de
+	0,                              // Intrinsic06A 1008:0134
+	0,                              // Intrinsic06B 1008:0123
+	MusicProcess::I_pauseMusic,     // Intrinsic06C 1210:02a3
+	MovieGump::I_playMovieCutsceneRegret, // Intrinsic06D 1448:0b5a
+	MusicProcess::I_unpauseMusic,   // Intrinsic06E 1210:02c1
+	Item::I_isInNpc,                // Intrinsic06F 10b0:24f9
+	// 0x070
+	Ultima8Engine::I_setCruStasis,  // Intrinsic070 1008:00e7
+	Ultima8Engine::I_clrCruStasis,  // Intrinsic071 1008:00ed
+	PaletteFaderProcess::I_jumpToAllGivenColor, // Intrinsic072 1418:0923
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic073 1418:0729
+	Actor::I_isDead,                // Intrinsic074 10f8:2278
+	Actor::I_getNpcNum,             // Intrinsic075 10b0:0cb2
+	UCMachine::I_false,             // Intrinsic076 10b0:2952
+	UCMachine::I_true,              // Intrinsic077 1058:00a1
+	Item::I_unequip,                // Intrinsic078 10b0:2a51
+	Item::I_andStatus,              // Intrinsic079 10b0:25cf
+	Item::I_move,                   // Intrinsic07A 10b0:1575
+	Ultima8Engine::I_getUnkCrusaderFlag, // Intrinsic07B 1008:0f1c
+	Ultima8Engine::I_setUnkCrusaderFlag, // Intrinsic07C 1008:0f20
+	Ultima8Engine::I_clrUnkCrusaderFlag, // Intrinsic07D 1008:0f16
+	Actor::I_turnToward,            // Intrinsic07E 10f8:3961
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic07F 1418:071b
+	// 0x080
+	MainActor::I_clrKeycards,       // Intrinsic080 10f8:4443
+	MusicProcess::I_stopMusic,      // Intrinsic081 1210:02df
+	PaletteFaderProcess::I_jumpToAllBlack, // Intrinsic082 1418:080f
+	0, // I_setUnkFlagA4(),               // Intrinsic083 1008:0090
+	0, // I_clearUnkFlagA4(),             // Intrinsic084 1008:0096
+	MainActor::I_switchMap,         // Intrinsic085 1030:0c60
+	MainActor::I_teleportToEgg,     // Intrinsic086 10a0:04c4
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic087 1418:0801
+	Actor::I_clrImmortal,           // Intrinsic088 10f8:241e
+	Actor::I_setActivity,           // Intrinsic089 10f8:33b5
+	Item::I_getQuality,             // Intrinsic08A 10b0:0d1c
+	Item::I_setQuality,             // Intrinsic08B 10b0:0d60
+	MainActor::I_getMaxEnergy,      // Intrinsic08C 10f8:3b81
+	CameraProcess::I_moveTo,        // Intrinsic08D 1198:0ce8
+	Actor::I_setImmortal,           // Intrinsic08E 10f8:2403
+	CameraProcess::I_getCameraX,    // Intrinsic08F 1198:1d06
+	// 0x090
+	CameraProcess::I_getCameraY,    // Intrinsic090 1198:1d0e
+	Item::I_setMapArray,            // Intrinsic091 10b0:0cce
+	Actor::I_getNpcNum,             // Intrinsic092 10b0:0cb2
+	Item::I_shoot,                  // Intrinsic093 10b0:38f1
+	CameraProcess::I_setCenterOn,   // Intrinsic094 1198:1ae6
+	Item::I_enterFastArea,          // Intrinsic095 10b0:2b34
+	Item::I_setBroken,              // Intrinsic096 10b0:2614
+	Item::I_hurl,                   // Intrinsic097 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic098 10b0:0cb2
+	Ultima8Engine::I_moveKeyDownRecently, // Intrinsic099 10b0:4437
+	MainActor::I_teleportToEgg,     // Intrinsic09A 10a0:04ed
+	Actor::I_createActor,           // Intrinsic09B 10f8:280e
+	Actor::I_clrInCombat,           // Intrinsic09C 10f8:389f
+	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic09D 1038:0605
+	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic09E 1418:0b05
+	CruStatusGump::I_showStatusGump, // Intrinsic09F 11c8:0006
+	// 0x0A0
+	Item::I_andStatus,              // Intrinsic0A0 10b0:25cf
+	Egg::I_getUnkEggType,           // Intrinsic0A1 10b0:0da3
+	Egg::I_setEggXRange,            // Intrinsic0A2 10a0:0551
+	Item::I_setFrame,               // Intrinsic0A3 10b0:0882
+	Item::I_overlaps,               // Intrinsic0A4 10b0:1d09
+	Item::I_isOn,                   // Intrinsic0A5 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic0A6 10b0:385e
+	Actor::I_getLastAnimSet,        // Intrinsic0A7 10f8:3e26
+	Item::I_getCY,                  // Intrinsic0A8 10b0:02de
+	CurrentMap::I_canExistAt,       // Intrinsic0A9 1160:0d96
+	Item::I_isOn,                   // Intrinsic0AA 10b0:1f2e
+	Actor::I_isDead,                // Intrinsic0AB 10f8:2278
+	Item::I_hurl,                   // Intrinsic0AC 1048:134f
+	Item::I_inFastArea,             // Intrinsic0AD 10b0:3a56
+	Item::I_getQHi,                 // Intrinsic0AE 10b0:385e
+	Item::I_andStatus,              // Intrinsic0AF 10b0:25cf
+	// 0x0B0
+	Item::I_hurl,                   // Intrinsic0B0 1048:134f
+	Item::I_andStatus,              // Intrinsic0B1 10b0:25cf
+	Item::I_hurl,                   // Intrinsic0B2 1048:134f
+	Item::I_andStatus,              // Intrinsic0B3 10b0:25cf
+	Item::I_getDirToCoords,         // Intrinsic0B4 10b0:1a2d
+	MainActor::I_removeItemCru,     // Intrinsic0B5 1008:0b7f
+	UCMachine::I_true,              // Intrinsic0B6 1008:005d
+	Actor::I_getNpcNum,             // Intrinsic0B7 10b0:0cb2
+	Item::I_getCY,                  // Intrinsic0B8 10b0:02de
+	Item::I_isOn,                   // Intrinsic0B9 10b0:1f2e
+	Item::I_getFootpadData,         // Intrinsic0BA 10b0:1aed
+	Actor::I_isDead,                // Intrinsic0BB 10f8:2278
+	Actor::I_createActorCru,        // Intrinsic0BC 10b0:3cd8
+	Actor::I_setActivity,           // Intrinsic0BD 10f8:33b5
+	KeypadGump::I_showKeypad,       // Intrinsic0BE 13b0:00fe
+	Item::I_andStatus,              // Intrinsic0BF 10b0:25cf
+	// 0x0C0
+	ComputerGump::I_readComputer,   // Intrinsic0C0 1390:0005
+	UCMachine::I_numToStr,          // Intrinsic0C1 13f0:0073
+	UCMachine::I_false,             // Intrinsic0C2 10b0:2952
+	Actor::I_getDir,                // Intrinsic0C3 10f8:3e0c
+	Item::I_getQHi,                 // Intrinsic0C4 10b0:385e
+	Item::I_setQuality,             // Intrinsic0C5 10b0:0d60
+	Item::I_hurl,                   // Intrinsic0C6 1048:134f
+	Actor::I_addHp,                 // Intrinsic0C7 10f8:3e40
+	CruHealerProcess::I_create,     // Intrinsic0C8 1140:2a98
+	Item::I_equip,                  // Intrinsic0C9 10b0:2a1e
+	Item::I_setBroken,              // Intrinsic0CA 10b0:2614
+	Item::I_isOn,                   // Intrinsic0CB 10b0:1f2e
+	Actor::I_teleport,              // Intrinsic0CC 10f8:30b8
+	Item::I_getDirFromTo16,         // Intrinsic0CD 10e0:01c7
+	Item::I_getQHi,                 // Intrinsic0CE 10b0:385e
+	Item::I_isOn,                   // Intrinsic0CF 10b0:1f2e
+	// 0x0D0
+	Actor::I_isInCombat,            // Intrinsic0D0 10f8:21b7
+	Actor::I_getLastActivityNo,     // Intrinsic0D1 10f8:452f
+	Actor::I_setCombatTactic,       // Intrinsic0D2 10f8:3c8c
+	Actor::I_setDead,               // Intrinsic0D3 10f8:22a8
+	CameraProcess::I_getCameraY,    // Intrinsic0D4 1198:1d0e
+	Actor::I_getEquip,              // Intrinsic0D5 10f8:2e86
+	Actor::I_setEquip,              // Intrinsic0D6 10f8:2eb9
+	Actor::I_getDefaultActivity0,   // Intrinsic0D7 10f8:332b
+	Actor::I_getDefaultActivity1,   // Intrinsic0D8 10f8:3345
+	Actor::I_getDefaultActivity2,   // Intrinsic0D9 10f8:335f
+	Actor::I_getLastAnimSet,        // Intrinsic0DA 10f8:3e26
+	Actor::I_isFalling,             // Intrinsic0DB 10f8:2198
+	Item::I_getQLo,                 // Intrinsic0DC 10b0:38a9
+	Item::I_getQHi,                 // Intrinsic0DD 10b0:385e
+	Actor::I_getNpcNum,             // Intrinsic0DE 10b0:0cb2
+	Actor::I_setUnkByte,            // Intrinsic0DF 10f8:4511
+	// 0x0E0
+	Item::I_hurl,                   // Intrinsic0E0 1048:134f
+	Actor::I_setDead,               // Intrinsic0E1 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic0E2 10b0:38a9
+	Item::I_getCY,                  // Intrinsic0E3 10b0:02de
+	Actor::I_getNpcNum,             // Intrinsic0E4 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0E5 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0E6 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0E7 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0E8 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0E9 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0EA 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0EB 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0EC 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0ED 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0EE 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0EF 1048:134f
+	// 0x0F0
+	Actor::I_getNpcNum,             // Intrinsic0F0 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0F1 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0F2 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0F3 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0F4 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic0F5 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic0F6 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic0F7 10b0:25cf
+	Actor::I_setDead,               // Intrinsic0F8 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic0F9 10b0:38a9
+	Actor::I_setDead,               // Intrinsic0FA 10f8:22a8
+	Actor::I_getMaxHp,              // Intrinsic0FB 10f8:3a6b
+	Actor::I_setHp,                 // Intrinsic0FC 10f8:3c56
+	Item::I_getQLo,                 // Intrinsic0FD 10b0:38a9
+	BatteryChargerProcess::I_create, // Intrinsic0FE 1140:2a78
+	Item::I_hurl,                   // Intrinsic0FF 1048:134f
+	// 0x100
+	Item::I_andStatus,              // Intrinsic100 10b0:25cf
+	Item::I_isOn,                   // Intrinsic101 10b0:1f2e
+	Actor::I_isDead,                // Intrinsic102 10f8:2278
+	Actor::I_setActivity,           // Intrinsic103 10f8:33b5
+	Item::I_getQHi,                 // Intrinsic104 10b0:385e
+	Actor::I_getLastAnimSet,        // Intrinsic105 10f8:3e26
+	Actor::I_setDead,               // Intrinsic106 10f8:22a8
+	Item::I_getQLo,                 // Intrinsic107 10b0:38a9
+	Item::I_isOn,                   // Intrinsic108 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic109 10b0:385e
+	Item::I_isOn,                   // Intrinsic10A 10b0:1f2e
+	Item::I_getQHi,                 // Intrinsic10B 10b0:385e
+	Item::I_hurl,                   // Intrinsic10C 1048:134f
+	Actor::I_getNpcNum,             // Intrinsic10D 10b0:0cb2
+	Item::I_getCY,                  // Intrinsic10E 10b0:02de
+	Item::I_hurl,                   // Intrinsic10F 1048:134f
+	// 0x110
+	Item::I_isOn,                   // Intrinsic110 10b0:1f2e
+	MainActor::I_hasKeycard,        // Intrinsic111 10f8:43e0
+	UCMachine::I_false,             // Intrinsic112 10b0:2952
+	Actor::I_isDead,                // Intrinsic113 10f8:2278
+	Actor::I_clrImmortal,           // Intrinsic114 10f8:241e
+	UCMachine::I_numToStr,          // Intrinsic115 13f0:0073
+	Item::I_getQHi,                 // Intrinsic116 10b0:385e
+	Actor::I_setActivity,           // Intrinsic117 10f8:33b5
+	Item::I_andStatus,              // Intrinsic118 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic119 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic11A 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic11B 10b0:0cb2
+	Item::I_isCrusTypeNPC,          // Intrinsic11C 10b0:443f
+	Item::I_andStatus,              // Intrinsic11D 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic11E 10b0:0cb2
+	Item::I_avatarStoleSomething,   // Intrinsic11F 10b0:2ffa
+	// 0x120
+	Item::I_andStatus,              // Intrinsic120 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic121 10b0:0cb2
+	Item::I_getQ,                   // Intrinsic122 10b0:0d06
+	Item::I_setQ,                   // Intrinsic123 10b0:0fd1
+	Item::I_andStatus,              // Intrinsic124 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic125 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic126 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic127 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic128 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic129 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic12A 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic12B 10b0:0cb2
+	Item::I_andStatus,              // Intrinsic12C 10b0:25cf
+	Actor::I_getNpcNum,             // Intrinsic12D 10b0:0cb2
+	Actor::I_getDir,                // Intrinsic12E 10f8:3e0c
+	Item::I_andStatus,              // Intrinsic12F 10b0:25cf
+	// 0x130
+	Actor::I_getNpcNum,             // Intrinsic130 10b0:0cb2
+	Item::I_fireDistance,           // Intrinsic131 1140:20cb
+	Item::I_andStatus,              // Intrinsic132 10b0:25cf
+	Item::I_hurl,                   // Intrinsic133 1048:134f
+	Item::I_andStatus,              // Intrinsic134 10b0:25cf
+	CameraProcess::I_getCameraY,    // Intrinsic135 1198:1d0e
+	CameraProcess::I_getCameraZ,    // Intrinsic136 1198:1d16
+	CruStatusGump::I_hideStatusGump, // Intrinsic137 11c8:0000
+	Actor::I_clrInCombat,           // Intrinsic138 10f8:389f
+	Item::I_getTypeFlag,            // Intrinsic139 10b0:1061
+	Actor::I_getNpcNum,             // Intrinsic13A 10b0:0cb2
+	Item::I_hurl,                   // Intrinsic13B 1048:134f
+	Item::I_getCY,                  // Intrinsic13C 10b0:02de
+	Item::I_getCZ,                  // Intrinsic13D 10b0:0322
+	Item::I_setFrame,               // Intrinsic13E 10b0:0882
+	UCMachine::I_numToStr,          // Intrinsic13F 13f0:0073
+	// 0x140
+	AudioProcess::I_playSFX,        // Intrinsic140 12d8:04d0
+	AudioProcess::I_isSFXPlaying,   // Intrinsic141 12d8:05ba
+	World::I_clrAlertActive ,       // Intrinsic142 10e8:0247
+	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic143 1418:0b3b
+	Actor::I_isDead,                // Intrinsic144 10f8:2278
+	Actor::I_setDead,               // Intrinsic145 10f8:22a8
+	Game::I_playCredits,            // Intrinsic146 1008:009c
+	PaletteFaderProcess::I_jumpToAllWhite, // Intrinsic147 1418:0899
+	Item::I_getFamilyOfType,        // Intrinsic148 1110:03ec
+	Actor::I_getNpcNum,             // Intrinsic149 10b0:0cb2
+	Item::I_getQLo,                 // Intrinsic14A 10b0:38a9
+	Item::I_andStatus,              // Intrinsic14B 10b0:25cf
+	Ultima8Engine::I_getCurrentTimerTick, // Intrinsic14C 1040:03b8
+	World::I_setAlertActive,        // Intrinsic14D 10e8:0000
+	Ultima8Engine::I_getAvatarInStasis, // Intrinsic14E 10f8:3d8e
+	MainActor::I_addItemCru,        // Intrinsic14F 1008:03ab
+	// 0x150
+	Egg::I_getEggXRange,            // Intrinsic150 10a0:0513
+	Actor::I_clrInCombat,           // Intrinsic151 10f8:389f
+	PaletteFaderProcess::I_jumpToAllGivenColor, // Intrinsic152 1418:0923
+	Item::I_setFrame,               // Intrinsic153 10b0:0882
+	Actor::I_getDir,                // Intrinsic154 10f8:3e0c
+	UCMachine::I_numToStr,          // Intrinsic155 13f0:0073
+	Item::I_isOn,                   // Intrinsic156 10b0:1f2e
+	Actor::I_getDir,                // Intrinsic157 10f8:3e0c
+	Actor::I_setDead,               // Intrinsic158 10f8:22a8
+	Item::I_getQHi,                 // Intrinsic159 10b0:385e
+	Item::I_getQLo,                 // Intrinsic15A 10b0:38a9
+	UCMachine::I_numToStr,          // Intrinsic15B 13f0:0073
+	Actor::I_getDir,                // Intrinsic15C 10f8:3e0c
+	0							    // UNUSED15D  Intrinsic15D 1050:0079
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/usecode/remorse_intrinsics.h b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
index bb91dda2f2..2fdaed2bb5 100644
--- a/engines/ultima/ultima8/usecode/remorse_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
@@ -29,10 +29,9 @@
 namespace Ultima {
 namespace Ultima8 {
 
-// Crusader: No Remorse Intrinsics
+// Crusader: No Remorse Intrinsics for V1.21
 // Unknown function signatures were generate by the usecode disassembly
 // and looking at handling of SP and retval after function.
-// Most up-to-date version of unknown functions is in convert_usecode_crusader.h
 Intrinsic RemorseIntrinsics[] = {
 	// 0x000
 	World::I_getAlertActive,
@@ -192,7 +191,7 @@ Intrinsic RemorseIntrinsics[] = {
 	0, // pause cycler - not needed as our cycler does not run when paused
 	MovieGump::I_playMovieCutsceneAlt, // TODO: not exactly the same, Alt includes a fade.
 	0, // resume cycler - not needed as our cycler does not run when paused
-	Game::I_playCredits, // TODO: Implement this
+	Game::I_playCredits,
 	Ultima8Engine::I_moveKeyDownRecently,
 	MainActor::I_teleportToEgg, // void Intrinsic096(4 bytes)
 	PaletteFaderProcess::I_jumpToGreyScale,
@@ -372,331 +371,334 @@ Intrinsic RemorseIntrinsics[] = {
 
 // Intrinsics for the Remorse demo.
 Intrinsic RemorseDemoIntrinsics[] = {
-	World::I_getAlertActive,
-	Item::I_getFrame,
-	Item::I_setFrame,
-	Item::I_getMapArray,
-	Item::I_getStatus,
-	Item::I_orStatus,
-	Item::I_equip,
-	Item::I_isPartlyOnScreen,
-	Actor::I_isNPC,
-	Item::I_getZ,
-	Item::I_destroy,
-	Actor::I_getUnkByte,
-	Ultima8Engine::I_setAvatarInStasis,
-	Item::I_getDirToItem,
-	Actor::I_turnToward,
-	MovieGump::I_playMovieCutsceneAlt,
+	World::I_getAlertActive,        // Intrinsic000 10d8:0243
+	Item::I_getFrame,               // Intrinsic001 10a0:07b4
+	Item::I_setFrame,               // Intrinsic002 10a0:0810
+	Item::I_getMapArray,            // Intrinsic003 10a0:0c78
+	Item::I_getStatus,              // Intrinsic004 10a0:1038
+	Item::I_orStatus,               // Intrinsic005 10a0:2572
+	Item::I_equip,                  // Intrinsic006 10a0:2a35
+	Item::I_isPartlyOnScreen,       // Intrinsic007 10a0:40ce
+	Actor::I_isNPC,                 // Intrinsic008 10a0:2486
+	Item::I_getZ,                   // Intrinsic009 10a0:0266
+	Item::I_destroy,                // Intrinsic00A 10a0:1365
+	Actor::I_getUnkByte,            // Intrinsic00B 10e8:3dfc
+	Ultima8Engine::I_setAvatarInStasis, // Intrinsic00C 10e8:369e
+	Item::I_getDirToItem,           // Intrinsic00D 10a0:1a74
+	Actor::I_turnToward,            // Intrinsic00E 10e8:326b
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic00F 10a0:3abb
 	// 0x10
-	Item::I_getQLo,
-	Actor::I_getMap,
-	MusicProcess::I_playMusic,
-	Item::I_getX,
-	Item::I_getY,
-	AudioProcess::I_playSFXCru,
-	Item::I_getShape,
-	Item::I_explode,
-	UCMachine::I_rndRange,
-	Item::I_legalCreateAtCoords,
-	Item::I_andStatus,
-	World::I_getControlledNPCNum,
-	Actor::I_getDir,
-	Actor::I_getLastAnimSet,
-	Item::I_fireWeapon,
-	Item::I_create,
+	Item::I_getQLo,                 // Intrinsic010 10a0:3889
+	Actor::I_getMap,                // Intrinsic011 10e8:2b90
+	MusicProcess::I_playMusic,      // Intrinsic012 11f8:0143
+	Item::I_getX,                   // Intrinsic013 10a0:013e
+	Item::I_getY,                   // Intrinsic014 10a0:0176
+	AudioProcess::I_playSFXCru,     // Intrinsic015 10a0:3934
+	Item::I_getShape,               // Intrinsic016 10a0:068f
+	Item::I_explode,                // Intrinsic017 1148:0859
+	UCMachine::I_rndRange,          // Intrinsic018 12d8:0293
+	Item::I_legalCreateAtCoords,    // Intrinsic019 10a0:10db
+	Item::I_andStatus,              // Intrinsic01A 10a0:258b
+	World::I_getControlledNPCNum,   // Intrinsic01B 1130:0010
+	Actor::I_getDir,                // Intrinsic01C 10e8:3714
+	Actor::I_getLastAnimSet,        // Intrinsic01D 10e8:372e
+	Item::I_fireWeapon,             // Intrinsic01E 1128:11da
+	Item::I_create,                 // Intrinsic01F 10a0:11e7
 	// 0x20
-	Item::I_popToCoords,
-	Actor::I_setDead,
-	Item::I_push,
-	Item::I_getEtherealTop,
-	Item::I_setShape,
-	Item::I_touch,
-	Item::I_getQHi,
-	Item::I_getClosestDirectionInRange,
-	Item::I_hurl,
-	World::I_gameDifficulty,
-	AudioProcess::I_playAmbientSFXCru,
-	Item::I_isCompletelyOn,
-	UCMachine::I_true,
-	Container::I_destroyContents,
-	Item::I_getQLo,
-	Item::I_inFastArea,
+	Item::I_popToCoords,            // Intrinsic020 10a0:1311
+	Actor::I_setDead,               // Intrinsic021 10e8:2010
+	Item::I_push,                   // Intrinsic022 10a0:1352
+	Item::I_getEtherealTop,			// Intrinsic023 10a8:26a8
+	Item::I_setShape,               // Intrinsic024 10a0:06a5
+	Item::I_touch,                  // Intrinsic025 10a0:2514
+	Item::I_getQHi,                 // Intrinsic026 10a0:383e
+	Item::I_getClosestDirectionInRange, // Intrinsic027 10d0:0000
+	Item::I_hurl,                   // Intrinsic028 1038:12a6
+	World::I_gameDifficulty,        // Intrinsic029 10e8:38d5
+	AudioProcess::I_playAmbientSFXCru, // Intrinsic02A 10a0:3953
+	Item::I_isCompletelyOn,         // Intrinsic02B 10a0:1f5f
+	UCMachine::I_true,              // Intrinsic02C 1048:00c1
+	Container::I_destroyContents,   // Intrinsic02D 10a0:14af
+	Item::I_getQLo,                 // Intrinsic02E 10a0:3889
+	Item::I_inFastArea,             // Intrinsic02F 10a0:3af5
 	// 0x30
-	Item::I_setQHi,
-	Item::I_legalMoveToPoint,
-	CurrentMap::I_canExistAtPoint,
-	Item::I_pop,
-	Item::I_andStatus,
-	Item::I_receiveHit,
-	Actor::I_isBusy,
-	Item::I_getDirFromTo16,
-	Actor::I_isKneeling,
-	Actor::I_doAnim,
-	MainActor::I_addItemCru,
-	AudioProcess::I_stopSFXCru,
-	Actor::I_isDead,
-	AudioProcess::I_isSFXPlayingForObject,
-	Item::I_setQLo,
-	Item::I_getFamily,
+	Item::I_setQHi,                 // Intrinsic030 10a0:385a
+	Item::I_legalMoveToPoint,       // Intrinsic031 10a0:174d
+	CurrentMap::I_canExistAtPoint,  // Intrinsic032 10a0:4071
+	Item::I_pop,                    // Intrinsic033 10a0:1338
+	Item::I_andStatus,              // Intrinsic034 10a0:258b
+	Item::I_receiveHit,             // Intrinsic035 1128:0247
+	Actor::I_isBusy,                // Intrinsic036 10e8:010c
+	Item::I_getDirFromTo16,         // Intrinsic037 10d0:01c7
+	Actor::I_isKneeling,            // Intrinsic038 10e8:21fb
+	Actor::I_doAnim,                // Intrinsic039 10e8:0245
+	MainActor::I_addItemCru,        // Intrinsic03A 13e8:0330
+	AudioProcess::I_stopSFXCru,     // Intrinsic03B 10a0:39b0
+	Actor::I_isDead,                // Intrinsic03C 10e8:1fe0
+	AudioProcess::I_isSFXPlayingForObject, // Intrinsic03D 10a0:39eb
+	Item::I_setQLo,                 // Intrinsic03E 10a0:38a2
+	Item::I_getFamily,              // Intrinsic03F 10a0:0fc4
 	// 0x40
-	Item::I_fall,
-	Egg::I_getEggId,
-	CameraProcess::I_moveTo,
-	CameraProcess::I_setCenterOn,
-	Item::I_getRangeIfVisible,
-	AudioProcess::I_playSFXCru,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
+	Item::I_fall,                   // Intrinsic040 1038:1334
+	Egg::I_getEggId,                // Intrinsic041 1090:05c5
+	CameraProcess::I_moveTo,        // Intrinsic042 1180:0cba
+	CameraProcess::I_setCenterOn,   // Intrinsic043 1180:1aa5
+	Item::I_getRangeIfVisible,      // Intrinsic044 1128:1c01
+	AudioProcess::I_playSFXCru,     // Intrinsic045 10a0:3991
+	Item::I_isOn,                   // Intrinsic046 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic047 10a0:383e
+	Item::I_isOn,                   // Intrinsic048 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic049 10a0:383e
+	Item::I_isOn,                   // Intrinsic04A 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic04B 10a0:383e
+	Item::I_isOn,                   // Intrinsic04C 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic04D 10a0:383e
+	Item::I_isOn,                   // Intrinsic04E 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic04F 10a0:383e
 	// 0x50
-	Item::I_isOn,
-	Item::I_getQHi,
-	Actor::I_getCurrentActivityNo,
-	Actor::I_clrInCombat,
-	Actor::I_setDefaultActivity0,
-	Actor::I_setDefaultActivity1,
-	Actor::I_setDefaultActivity2,
-	Actor::I_setActivity,
-	World::I_setControlledNPCNum,
-	Item::I_getSurfaceWeight,
-	Item::I_isCentreOn,
-	Item::I_setFrame,
-	Actor::I_getLastAnimSet,
-	Item::I_legalCreateAtPoint,
-	Item::I_getPoint,
-	CruStatusGump::I_hideStatusGump,
+	Item::I_isOn,                   // Intrinsic050 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic051 10a0:383e
+	Actor::I_getCurrentActivityNo,  // Intrinsic052 10e8:330d
+	Actor::I_clrInCombat,           // Intrinsic053 10e8:31a9
+	Actor::I_setDefaultActivity0,   // Intrinsic054 10e8:2bea
+	Actor::I_setDefaultActivity1,   // Intrinsic055 10e8:2c07
+	Actor::I_setDefaultActivity2,   // Intrinsic056 10e8:2c24
+	Actor::I_setActivity,           // Intrinsic057 10e8:2d02
+	World::I_setControlledNPCNum,   // Intrinsic058 1130:0000
+	Item::I_getSurfaceWeight,       // Intrinsic059 10a0:0602
+	Item::I_isCentreOn,             // Intrinsic05A 10a0:4377
+	Item::I_setFrame,               // Intrinsic05B 10a0:0810
+	Actor::I_getLastAnimSet,        // Intrinsic05C 10e8:372e
+	Item::I_legalCreateAtPoint,     // Intrinsic05D 10a0:104e
+	Item::I_getPoint,               // Intrinsic05E 10a0:2436
+	CruStatusGump::I_hideStatusGump, // Intrinsic05F 11b0:0000
 	// 0x60
-	MovieGump::I_playMovieOverlay,
-	CruStatusGump::I_showStatusGump,
-	Actor::I_setDead,
-	Actor::I_createActor,
-	0,
-	Actor::I_teleport,
-	Item::I_getFootpadData,
-	Item::I_isInNpc,
-	Item::I_getQLo,
-	Item::I_getNpcNum,
-	Item::I_setNpcNum,
-	Item::I_andStatus,
-	Item::I_move,
-	UCMachine::I_true,
-	Kernel::I_resetRef,
-	Item::I_getNpcNum,
+	MovieGump::I_playMovieOverlay,  // Intrinsic060 10a0:3ad7
+	CruStatusGump::I_showStatusGump, // Intrinsic061 11b0:0006
+	Actor::I_setDead,               // Intrinsic062 10e8:2010
+	Actor::I_createActor,           // Intrinsic063 10e8:25b9
+	0, // I_forceCameraUpdate,      // Intrinsic064 1180:0013
+	Actor::I_teleport,              // Intrinsic065 10e8:29fa
+	Item::I_getFootpadData,         // Intrinsic066 10a0:1aa9
+	Item::I_isInNpc,                // Intrinsic067 10a0:24b5
+	Item::I_getQLo,                 // Intrinsic068 10a0:3889
+	Item::I_getNpcNum,              // Intrinsic069 10a0:0c40
+	Item::I_setNpcNum,              // Intrinsic06A 10a0:0c24
+	Item::I_andStatus,              // Intrinsic06B 10a0:258b
+	Item::I_move,                   // Intrinsic06C 10a0:1531
+	UCMachine::I_true,              // Intrinsic06D 1048:00a1
+	Kernel::I_resetRef,             // Intrinsic06E 11d0:0c63
+	Item::I_getNpcNum,              // Intrinsic06F 10a0:0c40
 	// 0x70
-	Item::I_andStatus,
-	Ultima8Engine::I_getUnkCrusaderFlag,
-	Ultima8Engine::I_setUnkCrusaderFlag,
-	Ultima8Engine::I_setCruStasis,
-	Actor::I_setDead,
-	Ultima8Engine::I_clrUnkCrusaderFlag,
-	Ultima8Engine::I_clrCruStasis,
-	AudioProcess::I_stopSFXCru,
-	PaletteFaderProcess::I_fadeToBlack,
-	MainActor::I_clrKeycards,
-	MainActor::I_teleportToEgg,
-	PaletteFaderProcess::I_fadeToGamePal,
-	Actor::I_setImmortal,
-	Actor::I_getHp,
-	Actor::I_setActivity,
-	Item::I_getQuality,
+	Item::I_andStatus,              // Intrinsic070 10a0:258b
+	Ultima8Engine::I_getUnkCrusaderFlag, // Intrinsic071 13e8:0e27
+	Ultima8Engine::I_setUnkCrusaderFlag, // Intrinsic072 13e8:0e2b
+	Ultima8Engine::I_setCruStasis,  // Intrinsic073 13e8:0071
+	Actor::I_setDead,               // Intrinsic074 10e8:2010
+	Ultima8Engine::I_clrUnkCrusaderFlag, // Intrinsic075 13e8:0e21
+	Ultima8Engine::I_clrCruStasis,  // Intrinsic076 13e8:0077
+	AudioProcess::I_stopSFXCru,     // Intrinsic077 10a0:39cf
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic078 1440:06e6
+	MainActor::I_clrKeycards,       // Intrinsic079 10e8:3d4b
+	MainActor::I_teleportToEgg,     // Intrinsic07A 1090:04ce
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic07B 1440:07cc
+	Actor::I_clrImmortal,           // Intrinsic07C 10e8:2185
+	Actor::I_getHp,                 // Intrinsic07D 10e8:32f4
+	Actor::I_setActivity,           // Intrinsic07E 10e8:2d02
+	Item::I_getQuality,             // Intrinsic07F 10a0:0caa
 	// 0x80
-	Item::I_setQuality,
-	Item::I_use,
-	MainActor::I_getMaxEnergy,
-	Actor::I_getMana,
-	Actor::I_setMana,
-	Item::I_getQLo,
-	Actor::I_setImmortal,
-	CameraProcess::I_getCameraX,
-	CameraProcess::I_getCameraY,
-	Item::I_setMapArray,
-	Item::I_getNpcNum,
-	Item::I_shoot,
-	Item::I_enterFastArea,
-	Item::I_setBroken,
-	Item::I_hurl,
-	Item::I_getNpcNum,
+	Item::I_setQuality,             // Intrinsic080 10a0:0cee
+	Item::I_use,                    // Intrinsic081 10a0:2667
+	MainActor::I_getMaxEnergy,      // Intrinsic082 10e8:348b
+	Actor::I_getMana,               // Intrinsic083 10e8:3454
+	Actor::I_setMana,               // Intrinsic084 10e8:346e
+	Item::I_getQLo,                 // Intrinsic085 10a0:3889
+	Actor::I_setImmortal,			// Intrinsic086 10e8:216a
+	CameraProcess::I_getCameraX,    // Intrinsic087 1180:1cc5
+	CameraProcess::I_getCameraY,    // Intrinsic088 1180:1ccd
+	Item::I_setMapArray,            // Intrinsic089 10a0:0c5c
+	Item::I_getNpcNum,              // Intrinsic08A 10a0:0c40
+	Item::I_shoot,                  // Intrinsic08B 10a0:38d1
+	Item::I_enterFastArea,          // Intrinsic08C 10a0:2b30
+	Item::I_setBroken,              // Intrinsic08D 10a0:25d0
+	Item::I_hurl,                   // Intrinsic08E 1038:12a6
+	Item::I_getNpcNum,              // Intrinsic08F 10a0:0c40
 	// 0x90
-	PaletteFaderProcess::I_jumpToAllBlack,
-	MusicProcess::I_stopMusic,
+	PaletteFaderProcess::I_jumpToAllBlack, // Intrinsic090 1440:07da
+	MusicProcess::I_stopMusic,      // Intrinsic091 11f8:0223
 	0,
-	MovieGump::I_playMovieCutsceneAlt,
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic093 10a0:3a9f
 	0,
-	Game::I_playCredits,
-	Ultima8Engine::I_moveKeyDownRecently,
-	MainActor::I_teleportToEgg,
-	PaletteFaderProcess::I_jumpToGreyScale,
-	World::I_resetVargasShield,
-	Item::I_andStatus,
-	PaletteFaderProcess::I_jumpToNormalPalette,
-	PaletteFaderProcess::I_fadeToGamePal,
-	PaletteFaderProcess::I_fadeToGamePal,
-	PaletteFaderProcess::I_fadeToBlack,
-	PaletteFaderProcess::I_fadeToBlack,
+	Game::I_playCredits,            // Intrinsic095 13e8:003f
+	Ultima8Engine::I_moveKeyDownRecently, // Intrinsic096 10a0:4340
+	MainActor::I_teleportToEgg,     // Intrinsic097 1090:04f7
+	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic098 1028:0605
+	World::I_resetVargasShield,     // Intrinsic099 1128:0000
+	Item::I_andStatus,              // Intrinsic09A 10a0:258b
+	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic09B 1440:0a7c
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09C 1440:06f4
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09D 1440:0bc6
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic09E 1440:04ea
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic09F 1440:0c47
 	// 0xA0
-	PaletteFaderProcess::I_fadeToGivenColor,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Item::I_getUnkEggType,
-	Egg::I_setEggXRange,
-	Item::I_overlaps,
-	Item::I_isOn,
-	UCMachine::I_true,
-	Egg::I_getEggXRange,
-	Actor::I_setDead,
-	MovieGump::I_playMovieCutsceneAlt,
-	AudioProcess::I_playSFX,
-	Actor::I_isFalling,
-	Item::I_getFamilyOfType,
-	Item::I_getNpcNum,
-	Item::I_getQLo,
+	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic0A0 1440:0ab2
+	Actor::I_setDead,               // Intrinsic0A1 10e8:2010
+	Item::I_getQLo,                 // Intrinsic0A2 10a0:3889
+	Item::I_getUnkEggType,          // Intrinsic0A3 10a0:0d31
+	Egg::I_setEggXRange,            // Intrinsic0A4 1090:055b
+	Item::I_overlaps,               // Intrinsic0A5 10a0:1cc5
+	Item::I_isOn,                   // Intrinsic0A6 10a0:1eea
+	UCMachine::I_true,              // Intrinsic0A7 13e8:00b9
+	Egg::I_getEggXRange,            // Intrinsic0A8 1090:051d
+	Actor::I_setDead,               // Intrinsic0A9 10e8:2010
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic0AA 10a0:3a9f
+	AudioProcess::I_playSFX,        // Intrinsic0AB 12d8:0476
+	Actor::I_isFalling,             // Intrinsic0AC 10e8:1f01
+	Item::I_getFamilyOfType,        // Intrinsic0AD 10f8:054d
+	Item::I_getNpcNum,              // Intrinsic0AE 10a0:0c40
+	Item::I_getQLo,                 // Intrinsic0AF 10a0:3889
 	// 0xB0
-	Item::I_getQHi,
-	Item::I_unequip,
-	Item::I_avatarStoleSomething,
-	Item::I_andStatus,
-	Ultima8Engine::I_getCurrentTimerTick,
-	World::I_setAlertActive,
-	Item::I_equip,
-	World::I_clrAlertActive,
-	Ultima8Engine::I_getAvatarInStasis,
-	MainActor::I_addItemCru,
-	Actor::I_getLastAnimSet,
-	Item::I_setQuality,
-	CurrentMap::I_canExistAt,
-	Item::I_isOn,
-	Item::I_hurl,
-	Item::I_getQHi,
+	Item::I_getQHi,                 // Intrinsic0B0 10a0:383e
+	Item::I_unequip,                // Intrinsic0B1 10a0:2a68
+	Item::I_avatarStoleSomething,   // Intrinsic0B2 10a0:2fda
+	Item::I_andStatus,              // Intrinsic0B3 10a0:258b
+	Ultima8Engine::I_getCurrentTimerTick, // Intrinsic0B4 1030:03b8
+	World::I_setAlertActive,        // Intrinsic0B5 10d8:0000
+	Item::I_equip,                  // Intrinsic0B6 10a0:2a35
+	World::I_clrAlertActive,        // Intrinsic0B7 10d8:0121
+	Ultima8Engine::I_getAvatarInStasis, // Intrinsic0B8 10e8:3696
+	MainActor::I_addItemCru,        // Intrinsic0B9 13e8:0330
+	Actor::I_getLastAnimSet,        // Intrinsic0BA 10e8:372e
+	Item::I_setQuality,             // Intrinsic0BB 10a0:0cee
+	CurrentMap::I_canExistAt,       // Intrinsic0BC 1148:0b67
+	Item::I_isOn,                   // Intrinsic0BD 10a0:1eea
+	Item::I_hurl,                   // Intrinsic0BE 1038:12a6
+	Item::I_getQHi,                 // Intrinsic0BF 10a0:383e
 	// 0xC0
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	KeypadGump::I_showKeypad,
-	Item::I_isOn,
-	SpriteProcess::I_createSprite,
-	Item::I_getDirFromItem,
-	Item::I_hurl,
-	Item::I_getQHi,
-	Actor::I_addHp,
-	Game::I_playDemoScreen,
-	Actor::I_isInCombat,
-	Actor::I_setActivity,
-	Item::I_setQAndCombine,
+	Item::I_andStatus,              // Intrinsic0C0 10a0:258b
+	Item::I_hurl,                   // Intrinsic0C1 1038:12a6
+	Item::I_andStatus,              // Intrinsic0C2 10a0:258b
+	Item::I_hurl,                   // Intrinsic0C3 1038:12a6
+	Item::I_andStatus,              // Intrinsic0C4 10a0:258b
+	KeypadGump::I_showKeypad,       // Intrinsic0C5 13c0:00fe
+	Item::I_isOn,                   // Intrinsic0C6 10a0:1eea
+	SpriteProcess::I_createSprite,  // Intrinsic0C7 1138:00de
+	Item::I_getDirFromItem,         // Intrinsic0C8 10a0:1a3f
+	Item::I_hurl,                   // Intrinsic0C9 1038:12a6
+	Item::I_getQHi,                 // Intrinsic0CA 10a0:383e
+	Actor::I_addHp,                 // Intrinsic0CB 10e8:3748
+	Game::I_playDemoScreen,			// Intrinsic0CC 1020:049c
+	Actor::I_isInCombat,            // Intrinsic0CD 10e8:1f20
+	Actor::I_setActivity,           // Intrinsic0CE 10e8:2d02
+	Item::I_setQAndCombine,         // Intrinsic0CF 10a0:0dd1
 	// 0xD0
-	Item::I_use,
-	AudioProcess::I_stopAllSFX,
-	MovieGump::I_playMovieCutscene,
-	0,
-	AudioProcess::I_playSFX,
-	Item::I_use,
-	CameraProcess::I_getCameraZ,
-	Actor::I_getLastAnimSet,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	PaletteFaderProcess::I_jumpToAllWhite,
-	Actor::I_setActivity,
-	Item::I_isOn,
-	Actor::I_getLastActivityNo,
-	Actor::I_setCombatTactic,
-	Actor::I_getEquip,
+	Item::I_use,                    // Intrinsic0D0 10a0:2667
+	AudioProcess::I_stopAllSFX,     // Intrinsic0D1 12d8:054a
+	MovieGump::I_playMovieCutscene, // Intrinsic0D2 10a0:3a5b
+	0, //I_clearKeyboardState,      // Intrinsic0D3 13e8:00a8
+	AudioProcess::I_playSFX,        // Intrinsic0D4 12d8:0476
+	Item::I_use,                    // Intrinsic0D5 10a0:2667
+	CameraProcess::I_getCameraZ,    // Intrinsic0D6 1180:1cd5
+	Actor::I_getLastAnimSet,        // Intrinsic0D7 10e8:372e
+	Actor::I_setDead,               // Intrinsic0D8 10e8:2010
+	Item::I_getQLo,                 // Intrinsic0D9 10a0:3889
+	PaletteFaderProcess::I_jumpToAllWhite, // Intrinsic0DA 1440:0853
+	Actor::I_setActivity,           // Intrinsic0DB 10e8:2d02
+	Item::I_isOn,                   // Intrinsic0DC 10a0:1eea
+	Actor::I_getLastActivityNo,     // Intrinsic0DD 10e8:3e35
+	Actor::I_setCombatTactic,       // Intrinsic0DE 10e8:3594
+	Actor::I_getEquip,              // Intrinsic0DF 10e8:27c8
 	// 0xE0
-	Actor::I_setEquip,
-	Actor::I_getDefaultActivity0,
-	Actor::I_getDefaultActivity1,
-	Actor::I_getDefaultActivity2,
-	Actor::I_getLastAnimSet,
-	Actor::I_setTarget,
-	Actor::I_setUnkByte,
-	Actor::I_setDead,
-	Item::I_cast,
-	Item::I_andStatus,
-	Item::I_getQLo,
-	MainActor::I_getNumberOfCredits,
-	Item::I_popToEnd,
-	Item::I_popToContainer,
-	BatteryChargerProcess::I_create,
-	Kernel::I_getNumProcesses,
+	Actor::I_setEquip,              // Intrinsic0E0 10e8:27fb
+	Actor::I_getDefaultActivity0,   // Intrinsic0E1 10e8:2c78
+	Actor::I_getDefaultActivity1,   // Intrinsic0E2 10e8:2c92
+	Actor::I_getDefaultActivity2,   // Intrinsic0E3 10e8:2cac
+	Actor::I_getLastAnimSet,        // Intrinsic0E4 10e8:372e
+	Actor::I_setTarget,             // Intrinsic0E5 10e8:1e71
+	Actor::I_setUnkByte,            // Intrinsic0E6 10e8:3e18
+	Actor::I_setDead,               // Intrinsic0E7 10e8:2010
+	Item::I_cast,                   // Intrinsic0E8 10a0:2f3e
+	Item::I_andStatus,              // Intrinsic0E9 10a0:258b
+	Item::I_getQLo,                 // Intrinsic0EA 10a0:3889
+	MainActor::I_getNumberOfCredits, // Intrinsic0EB 10e8:3833
+	Item::I_popToEnd,               // Intrinsic0EC 10a0:1342
+	Item::I_popToContainer,         // Intrinsic0ED 10a0:1328
+	BatteryChargerProcess::I_create, // Intrinsic0EE 1128:20c5
+	Kernel::I_getNumProcesses,      // Intrinsic0EF 11d0:0977
 	// 0xF0
-	Item::I_getQHi,
-	Item::I_isOn,
-	Actor::I_setActivity,
-	Item::I_getQHi,
-	Item::I_getQ,
-	Item::I_setQ,
-	CruHealerProcess::I_create,
-	Item::I_hurl,
-	Item::I_getNpcNum,
-	Item::I_hurl,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_andStatus,
-	MainActor::I_hasKeycard,
-	ComputerGump::I_readComputer,
-	UCMachine::I_numToStr,
+	Item::I_getQHi,                 // Intrinsic0F0 10a0:383e
+	Item::I_isOn,                   // Intrinsic0F1 10a0:1eea
+	Actor::I_setActivity,           // Intrinsic0F2 10e8:2d02
+	Item::I_getQHi,                 // Intrinsic0F3 10a0:383e
+	Item::I_getQ,                   // Intrinsic0F4 10a0:0c94
+	Item::I_setQ,                   // Intrinsic0F5 10a0:0f5f
+	CruHealerProcess::I_create,     // Intrinsic0F6 1128:20e5
+	Item::I_hurl,                   // Intrinsic0F7 1038:12a6
+	Item::I_getNpcNum,              // Intrinsic0F8 10a0:0c40
+	Item::I_hurl,                   // Intrinsic0F9 1038:12a6
+	Item::I_isOn,                   // Intrinsic0FA 10a0:1eea
+	Item::I_getQHi,                 // Intrinsic0FB 10a0:383e
+	Item::I_andStatus,              // Intrinsic0FC 10a0:258b
+	MainActor::I_hasKeycard,        // Intrinsic0FD 10e8:3ce8
+	ComputerGump::I_readComputer,   // Intrinsic0FE 1398:0005
+	UCMachine::I_numToStr,          // Intrinsic0FF 1418:0073
 	// 0x100
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_isCrusTypeNPC,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Actor::I_getDir,
-	UCMachine::I_numToStr,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_fireDistance,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_setBroken,
-	Item::I_andStatus,
-	Item::I_getTypeFlag,
-	Item::I_getNpcNum,
-	Item::I_hurl,
-	Item::I_getCY,
-	Item::I_getCZ,
-	Item::I_getCX,
-	Actor::I_getDir,
-	UCMachine::I_numToStr,
-	Item::I_getDirToCoords,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_isOn,
-	Item::I_getFootpadData,
-	Actor::I_isDead,
-	Actor::I_createActorCru,
-	Actor::I_setImmortal,
-	Item::I_andStatus,
-	Item::I_getQHi,
-	WeaselGump::I_showWeaselGump,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Item::I_getNpcNum,
-	Actor::I_getDir,
-	Actor::I_getLastAnimSet,
-	Item::I_setQuality,
-	0 // Unused
+	Item::I_getNpcNum,              // Intrinsic100 10a0:0c40
+	Item::I_andStatus,              // Intrinsic101 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic102 10a0:0c40
+	Item::I_isCrusTypeNPC,			// Intrinsic103 10a0:4348
+	Item::I_andStatus,              // Intrinsic104 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic105 10a0:0c40
+	Item::I_andStatus,              // Intrinsic106 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic107 10a0:0c40
+	Item::I_andStatus,              // Intrinsic108 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic109 10a0:0c40
+	Item::I_andStatus,              // Intrinsic10A 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic10B 10a0:0c40
+	Item::I_andStatus,              // Intrinsic10C 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic10D 10a0:0c40
+	Item::I_andStatus,              // Intrinsic10E 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic10F 10a0:0c40
+	// 0x110
+	Item::I_andStatus,              // Intrinsic110 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic111 10a0:0c40
+	Actor::I_getDir,                // Intrinsic112 10e8:3714
+	UCMachine::I_numToStr,          // Intrinsic113 1418:0073
+	Item::I_andStatus,              // Intrinsic114 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic115 10a0:0c40
+	Item::I_fireDistance,           // Intrinsic116 1128:1755
+	Item::I_andStatus,              // Intrinsic117 10a0:258b
+	Item::I_hurl,                   // Intrinsic118 1038:12a6
+	Item::I_setBroken,              // Intrinsic119 10a0:25d0
+	Item::I_andStatus,              // Intrinsic11A 10a0:258b
+	Item::I_getTypeFlag,            // Intrinsic11B 10a0:0fef
+	Item::I_getNpcNum,              // Intrinsic11C 10a0:0c40
+	Item::I_hurl,                   // Intrinsic11D 1038:12a6
+	Item::I_getCY,                  // Intrinsic11E 10a0:02de
+	Item::I_getCZ,                  // Intrinsic11F 10a0:0322
+	// 0x120
+	Item::I_getCX,                  // Intrinsic120 10a0:029a
+	Actor::I_getDir,                // Intrinsic121 10e8:3714
+	UCMachine::I_numToStr,          // Intrinsic122 1418:0073
+	Item::I_getDirToCoords,         // Intrinsic123 10a0:19e9
+	Item::I_andStatus,              // Intrinsic124 10a0:258b
+	Item::I_getNpcNum,              // Intrinsic125 10a0:0c40
+	Item::I_isOn,                   // Intrinsic126 10a0:1eea
+	Item::I_getFootpadData,         // Intrinsic127 10a0:1aa9
+	Actor::I_isDead,                // Intrinsic128 10e8:1fe0
+	Actor::I_createActorCru,        // Intrinsic129 10a0:3d3f
+	Actor::I_clrImmortal,			// Intrinsic12A 10e8:2185
+	Item::I_andStatus,              // Intrinsic12B 10a0:258b
+	Item::I_getQHi,                 // Intrinsic12C 10a0:383e
+	WeaselGump::I_showWeaselGump,   // Intrinsic12D 13e0:0000
+	Actor::I_setDead,               // Intrinsic12E 10e8:2010
+	Item::I_getQLo,                 // Intrinsic12F 10a0:3889
+	// 0x130
+	Item::I_getNpcNum,              // Intrinsic130 10a0:0c40
+	Actor::I_getDir,                // Intrinsic131 10e8:3714
+	Actor::I_getLastAnimSet,        // Intrinsic132 10e8:372e
+	Item::I_setQuality,             // Intrinsic133 10a0:0cee
+	0 // Unused // Intrinsic134 1040:0079
 };
 
 
@@ -704,317 +706,666 @@ Intrinsic RemorseDemoIntrinsics[] = {
 
 // Intrinsics for the Remorse Spanish version.
 Intrinsic RemorseEsIntrinsics[] = {
-	ComputerGump::I_readComputer,
-	Item::I_getMapArray,
-	Item::I_getFrame,
-	Item::I_setFrame,
-	UCMachine::I_rndRange,
-	UCMachine::I_numToStr,
-	CruStatusGump::I_hideStatusGump,
-	Actor::I_getMap,
-	MovieGump::I_playMovieOverlay,
-	CruStatusGump::I_showStatusGump,
-	Item::I_getDirToItem,
-	Actor::I_turnToward,
-	MovieGump::I_playMovieCutsceneAlt,
-	AudioProcess::I_playSFXCru,
-	World::I_getAlertActive,
-	Item::I_getStatus,
+	ComputerGump::I_readComputer,   // Intrinsic000 13a0:0005
+	Item::I_getMapArray,            // Intrinsic001 10a8:0c78
+	Item::I_getFrame,               // Intrinsic002 10a8:07b4
+	Item::I_setFrame,               // Intrinsic003 10a8:0810
+	UCMachine::I_rndRange,          // Intrinsic004 12e0:0293
+	UCMachine::I_numToStr,          // Intrinsic005 1418:0073
+	CruStatusGump::I_hideStatusGump, // Intrinsic006 11b8:0000
+	Actor::I_getMap,                // Intrinsic007 10f0:2b90
+	MovieGump::I_playMovieOverlay,  // Intrinsic008 10a8:3ad7
+	CruStatusGump::I_showStatusGump, // Intrinsic009 11b8:0006
+	Item::I_getDirToItem,           // Intrinsic00A 10a8:1a74
+	Actor::I_turnToward,            // Intrinsic00B 10f0:326b
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic00C 10a8:3abb
+	AudioProcess::I_playSFXCru,     // Intrinsic00D 10a8:3934
+	World::I_getAlertActive,        // Intrinsic00E 10e0:0243
+	Item::I_getStatus,              // Intrinsic00F 10a8:1038
 	// 0x010
-	Item::I_orStatus,
-	Item::I_equip,
-	Item::I_isPartlyOnScreen,
-	Actor::I_isNPC,
-	Item::I_getZ,
-	Item::I_destroy,
-	Actor::I_getUnkByte,
-	Ultima8Engine::I_setAvatarInStasis,
-	Item::I_getQLo,
-	MusicProcess::I_playMusic,
-	Item::I_getX,
-	Item::I_getY,
-	Item::I_getShape,
-	Item::I_explode,
-	Item::I_legalCreateAtCoords,
-	Item::I_andStatus,
+	Item::I_orStatus,               // Intrinsic010 10a8:2572
+	Item::I_equip,                  // Intrinsic011 10a8:2a35
+	Item::I_isPartlyOnScreen,       // Intrinsic012 10a8:40ce
+	Actor::I_isNPC,                 // Intrinsic013 10a8:2486
+	Item::I_getZ,                   // Intrinsic014 10a8:0266
+	Item::I_destroy,                // Intrinsic015 10a8:1365
+	Actor::I_getUnkByte,            // Intrinsic016 10f0:3dfc
+	Ultima8Engine::I_setAvatarInStasis, // Intrinsic017 10f0:369e
+	Item::I_getQLo,                 // Intrinsic018 10a8:3889
+	MusicProcess::I_playMusic,      // Intrinsic019 1200:0143
+	Item::I_getX,                   // Intrinsic01A 10a8:013e
+	Item::I_getY,                   // Intrinsic01B 10a8:0176
+	Item::I_getShape,               // Intrinsic01C 10a8:068f
+	Item::I_explode,                // Intrinsic01D 1150:0859
+	Item::I_legalCreateAtCoords,    // Intrinsic01E 10a8:10db
+	Item::I_andStatus,              // Intrinsic01F 10a8:258b
 	// 0x020
-	World::I_getControlledNPCNum,
-	Actor::I_getDir,
-	Actor::I_getLastAnimSet,
-	Item::I_fireWeapon,
-	Item::I_create,
-	Item::I_popToCoords,
-	Actor::I_setDead,
-	Item::I_push,
-	Item::I_getEtherealTop,
-	Item::I_setShape,
-	Item::I_touch,
-	Item::I_getQHi,
-	Item::I_getClosestDirectionInRange,
-	Item::I_hurl,
-	World::I_gameDifficulty,
-	AudioProcess::I_playAmbientSFXCru,
+	World::I_getControlledNPCNum,   // Intrinsic020 1138:0010
+	Actor::I_getDir,                // Intrinsic021 10f0:3714
+	Actor::I_getLastAnimSet,        // Intrinsic022 10f0:372e
+	Item::I_fireWeapon,             // Intrinsic023 1130:11da
+	Item::I_create,                 // Intrinsic024 10a8:11e7
+	Item::I_popToCoords,            // Intrinsic025 10a8:1311
+	Actor::I_setDead,               // Intrinsic026 10f0:2010
+	Item::I_push,                   // Intrinsic027 10a8:1352
+	Item::I_getEtherealTop,			// Intrinsic028 10b0:2622
+	Item::I_setShape,               // Intrinsic029 10a8:06a5
+	Item::I_touch,                  // Intrinsic02A 10a8:2514
+	Item::I_getQHi,                 // Intrinsic02B 10a8:383e
+	Item::I_getClosestDirectionInRange, // Intrinsic02C 10d8:0000
+	Item::I_hurl,                   // Intrinsic02D 1040:12a6
+	World::I_gameDifficulty,        // Intrinsic02E 10f0:38d5
+	AudioProcess::I_playAmbientSFXCru, // Intrinsic02F 10a8:3953
 	// 0x030
-	Item::I_isCompletelyOn,
-	UCMachine::I_true,
-	Container::I_destroyContents,
-	Item::I_getQLo,
-	Item::I_inFastArea,
-	Item::I_setQHi,
-	Item::I_legalMoveToPoint,
-	CurrentMap::I_canExistAtPoint,
-	Item::I_pop,
-	Item::I_andStatus,
-	Item::I_receiveHit,
-	Actor::I_isBusy,
-	Item::I_getDirFromTo16,
-	Actor::I_isKneeling,
-	Actor::I_doAnim,
-	MainActor::I_addItemCru,
+	Item::I_isCompletelyOn,         // Intrinsic030 10a8:1f5f
+	UCMachine::I_true,              // Intrinsic031 1050:00c1
+	Container::I_destroyContents,   // Intrinsic032 10a8:14af
+	Item::I_getQLo,                 // Intrinsic033 10a8:3889
+	Item::I_inFastArea,             // Intrinsic034 10a8:3af5
+	Item::I_setQHi,                 // Intrinsic035 10a8:385a
+	Item::I_legalMoveToPoint,       // Intrinsic036 10a8:174d
+	CurrentMap::I_canExistAtPoint,  // Intrinsic037 10a8:4071
+	Item::I_pop,                    // Intrinsic038 10a8:1338
+	Item::I_andStatus,              // Intrinsic039 10a8:258b
+	Item::I_receiveHit,             // Intrinsic03A 1130:0247
+	Actor::I_isBusy,                // Intrinsic03B 10f0:010c
+	Item::I_getDirFromTo16,         // Intrinsic03C 10d8:01c7
+	Actor::I_isKneeling,            // Intrinsic03D 10f0:21fb
+	Actor::I_doAnim,                // Intrinsic03E 10f0:0245
+	MainActor::I_addItemCru,        // Intrinsic03F 13e8:0330
 	// 0x040
-	AudioProcess::I_stopSFXCru,
-	Actor::I_isDead,
-	AudioProcess::I_isSFXPlayingForObject,
-	Item::I_setQLo,
-	Item::I_getFamily,
-	Item::I_fall,
-	Egg::I_getEggId,
-	CameraProcess::I_moveTo,
-	CameraProcess::I_setCenterOn,
-	Item::I_getRangeIfVisible,
-	AudioProcess::I_playSFXCru,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
+	AudioProcess::I_stopSFXCru,     // Intrinsic040 10a8:39b0
+	Actor::I_isDead,                // Intrinsic041 10f0:1fe0
+	AudioProcess::I_isSFXPlayingForObject, // Intrinsic042 10a8:39eb
+	Item::I_setQLo,                 // Intrinsic043 10a8:38a2
+	Item::I_getFamily,              // Intrinsic044 10a8:0fc4
+	Item::I_fall,                   // Intrinsic045 1040:1334
+	Egg::I_getEggId,                // Intrinsic046 1098:05c5
+	CameraProcess::I_moveTo,        // Intrinsic047 1188:0cba
+	CameraProcess::I_setCenterOn,   // Intrinsic048 1188:1aa5
+	Item::I_getRangeIfVisible,      // Intrinsic049 1130:1c01
+	AudioProcess::I_playSFXCru,     // Intrinsic04A 10a8:3991
+	Item::I_isOn,                   // Intrinsic04B 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic04C 10a8:383e
+	Item::I_isOn,                   // Intrinsic04D 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic04E 10a8:383e
+	Item::I_isOn,                   // Intrinsic04F 10a8:1eea
 	// 0x050
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Item::I_isOn,
-	Item::I_getQHi,
-	Kernel::I_resetRef,
-	Actor::I_getCurrentActivityNo,
-	Actor::I_clrInCombat,
-	Actor::I_setDefaultActivity0,
-	Actor::I_setDefaultActivity1,
-	Actor::I_setDefaultActivity2,
-	Actor::I_setActivity,
-	World::I_setControlledNPCNum,
-	Item::I_getSurfaceWeight,
-	Item::I_isCentreOn,
-	Item::I_setFrame,
-	Actor::I_getLastAnimSet,
-	Item::I_legalCreateAtPoint,
-	Item::I_getPoint,
-	Actor::I_setDead,
-	Actor::I_createActor,
-	0,
-	Actor::I_teleport,
-	Item::I_getFootpadData,
-	Item::I_isInNpc,
-	Item::I_getQLo,
-	Item::I_getNpcNum,
-	Item::I_setNpcNum,
-	Item::I_andStatus,
-	Item::I_move,
-	UCMachine::I_true,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Ultima8Engine::I_getUnkCrusaderFlag,
-	Ultima8Engine::I_setUnkCrusaderFlag,
-	Ultima8Engine::I_setCruStasis,
-	Actor::I_setDead,
-	Ultima8Engine::I_clrUnkCrusaderFlag,
-	Ultima8Engine::I_clrCruStasis,
-	AudioProcess::I_stopSFXCru,
-	PaletteFaderProcess::I_fadeToBlack,
-	MainActor::I_clrKeycards,
-	MainActor::I_teleportToEgg,
-	PaletteFaderProcess::I_fadeToGamePal,
-	Actor::I_setImmortal,
-	Actor::I_getHp,
-	Actor::I_setActivity,
-	Item::I_getQuality,
-	Item::I_setQuality,
-	Item::I_use,
-	MainActor::I_getMaxEnergy,
-	Actor::I_getMana,
-	Actor::I_setMana,
-	Item::I_getQLo,
-	Actor::I_setImmortal,
-	CameraProcess::I_getCameraX,
-	CameraProcess::I_getCameraY,
-	Item::I_setMapArray,
-	Item::I_getNpcNum,
-	Item::I_shoot,
-	Item::I_enterFastArea,
-	Item::I_setBroken,
-	Item::I_hurl,
-	Item::I_getNpcNum,
-	PaletteFaderProcess::I_jumpToAllBlack,
-	MusicProcess::I_stopMusic,
-	0,
-	MovieGump::I_playMovieCutsceneAlt,
-	0,
-	Game::I_playCredits,
-	Ultima8Engine::I_moveKeyDownRecently,
-	MainActor::I_teleportToEgg,
-	PaletteFaderProcess::I_jumpToGreyScale,
-	World::I_resetVargasShield,
-	Item::I_andStatus,
-	PaletteFaderProcess::I_jumpToNormalPalette,
-	PaletteFaderProcess::I_fadeToGamePal,
-	PaletteFaderProcess::I_fadeToGamePal,
-	PaletteFaderProcess::I_fadeToBlack,
-	PaletteFaderProcess::I_fadeToBlack,
-	PaletteFaderProcess::I_fadeToGivenColor,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	Item::I_getUnkEggType,
-	Egg::I_setEggXRange,
-	Item::I_overlaps,
-	Item::I_isOn,
-	UCMachine::I_true,
-	KeypadGump::I_showKeypad,
-	MovieGump::I_playMovieCutsceneAlt,
-	Egg::I_getEggXRange,
-	Actor::I_setDead,
-	AudioProcess::I_playSFX,
-	Actor::I_isFalling,
-	Item::I_getFamilyOfType,
-	Item::I_getNpcNum,
-	Item::I_getQLo,
-	Item::I_getQHi,
-	Item::I_unequip,
-	Item::I_avatarStoleSomething,
-	Item::I_andStatus,
-	Ultima8Engine::I_getCurrentTimerTick,
-	World::I_setAlertActive,
-	Item::I_equip,
-	World::I_clrAlertActive,
-	Ultima8Engine::I_getAvatarInStasis,
-	MainActor::I_addItemCru,
-	Actor::I_getLastAnimSet,
-	Item::I_setQuality,
-	CurrentMap::I_canExistAt,
-	Item::I_isOn,
-	Item::I_hurl,
-	Item::I_getQHi,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_andStatus,
-	Item::I_getDirToCoords,
-	Item::I_popToContainer,
-	Item::I_getNpcNum,
-	Item::I_setBroken,
-	Item::I_getCY,
-	Item::I_getCX,
-	SpriteProcess::I_createSprite,
-	Item::I_isOn,
-	Item::I_getFootpadData,
-	Actor::I_isDead,
-	Actor::I_createActorCru,
-	Actor::I_setActivity,
-	Item::I_andStatus,
-	Item::I_setQuality,
-	Actor::I_getLastAnimSet,
-	Item::I_getDirFromItem,
-	Item::I_hurl,
-	Item::I_getQHi,
-	Actor::I_addHp,
-	MainActor::I_switchMap, // TODO: Intrinsic0DB 1028:049c,
-	Actor::I_setActivity,
-	Actor::I_isInCombat,
-	Item::I_setQAndCombine,
-	Item::I_use,
-	AudioProcess::I_stopAllSFX,
-	MovieGump::I_playMovieCutscene,
-	0,
-	AudioProcess::I_playSFX,
-	Item::I_use,
-	CameraProcess::I_getCameraZ,
-	Actor::I_getLastAnimSet,
-	Actor::I_setDead,
-	Item::I_getQLo,
-	PaletteFaderProcess::I_jumpToAllWhite,
-	Item::I_equip,
-	Actor::I_setActivity,
-	Item::I_isOn,
-	Actor::I_getLastActivityNo,
-	Actor::I_setCombatTactic,
-	Actor::I_getEquip,
-	Actor::I_setEquip,
-	Actor::I_getDefaultActivity0,
-	Actor::I_getDefaultActivity1,
-	Actor::I_getDefaultActivity2,
-	Actor::I_getLastAnimSet,
-	Item::I_getQHi,
-	Item::I_getNpcNum,
-	Item::I_cast,
-	MainActor::I_getNumberOfCredits,
-	Actor::I_setTarget,
-	Actor::I_setUnkByte,
-	Item::I_hurl,
-	Actor::I_setDead,
-	Item::I_andStatus,
-	Item::I_getQLo,
-	Item::I_popToEnd,
-	BatteryChargerProcess::I_create,
-	Kernel::I_getNumProcesses,
-	Item::I_isOn,
-	Actor::I_setActivity,
-	Item::I_getQHi,
-	Item::I_getQ,
-	Item::I_setQ,
-	CruHealerProcess::I_create,
-	Item::I_hurl,
-	Item::I_getNpcNum,
-	Item::I_hurl,
-	Item::I_isOn,
-	Item::I_andStatus,
-	Item::I_getQHi,
-	MainActor::I_hasKeycard,
-	Actor::I_setDead,
-	Actor::I_setImmortal,
-	Item::I_getQLo,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_isCrusTypeNPC,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_andStatus,
-	Item::I_getNpcNum,
-	Item::I_fireDistance,
-	Item::I_andStatus,
-	Item::I_hurl,
-	Item::I_setBroken,
-	Item::I_andStatus,
-	WeaselGump::I_showWeaselGump,
-	Item::I_getTypeFlag,
-	Item::I_getNpcNum,
-	Item::I_hurl,
-	Item::I_getCY,
-	Item::I_getCZ,
-	0 //UNUSEDInt136,
+	Item::I_getQHi,                 // Intrinsic050 10a8:383e
+	Item::I_isOn,                   // Intrinsic051 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic052 10a8:383e
+	Item::I_isOn,                   // Intrinsic053 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic054 10a8:383e
+	Item::I_isOn,                   // Intrinsic055 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic056 10a8:383e
+	Kernel::I_resetRef,             // Intrinsic057 11d8:0c63
+	Actor::I_getCurrentActivityNo,  // Intrinsic058 10f0:330d
+	Actor::I_clrInCombat,           // Intrinsic059 10f0:31a9
+	Actor::I_setDefaultActivity0,   // Intrinsic05A 10f0:2bea
+	Actor::I_setDefaultActivity1,   // Intrinsic05B 10f0:2c07
+	Actor::I_setDefaultActivity2,   // Intrinsic05C 10f0:2c24
+	Actor::I_setActivity,           // Intrinsic05D 10f0:2d02
+	World::I_setControlledNPCNum,   // Intrinsic05E 1138:0000
+	Item::I_getSurfaceWeight,       // Intrinsic05F 10a8:0602
+	// 0x060
+	Item::I_isCentreOn,             // Intrinsic060 10a8:4377
+	Item::I_setFrame,               // Intrinsic061 10a8:0810
+	Actor::I_getLastAnimSet,        // Intrinsic062 10f0:372e
+	Item::I_legalCreateAtPoint,     // Intrinsic063 10a8:104e
+	Item::I_getPoint,               // Intrinsic064 10a8:2436
+	Actor::I_setDead,               // Intrinsic065 10f0:2010
+	Actor::I_createActor,           // Intrinsic066 10f0:25b9
+	0, //I_forceCameraUpdate,       // Intrinsic067 1188:0013
+	Actor::I_teleport,              // Intrinsic068 10f0:29fa
+	Item::I_getFootpadData,         // Intrinsic069 10a8:1aa9
+	Item::I_isInNpc,                // Intrinsic06A 10a8:24b5
+	Item::I_getQLo,                 // Intrinsic06B 10a8:3889
+	Item::I_getNpcNum,              // Intrinsic06C 10a8:0c40
+	Item::I_setNpcNum,              // Intrinsic06D 10a8:0c24
+	Item::I_andStatus,              // Intrinsic06E 10a8:258b
+	Item::I_move,                   // Intrinsic06F 10a8:1531
+	// 0x070
+	UCMachine::I_true,              // Intrinsic070 1050:00a1
+	Item::I_getNpcNum,              // Intrinsic071 10a8:0c40
+	Item::I_andStatus,              // Intrinsic072 10a8:258b
+	Ultima8Engine::I_getUnkCrusaderFlag, // Intrinsic073 13e8:0e27
+	Ultima8Engine::I_setUnkCrusaderFlag, // Intrinsic074 13e8:0e2b
+	Ultima8Engine::I_setCruStasis,  // Intrinsic075 13e8:0071
+	Actor::I_setDead,               // Intrinsic076 10f0:2010
+	Ultima8Engine::I_clrUnkCrusaderFlag, // Intrinsic077 13e8:0e21
+	Ultima8Engine::I_clrCruStasis,  // Intrinsic078 13e8:0077
+	AudioProcess::I_stopSFXCru,     // Intrinsic079 10a8:39cf
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic07A 1440:06e6
+	MainActor::I_clrKeycards,       // Intrinsic07B 10f0:3d4b
+	MainActor::I_teleportToEgg,     // Intrinsic07C 1098:04ce
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic07D 1440:07cc
+	Actor::I_clrImmortal,           // Intrinsic07E 10f0:2185
+	Actor::I_getHp,                 // Intrinsic07F 10f0:32f4
+	// 0x080
+	Actor::I_setActivity,           // Intrinsic080 10f0:2d02
+	Item::I_getQuality,             // Intrinsic081 10a8:0caa
+	Item::I_setQuality,             // Intrinsic082 10a8:0cee
+	Item::I_use,                    // Intrinsic083 10a8:2667
+	MainActor::I_getMaxEnergy,      // Intrinsic084 10f0:348b
+	Actor::I_getMana,               // Intrinsic085 10f0:3454
+	Actor::I_setMana,               // Intrinsic086 10f0:346e
+	Item::I_getQLo,                 // Intrinsic087 10a8:3889
+	Actor::I_setImmortal,			// Intrinsic088 10f0:216a
+	CameraProcess::I_getCameraX,    // Intrinsic089 1188:1cc5
+	CameraProcess::I_getCameraY,    // Intrinsic08A 1188:1ccd
+	Item::I_setMapArray,            // Intrinsic08B 10a8:0c5c
+	Item::I_getNpcNum,              // Intrinsic08C 10a8:0c40
+	Item::I_shoot,                  // Intrinsic08D 10a8:38d1
+	Item::I_enterFastArea,          // Intrinsic08E 10a8:2b30
+	Item::I_setBroken,              // Intrinsic08F 10a8:25d0
+	// 0x090
+	Item::I_hurl,                   // Intrinsic090 1040:12a6
+	Item::I_getNpcNum,              // Intrinsic091 10a8:0c40
+	PaletteFaderProcess::I_jumpToAllBlack, // Intrinsic092 1440:07da
+	MusicProcess::I_stopMusic,      // Intrinsic093 1200:0223
+	0, //I_PauseCycler,             // Intrinsic094 13e8:0033
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic095 10a8:3a9f
+	0, //I_ResumeCycler,             // Intrinsic096 13e8:0039
+	Game::I_playCredits,            // Intrinsic097 13e8:003f
+	Ultima8Engine::I_moveKeyDownRecently, // Intrinsic098 10a8:4340
+	MainActor::I_teleportToEgg,     // Intrinsic099 1098:04f7
+	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic09A 1030:0605
+	World::I_resetVargasShield,     // Intrinsic09B 1130:0000
+	Item::I_andStatus,              // Intrinsic09C 10a8:258b
+	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic09D 1440:0a7c
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09E 1440:06f4
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09F 1440:0bc6
+	// 0x0A0
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic0A0 1440:04ea
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic0A1 1440:0c47
+	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic0A2 1440:0ab2
+	Actor::I_setDead,               // Intrinsic0A3 10f0:2010
+	Item::I_getQLo,                 // Intrinsic0A4 10a8:3889
+	Item::I_getUnkEggType,          // Intrinsic0A5 10a8:0d31
+	Egg::I_setEggXRange,            // Intrinsic0A6 1098:055b
+	Item::I_overlaps,               // Intrinsic0A7 10a8:1cc5
+	Item::I_isOn,                   // Intrinsic0A8 10a8:1eea
+	UCMachine::I_true,              // Intrinsic0A9 13e8:00b9
+	KeypadGump::I_showKeypad,       // Intrinsic0AA 13c8:00fe
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic0AB 10a8:3a9f
+	Egg::I_getEggXRange,            // Intrinsic0AC 1098:051d
+	Actor::I_setDead,               // Intrinsic0AD 10f0:2010
+	AudioProcess::I_playSFX,        // Intrinsic0AE 12e0:0476
+	Actor::I_isFalling,             // Intrinsic0AF 10f0:1f01
+	// 0x0B0
+	Item::I_getFamilyOfType,        // Intrinsic0B0 1100:054d
+	Item::I_getNpcNum,              // Intrinsic0B1 10a8:0c40
+	Item::I_getQLo,                 // Intrinsic0B2 10a8:3889
+	Item::I_getQHi,                 // Intrinsic0B3 10a8:383e
+	Item::I_unequip,                // Intrinsic0B4 10a8:2a68
+	Item::I_avatarStoleSomething,   // Intrinsic0B5 10a8:2fda
+	Item::I_andStatus,              // Intrinsic0B6 10a8:258b
+	Ultima8Engine::I_getCurrentTimerTick, // Intrinsic0B7 1038:03b8
+	World::I_setAlertActive,        // Intrinsic0B8 10e0:0000
+	Item::I_equip,                  // Intrinsic0B9 10a8:2a35
+	World::I_clrAlertActive,        // Intrinsic0BA 10e0:0121
+	Ultima8Engine::I_getAvatarInStasis, // Intrinsic0BB 10f0:3696
+	MainActor::I_addItemCru,        // Intrinsic0BC 13e8:0330
+	Actor::I_getLastAnimSet,        // Intrinsic0BD 10f0:372e
+	Item::I_setQuality,             // Intrinsic0BE 10a8:0cee
+	CurrentMap::I_canExistAt,       // Intrinsic0BF 1150:0b67
+	// 0x0C0
+	Item::I_isOn,                   // Intrinsic0C0 10a8:1eea
+	Item::I_hurl,                   // Intrinsic0C1 1040:12a6
+	Item::I_getQHi,                 // Intrinsic0C2 10a8:383e
+	Item::I_andStatus,              // Intrinsic0C3 10a8:258b
+	Item::I_hurl,                   // Intrinsic0C4 1040:12a6
+	Item::I_andStatus,              // Intrinsic0C5 10a8:258b
+	Item::I_hurl,                   // Intrinsic0C6 1040:12a6
+	Item::I_andStatus,              // Intrinsic0C7 10a8:258b
+	Item::I_getDirToCoords,         // Intrinsic0C8 10a8:19e9
+	Item::I_popToContainer,         // Intrinsic0C9 10a8:1328
+	Item::I_getNpcNum,              // Intrinsic0CA 10a8:0c40
+	Item::I_setBroken,              // Intrinsic0CB 10a8:25d0
+	Item::I_getCY,                  // Intrinsic0CC 10a8:02de
+	Item::I_getCX,                  // Intrinsic0CD 10a8:029a
+	SpriteProcess::I_createSprite,  // Intrinsic0CE 1140:00de
+	Item::I_isOn,                   // Intrinsic0CF 10a8:1eea
+	// 0x0D0
+	Item::I_getFootpadData,         // Intrinsic0D0 10a8:1aa9
+	Actor::I_isDead,                // Intrinsic0D1 10f0:1fe0
+	Actor::I_createActorCru,        // Intrinsic0D2 10a8:3d3f
+	Actor::I_setActivity,           // Intrinsic0D3 10f0:2d02
+	Item::I_andStatus,              // Intrinsic0D4 10a8:258b
+	Item::I_setQuality,             // Intrinsic0D5 10a8:0cee
+	Actor::I_getLastAnimSet,        // Intrinsic0D6 10f0:372e
+	Item::I_getDirFromItem,         // Intrinsic0D7 10a8:1a3f
+	Item::I_hurl,                   // Intrinsic0D8 1040:12a6
+	Item::I_getQHi,                 // Intrinsic0D9 10a8:383e
+	Actor::I_addHp,                 // Intrinsic0DA 10f0:3748
+	MainActor::I_switchMap,			// Intrinsic0DB 1028:049c
+	Actor::I_setActivity,           // Intrinsic0DC 10f0:2d02
+	Actor::I_isInCombat,            // Intrinsic0DD 10f0:1f20
+	Item::I_setQAndCombine,         // Intrinsic0DE 10a8:0dd1
+	Item::I_use,                    // Intrinsic0DF 10a8:2667
+	// 0x0E0
+	AudioProcess::I_stopAllSFX,     // Intrinsic0E0 12e0:054a
+	MovieGump::I_playMovieCutscene, // Intrinsic0E1 10a8:3a5b
+	0, // I_clearKeyboardState,     // Intrinsic0E2 13e8:00a8
+	AudioProcess::I_playSFX,        // Intrinsic0E3 12e0:0476
+	Item::I_use,                    // Intrinsic0E4 10a8:2667
+	CameraProcess::I_getCameraZ,    // Intrinsic0E5 1188:1cd5
+	Actor::I_getLastAnimSet,        // Intrinsic0E6 10f0:372e
+	Actor::I_setDead,               // Intrinsic0E7 10f0:2010
+	Item::I_getQLo,                 // Intrinsic0E8 10a8:3889
+	PaletteFaderProcess::I_jumpToAllWhite, // Intrinsic0E9 1440:0853
+	Item::I_equip,                  // Intrinsic0EA 10a8:2a35
+	Actor::I_setActivity,           // Intrinsic0EB 10f0:2d02
+	Item::I_isOn,                   // Intrinsic0EC 10a8:1eea
+	Actor::I_getLastActivityNo,     // Intrinsic0ED 10f0:3e35
+	Actor::I_setCombatTactic,       // Intrinsic0EE 10f0:3594
+	Actor::I_getEquip,              // Intrinsic0EF 10f0:27c8
+	// 0x0F0
+	Actor::I_setEquip,              // Intrinsic0F0 10f0:27fb
+	Actor::I_getDefaultActivity0,   // Intrinsic0F1 10f0:2c78
+	Actor::I_getDefaultActivity1,   // Intrinsic0F2 10f0:2c92
+	Actor::I_getDefaultActivity2,   // Intrinsic0F3 10f0:2cac
+	Actor::I_getLastAnimSet,        // Intrinsic0F4 10f0:372e
+	Item::I_getQHi,                 // Intrinsic0F5 10a8:383e
+	Item::I_getNpcNum,              // Intrinsic0F6 10a8:0c40
+	Item::I_cast,                   // Intrinsic0F7 10a8:2f3e
+	MainActor::I_getNumberOfCredits, // Intrinsic0F8 10f0:3833
+	Actor::I_setTarget,             // Intrinsic0F9 10f0:1e71
+	Actor::I_setUnkByte,            // Intrinsic0FA 10f0:3e18
+	Item::I_hurl,                   // Intrinsic0FB 1040:12a6
+	Actor::I_setDead,               // Intrinsic0FC 10f0:2010
+	Item::I_andStatus,              // Intrinsic0FD 10a8:258b
+	Item::I_getQLo,                 // Intrinsic0FE 10a8:3889
+	Item::I_popToEnd,               // Intrinsic0FF 10a8:1342
+	// 0x100
+	BatteryChargerProcess::I_create, // Intrinsic100 1130:20c5
+	Kernel::I_getNumProcesses,      // Intrinsic101 11d8:0977
+	Item::I_isOn,                   // Intrinsic102 10a8:1eea
+	Actor::I_setActivity,           // Intrinsic103 10f0:2d02
+	Item::I_getQHi,                 // Intrinsic104 10a8:383e
+	Item::I_getQ,                   // Intrinsic105 10a8:0c94
+	Item::I_setQ,                   // Intrinsic106 10a8:0f5f
+	CruHealerProcess::I_create,     // Intrinsic107 1130:20e5
+	Item::I_hurl,                   // Intrinsic108 1040:12a6
+	Item::I_getNpcNum,              // Intrinsic109 10a8:0c40
+	Item::I_hurl,                   // Intrinsic10A 1040:12a6
+	Item::I_isOn,                   // Intrinsic10B 10a8:1eea
+	Item::I_andStatus,              // Intrinsic10C 10a8:258b
+	Item::I_getQHi,                 // Intrinsic10D 10a8:383e
+	MainActor::I_hasKeycard,        // Intrinsic10E 10f0:3ce8
+	Actor::I_setDead,               // Intrinsic10F 10f0:2010
+	// 0x110
+	Actor::I_clrImmortal,			// Intrinsic110 10f0:2185
+	Item::I_getQLo,                 // Intrinsic111 10a8:3889
+	Item::I_getNpcNum,              // Intrinsic112 10a8:0c40
+	Item::I_andStatus,              // Intrinsic113 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic114 10a8:0c40
+	Item::I_isCrusTypeNPC,			// Intrinsic115 10a8:4348
+	Item::I_andStatus,              // Intrinsic116 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic117 10a8:0c40
+	Item::I_andStatus,              // Intrinsic118 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic119 10a8:0c40
+	Item::I_andStatus,              // Intrinsic11A 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic11B 10a8:0c40
+	Item::I_andStatus,              // Intrinsic11C 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic11D 10a8:0c40
+	Item::I_andStatus,              // Intrinsic11E 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic11F 10a8:0c40
+	// 0x120
+	Item::I_andStatus,              // Intrinsic120 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic121 10a8:0c40
+	Item::I_andStatus,              // Intrinsic122 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic123 10a8:0c40
+	Item::I_andStatus,              // Intrinsic124 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic125 10a8:0c40
+	Item::I_fireDistance,           // Intrinsic126 1130:1755
+	Item::I_andStatus,              // Intrinsic127 10a8:258b
+	Item::I_hurl,                   // Intrinsic128 1040:12a6
+	Item::I_setBroken,              // Intrinsic129 10a8:25d0
+	Item::I_andStatus,              // Intrinsic12A 10a8:258b
+	WeaselGump::I_showWeaselGump,   // Intrinsic12B 13e0:0000
+	Item::I_getTypeFlag,            // Intrinsic12C 10a8:0fef
+	Item::I_getNpcNum,              // Intrinsic12D 10a8:0c40
+	Item::I_hurl,                   // Intrinsic12E 1040:12a6
+	Item::I_getCY,                  // Intrinsic12F 10a8:02de
+	// 0x130
+	Item::I_getCZ,                  // Intrinsic130 10a8:0322
+	0 //UNUSEDInt136,				// Intrinsic131 1048:0079
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Intrinsics for the Remorse French version.
+Intrinsic RemorseFrIntrinsics[] = {
+	// 0x000
+	World::I_getAlertActive,        // Intrinsic000 10e0:0243
+	Item::I_getFrame,               // Intrinsic001 10a8:07b4
+	Item::I_setFrame,               // Intrinsic002 10a8:0810
+	Item::I_getMapArray,            // Intrinsic003 10a8:0c78
+	Item::I_getStatus,              // Intrinsic004 10a8:1038
+	Item::I_orStatus,               // Intrinsic005 10a8:2572
+	Item::I_equip,                  // Intrinsic006 10a8:2a35
+	Item::I_isPartlyOnScreen,       // Intrinsic007 10a8:40ce
+	Actor::I_isNPC,                 // Intrinsic008 10a8:2486
+	Item::I_getZ,                   // Intrinsic009 10a8:0266
+	Item::I_destroy,                // Intrinsic00A 10a8:1365
+	Actor::I_getUnkByte,            // Intrinsic00B 10f0:3dfc
+	Ultima8Engine::I_setAvatarInStasis, // Intrinsic00C 10f0:369e
+	Item::I_getDirToItem,           // Intrinsic00D 10a8:1a74
+	Actor::I_turnToward,            // Intrinsic00E 10f0:326b
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic00F 10a8:3abb
+	// 0x010
+	Item::I_getQLo,                 // Intrinsic010 10a8:3889
+	Actor::I_getMap,                // Intrinsic011 10f0:2b90
+	MusicProcess::I_playMusic,      // Intrinsic012 1200:0143
+	Item::I_getX,                   // Intrinsic013 10a8:013e
+	Item::I_getY,                   // Intrinsic014 10a8:0176
+	AudioProcess::I_playSFXCru,     // Intrinsic015 10a8:3934
+	Item::I_getShape,               // Intrinsic016 10a8:068f
+	Item::I_explode,                // Intrinsic017 1150:0859
+	UCMachine::I_rndRange,          // Intrinsic018 12e0:0293
+	Item::I_legalCreateAtCoords,    // Intrinsic019 10a8:10db
+	Item::I_andStatus,              // Intrinsic01A 10a8:258b
+	World::I_getControlledNPCNum,   // Intrinsic01B 1138:0010
+	Actor::I_getDir,                // Intrinsic01C 10f0:3714
+	Actor::I_getLastAnimSet,        // Intrinsic01D 10f0:372e
+	Item::I_fireWeapon,             // Intrinsic01E 1130:11da
+	Item::I_create,                 // Intrinsic01F 10a8:11e7
+	// 0x020
+	Item::I_popToCoords,            // Intrinsic020 10a8:1311
+	Actor::I_setDead,               // Intrinsic021 10f0:2010
+	Item::I_push,                   // Intrinsic022 10a8:1352
+	Item::I_getEtherealTop,         // Intrinsic023 10b0:2622
+	Item::I_setShape,               // Intrinsic024 10a8:06a5
+	Item::I_touch,                  // Intrinsic025 10a8:2514
+	Item::I_getQHi,                 // Intrinsic026 10a8:383e
+	Item::I_getClosestDirectionInRange, // Intrinsic027 10d8:0000
+	Item::I_hurl,                   // Intrinsic028 1040:12a6
+	World::I_gameDifficulty,        // Intrinsic029 10f0:38d5
+	AudioProcess::I_playAmbientSFXCru, // Intrinsic02A 10a8:3953
+	Item::I_isCompletelyOn,         // Intrinsic02B 10a8:1f5f
+	UCMachine::I_true,              // Intrinsic02C 1050:00c1
+	Container::I_destroyContents,   // Intrinsic02D 10a8:14af
+	Item::I_getQLo,                 // Intrinsic02E 10a8:3889
+	Item::I_inFastArea,             // Intrinsic02F 10a8:3af5
+	// 0x030
+	Item::I_setQHi,                 // Intrinsic030 10a8:385a
+	Item::I_legalMoveToPoint,       // Intrinsic031 10a8:174d
+	CurrentMap::I_canExistAtPoint,  // Intrinsic032 10a8:4071
+	Item::I_pop,                    // Intrinsic033 10a8:1338
+	Item::I_andStatus,              // Intrinsic034 10a8:258b
+	Item::I_receiveHit,             // Intrinsic035 1130:0247
+	Actor::I_isBusy,                // Intrinsic036 10f0:010c
+	Item::I_getDirFromTo16,         // Intrinsic037 10d8:01c7
+	Actor::I_isKneeling,            // Intrinsic038 10f0:21fb
+	Actor::I_doAnim,                // Intrinsic039 10f0:0245
+	MainActor::I_addItemCru,        // Intrinsic03A 13e8:0330
+	AudioProcess::I_stopSFXCru,     // Intrinsic03B 10a8:39b0
+	Actor::I_isDead,                // Intrinsic03C 10f0:1fe0
+	AudioProcess::I_isSFXPlayingForObject, // Intrinsic03D 10a8:39eb
+	Item::I_setQLo,                 // Intrinsic03E 10a8:38a2
+	Item::I_getFamily,              // Intrinsic03F 10a8:0fc4
+	// 0x040
+	Item::I_fall,                   // Intrinsic040 1040:1334
+	Egg::I_getEggId,                // Intrinsic041 1098:05c5
+	CameraProcess::I_moveTo,        // Intrinsic042 1188:0cba
+	CameraProcess::I_setCenterOn,   // Intrinsic043 1188:1aa5
+	Item::I_getRangeIfVisible,      // Intrinsic044 1130:1c01
+	AudioProcess::I_playSFXCru,     // Intrinsic045 10a8:3991
+	Item::I_isOn,                   // Intrinsic046 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic047 10a8:383e
+	Item::I_isOn,                   // Intrinsic048 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic049 10a8:383e
+	Item::I_isOn,                   // Intrinsic04A 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic04B 10a8:383e
+	Item::I_isOn,                   // Intrinsic04C 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic04D 10a8:383e
+	Item::I_isOn,                   // Intrinsic04E 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic04F 10a8:383e
+	// 0x050
+	Item::I_isOn,                   // Intrinsic050 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic051 10a8:383e
+	Actor::I_getCurrentActivityNo,  // Intrinsic052 10f0:330d
+	Actor::I_clrInCombat,           // Intrinsic053 10f0:31a9
+	Actor::I_setDefaultActivity0,   // Intrinsic054 10f0:2bea
+	Actor::I_setDefaultActivity1,   // Intrinsic055 10f0:2c07
+	Actor::I_setDefaultActivity2,   // Intrinsic056 10f0:2c24
+	Actor::I_setActivity,           // Intrinsic057 10f0:2d02
+	World::I_setControlledNPCNum,   // Intrinsic058 1138:0000
+	Item::I_getSurfaceWeight,       // Intrinsic059 10a8:0602
+	Item::I_isCentreOn,             // Intrinsic05A 10a8:4377
+	Item::I_setFrame,               // Intrinsic05B 10a8:0810
+	Actor::I_getLastAnimSet,        // Intrinsic05C 10f0:372e
+	Item::I_legalCreateAtPoint,     // Intrinsic05D 10a8:104e
+	Item::I_getPoint,               // Intrinsic05E 10a8:2436
+	CruStatusGump::I_hideStatusGump, // Intrinsic05F 11b8:0000
+	// 0x060
+	MovieGump::I_playMovieOverlay,  // Intrinsic060 10a8:3ad7
+	CruStatusGump::I_showStatusGump, // Intrinsic061 11b8:0006
+	Actor::I_setDead,               // Intrinsic062 10f0:2010
+	Actor::I_createActor,           // Intrinsic063 10f0:25b9
+	0,                              // Intrinsic064 1188:0013
+	Actor::I_teleport,              // Intrinsic065 10f0:29fa
+	Item::I_getFootpadData,         // Intrinsic066 10a8:1aa9
+	Item::I_isInNpc,                // Intrinsic067 10a8:24b5
+	Item::I_getQLo,                 // Intrinsic068 10a8:3889
+	Item::I_getNpcNum,              // Intrinsic069 10a8:0c40
+	Item::I_setNpcNum,              // Intrinsic06A 10a8:0c24
+	Item::I_andStatus,              // Intrinsic06B 10a8:258b
+	Item::I_move,                   // Intrinsic06C 10a8:1531
+	UCMachine::I_true,              // Intrinsic06D 1050:00a1
+	Kernel::I_resetRef,             // Intrinsic06E 11d8:0c63
+	Item::I_getNpcNum,              // Intrinsic06F 10a8:0c40
+	// 0x070
+	Item::I_andStatus,              // Intrinsic070 10a8:258b
+	Ultima8Engine::I_getUnkCrusaderFlag, // Intrinsic071 13e8:0e27
+	Ultima8Engine::I_setUnkCrusaderFlag, // Intrinsic072 13e8:0e2b
+	Ultima8Engine::I_setCruStasis,  // Intrinsic073 13e8:0071
+	Actor::I_setDead,               // Intrinsic074 10f0:2010
+	Ultima8Engine::I_clrUnkCrusaderFlag, // Intrinsic075 13e8:0e21
+	Ultima8Engine::I_clrCruStasis,  // Intrinsic076 13e8:0077
+	AudioProcess::I_stopSFXCru,     // Intrinsic077 10a8:39cf
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic078 1440:06e6
+	MainActor::I_clrKeycards,       // Intrinsic079 10f0:3d4b
+	MainActor::I_teleportToEgg,     // Intrinsic07A 1098:04ce
+	PaletteFaderProcess::I_fadeFromBlack, // Intrinsic07B 1440:07cc
+	Actor::I_clrImmortal,           // Intrinsic07C 10f0:2185
+	Actor::I_getHp,                 // Intrinsic07D 10f0:32f4
+	Actor::I_setActivity,           // Intrinsic07E 10f0:2d02
+	Item::I_getQuality,             // Intrinsic07F 10a8:0caa
+	// 0x080
+	Item::I_setQuality,             // Intrinsic080 10a8:0cee
+	Item::I_use,                    // Intrinsic081 10a8:2667
+	MainActor::I_getMaxEnergy,      // Intrinsic082 10f0:348b
+	Actor::I_getMana,               // Intrinsic083 10f0:3454
+	Actor::I_setMana,               // Intrinsic084 10f0:346e
+	Item::I_getQLo,                 // Intrinsic085 10a8:3889
+	Actor::I_setImmortal,           // Intrinsic086 10f0:216a
+	CameraProcess::I_getCameraX,    // Intrinsic087 1188:1cc5
+	CameraProcess::I_getCameraY,    // Intrinsic088 1188:1ccd
+	Item::I_setMapArray,            // Intrinsic089 10a8:0c5c
+	Item::I_getNpcNum,              // Intrinsic08A 10a8:0c40
+	Item::I_shoot,                  // Intrinsic08B 10a8:38d1
+	Item::I_enterFastArea,          // Intrinsic08C 10a8:2b30
+	Item::I_setBroken,              // Intrinsic08D 10a8:25d0
+	Item::I_hurl,                   // Intrinsic08E 1040:12a6
+	Item::I_getNpcNum,              // Intrinsic08F 10a8:0c40
+	// 0x090
+	PaletteFaderProcess::I_jumpToAllBlack, // Intrinsic090 1440:07da
+	MusicProcess::I_stopMusic,      // Intrinsic091 1200:0223
+	0,                              // Intrinsic092 13e8:0033
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic093 10a8:3a9f
+	0,                              // Intrinsic094 13e8:0039
+	Game::I_playCredits,            // Intrinsic095 13e8:003f
+	Ultima8Engine::I_moveKeyDownRecently, // Intrinsic096 10a8:4340
+	MainActor::I_teleportToEgg,     // Intrinsic097 1098:04f7
+	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic098 1030:0605
+	World::I_resetVargasShield,     // Intrinsic099 1130:0000
+	Item::I_andStatus,              // Intrinsic09A 10a8:258b
+	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic09B 1440:0a7c
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09C 1440:06f4
+	PaletteFaderProcess::I_fadeToGamePal, // Intrinsic09D 1440:0bc6
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic09E 1440:04ea
+	PaletteFaderProcess::I_fadeToBlack, // Intrinsic09F 1440:0c47
+	// 0x0A0
+	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic0A0 1440:0ab2
+	Actor::I_setDead,               // Intrinsic0A1 10f0:2010
+	Item::I_getQLo,                 // Intrinsic0A2 10a8:3889
+	Item::I_getUnkEggType,          // Intrinsic0A3 10a8:0d31
+	Egg::I_setEggXRange,            // Intrinsic0A4 1098:055b
+	Item::I_overlaps,               // Intrinsic0A5 10a8:1cc5
+	Item::I_isOn,                   // Intrinsic0A6 10a8:1eea
+	UCMachine::I_true,              // Intrinsic0A7 13e8:00b9
+	Egg::I_getEggXRange,            // Intrinsic0A8 1098:051d
+	Actor::I_setDead,               // Intrinsic0A9 10f0:2010
+	MovieGump::I_playMovieCutsceneAlt, // Intrinsic0AA 10a8:3a9f
+	AudioProcess::I_playSFX,        // Intrinsic0AB 12e0:0476
+	Actor::I_isFalling,             // Intrinsic0AC 10f0:1f01
+	Item::I_getFamilyOfType,        // Intrinsic0AD 1100:054d
+	Item::I_getNpcNum,              // Intrinsic0AE 10a8:0c40
+	Item::I_getQLo,                 // Intrinsic0AF 10a8:3889
+	// 0x0B0
+	Item::I_getQHi,                 // Intrinsic0B0 10a8:383e
+	Item::I_unequip,                // Intrinsic0B1 10a8:2a68
+	Item::I_avatarStoleSomething,   // Intrinsic0B2 10a8:2fda
+	Item::I_andStatus,              // Intrinsic0B3 10a8:258b
+	Ultima8Engine::I_getCurrentTimerTick, // Intrinsic0B4 1038:03b8
+	World::I_setAlertActive,        // Intrinsic0B5 10e0:0000
+	Item::I_equip,                  // Intrinsic0B6 10a8:2a35
+	World::I_clrAlertActive,        // Intrinsic0B7 10e0:0121
+	Ultima8Engine::I_getAvatarInStasis, // Intrinsic0B8 10f0:3696
+	MainActor::I_addItemCru,        // Intrinsic0B9 13e8:0330
+	Actor::I_getLastAnimSet,        // Intrinsic0BA 10f0:372e
+	Item::I_setQuality,             // Intrinsic0BB 10a8:0cee
+	CurrentMap::I_canExistAt,       // Intrinsic0BC 1150:0b67
+	Item::I_isOn,                   // Intrinsic0BD 10a8:1eea
+	Item::I_hurl,                   // Intrinsic0BE 1040:12a6
+	Item::I_getQHi,                 // Intrinsic0BF 10a8:383e
+	// 0x0C0
+	Item::I_andStatus,              // Intrinsic0C0 10a8:258b
+	Item::I_hurl,                   // Intrinsic0C1 1040:12a6
+	Item::I_andStatus,              // Intrinsic0C2 10a8:258b
+	Item::I_hurl,                   // Intrinsic0C3 1040:12a6
+	Item::I_andStatus,              // Intrinsic0C4 10a8:258b
+	KeypadGump::I_showKeypad,       // Intrinsic0C5 13c8:00fe
+	Item::I_isOn,                   // Intrinsic0C6 10a8:1eea
+	SpriteProcess::I_createSprite,  // Intrinsic0C7 1140:00de
+	Item::I_getDirFromItem,         // Intrinsic0C8 10a8:1a3f
+	Item::I_hurl,                   // Intrinsic0C9 1040:12a6
+	Item::I_getQHi,                 // Intrinsic0CA 10a8:383e
+	Actor::I_addHp,                 // Intrinsic0CB 10f0:3748
+	MainActor::I_switchMap,         //Intrinsic0CC 1028:049c
+	Actor::I_isInCombat,            // Intrinsic0CD 10f0:1f20
+	Actor::I_setActivity,           // Intrinsic0CE 10f0:2d02
+	Item::I_setQAndCombine,         // Intrinsic0CF 10a8:0dd1
+	// 0x0D0
+	Item::I_use,                    // Intrinsic0D0 10a8:2667
+	AudioProcess::I_stopAllSFX,     // Intrinsic0D1 12e0:054a
+	MovieGump::I_playMovieCutscene, // Intrinsic0D2 10a8:3a5b
+	0,                              // Intrinsic0D3 13e8:00a8
+	AudioProcess::I_playSFX,        // Intrinsic0D4 12e0:0476
+	Item::I_use,                    // Intrinsic0D5 10a8:2667
+	CameraProcess::I_getCameraZ,    // Intrinsic0D6 1188:1cd5
+	Actor::I_getLastAnimSet,        // Intrinsic0D7 10f0:372e
+	Actor::I_setDead,               // Intrinsic0D8 10f0:2010
+	Item::I_getQLo,                 // Intrinsic0D9 10a8:3889
+	PaletteFaderProcess::I_jumpToAllWhite, // Intrinsic0DA 1440:0853
+	Actor::I_setActivity,           // Intrinsic0DB 10f0:2d02
+	Item::I_isOn,                   // Intrinsic0DC 10a8:1eea
+	Actor::I_getLastActivityNo,     // Intrinsic0DD 10f0:3e35
+	Actor::I_setCombatTactic,       // Intrinsic0DE 10f0:3594
+	Actor::I_getEquip,              // Intrinsic0DF 10f0:27c8
+	// 0x0E0
+	Actor::I_setEquip,              // Intrinsic0E0 10f0:27fb
+	Actor::I_getDefaultActivity0,   // Intrinsic0E1 10f0:2c78
+	Actor::I_getDefaultActivity1,   // Intrinsic0E2 10f0:2c92
+	Actor::I_getDefaultActivity2,   // Intrinsic0E3 10f0:2cac
+	Actor::I_getLastAnimSet,        // Intrinsic0E4 10f0:372e
+	Actor::I_setTarget,             // Intrinsic0E5 10f0:1e71
+	Actor::I_setUnkByte,            // Intrinsic0E6 10f0:3e18
+	Actor::I_setDead,               // Intrinsic0E7 10f0:2010
+	Item::I_cast,                   // Intrinsic0E8 10a8:2f3e
+	Item::I_andStatus,              // Intrinsic0E9 10a8:258b
+	Item::I_getQLo,                 // Intrinsic0EA 10a8:3889
+	MainActor::I_getNumberOfCredits, // Intrinsic0EB 10f0:3833
+	Item::I_popToEnd,               // Intrinsic0EC 10a8:1342
+	Item::I_popToContainer,         // Intrinsic0ED 10a8:1328
+	BatteryChargerProcess::I_create, // Intrinsic0EE 1130:20c5
+	Kernel::I_getNumProcesses,      // Intrinsic0EF 11d8:0977
+	// 0x0F0
+	Item::I_getQHi,                 // Intrinsic0F0 10a8:383e
+	Item::I_isOn,                   // Intrinsic0F1 10a8:1eea
+	Actor::I_setActivity,           // Intrinsic0F2 10f0:2d02
+	Item::I_getQHi,                 // Intrinsic0F3 10a8:383e
+	Item::I_getQ,                   // Intrinsic0F4 10a8:0c94
+	Item::I_setQ,                   // Intrinsic0F5 10a8:0f5f
+	CruHealerProcess::I_create,     // Intrinsic0F6 1130:20e5
+	Item::I_hurl,                   // Intrinsic0F7 1040:12a6
+	Item::I_getNpcNum,              // Intrinsic0F8 10a8:0c40
+	Item::I_hurl,                   // Intrinsic0F9 1040:12a6
+	Item::I_isOn,                   // Intrinsic0FA 10a8:1eea
+	Item::I_getQHi,                 // Intrinsic0FB 10a8:383e
+	Item::I_andStatus,              // Intrinsic0FC 10a8:258b
+	MainActor::I_hasKeycard,        // Intrinsic0FD 10f0:3ce8
+	ComputerGump::I_readComputer,   // Intrinsic0FE 13a0:0005
+	UCMachine::I_numToStr,          // Intrinsic0FF 1418:0073
+	// 0x100
+	Item::I_getNpcNum,              // Intrinsic100 10a8:0c40
+	Item::I_andStatus,              // Intrinsic101 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic102 10a8:0c40
+	Item::I_isCrusTypeNPC, 			// Intrinsic103 10a8:4348
+	Item::I_andStatus,              // Intrinsic104 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic105 10a8:0c40
+	Item::I_andStatus,              // Intrinsic106 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic107 10a8:0c40
+	Item::I_andStatus,              // Intrinsic108 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic109 10a8:0c40
+	Item::I_andStatus,              // Intrinsic10A 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic10B 10a8:0c40
+	Item::I_andStatus,              // Intrinsic10C 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic10D 10a8:0c40
+	Item::I_andStatus,              // Intrinsic10E 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic10F 10a8:0c40
+	// 0x110
+	Item::I_andStatus,              // Intrinsic110 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic111 10a8:0c40
+	Actor::I_getDir,                // Intrinsic112 10f0:3714
+	UCMachine::I_numToStr,          // Intrinsic113 1418:0073
+	Item::I_andStatus,              // Intrinsic114 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic115 10a8:0c40
+	Item::I_fireDistance,           // Intrinsic116 1130:1755
+	Item::I_andStatus,              // Intrinsic117 10a8:258b
+	Item::I_hurl,                   // Intrinsic118 1040:12a6
+	Item::I_setBroken,              // Intrinsic119 10a8:25d0
+	Item::I_andStatus,              // Intrinsic11A 10a8:258b
+	Item::I_getTypeFlag,            // Intrinsic11B 10a8:0fef
+	Item::I_getNpcNum,              // Intrinsic11C 10a8:0c40
+	Item::I_hurl,                   // Intrinsic11D 1040:12a6
+	Item::I_getCY,                  // Intrinsic11E 10a8:02de
+	Item::I_getCZ,                  // Intrinsic11F 10a8:0322
+	// 0x120
+	Item::I_getCX,                  // Intrinsic120 10a8:029a
+	Actor::I_getDir,                // Intrinsic121 10f0:3714
+	UCMachine::I_numToStr,          // Intrinsic122 1418:0073
+	Item::I_getDirToCoords,         // Intrinsic123 10a8:19e9
+	Item::I_andStatus,              // Intrinsic124 10a8:258b
+	Item::I_getNpcNum,              // Intrinsic125 10a8:0c40
+	Item::I_isOn,                   // Intrinsic126 10a8:1eea
+	Item::I_getFootpadData,         // Intrinsic127 10a8:1aa9
+	Actor::I_isDead,                // Intrinsic128 10f0:1fe0
+	Actor::I_createActorCru,        // Intrinsic129 10a8:3d3f
+	Actor::I_clrImmortal,           // Intrinsic12A 10f0:2185
+	Item::I_andStatus,              // Intrinsic12B 10a8:258b
+	Item::I_getQHi,                 // Intrinsic12C 10a8:383e
+	WeaselGump::I_showWeaselGump,   // Intrinsic12D 13e0:0000
+	Actor::I_setDead,               // Intrinsic12E 10f0:2010
+	Item::I_getQLo,                 // Intrinsic12F 10a8:3889
+	// 0x130
+	Item::I_getNpcNum,              // Intrinsic130 10a8:0c40
+	Actor::I_getDir,                // Intrinsic131 10f0:3714
+	Actor::I_getLastAnimSet,        // Intrinsic132 10f0:372e
+	Item::I_setQuality,             // Intrinsic133 10a8:0cee
+	0                   			// (Unused) Intrinsic134 1048:0079
 };
 
 } // End of namespace Ultima8


Commit: 7fcbc9249c0e2a73201631ed61f8c58c3ff768cf
    https://github.com/scummvm/scummvm/commit/7fcbc9249c0e2a73201631ed61f8c58c3ff768cf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-07-24T13:48:09+09:00

Commit Message:
ULTIMA8: Make Usecode variant selection more generic

There are more variants than I initially thought. Make the logic a bit more
generic.

Changed paths:
    engines/ultima/detection.h
    engines/ultima/detection_tables.h
    engines/ultima/ultima8/games/game_info.h
    engines/ultima/ultima8/ultima8.cpp


diff --git a/engines/ultima/detection.h b/engines/ultima/detection.h
index 97aab31560..2bc0a476a3 100644
--- a/engines/ultima/detection.h
+++ b/engines/ultima/detection.h
@@ -50,6 +50,19 @@ enum UltimaGameFeatures {
 	GF_VGA_ENHANCED = 1 << 0
 };
 
+// Custom game detector flags used by Ultima engines
+enum UltimaGameFlags {
+	// Usecode variants (used by Crusader games)
+	ADGF_USECODE_MASK = (0xF | ADGF_DEMO),	// Mask of flags data used for usecode variants
+	ADGF_USECODE_DEFAULT = 0,	// Default usecode tables (latest/gog editions of game)
+	ADGF_USECODE_DEMO = ADGF_DEMO, // Demo versions of each game (re-use demo flag)
+	ADGF_USECODE_ORIG = 1, 		// Original (eg, 1.01) CD version
+	ADGF_USECODE_ES = 2,		// Spanish version of game
+	ADGF_USECODE_DE = 3, 		// German version of game
+	ADGF_USECODE_FR = 4,		// French version of game
+	ADGF_USECODE_JA = 5			// Japanese version of game
+};
+
 struct UltimaGameDescription {
 	ADGameDescription desc;
 	GameId gameId;
diff --git a/engines/ultima/detection_tables.h b/engines/ultima/detection_tables.h
index 4fccfad638..f83bf49622 100644
--- a/engines/ultima/detection_tables.h
+++ b/engines/ultima/detection_tables.h
@@ -386,7 +386,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "0a0f64507adc4f280129c735ee9cad42", 556613),
 			Common::EN_ANY,
 			Common::kPlatformDOS,
-			ADGF_TESTING,
+			ADGF_TESTING | ADGF_USECODE_DEFAULT,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -416,7 +416,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "8c74327e30088ce93f08a15a7f85b3ce", 418556),
 			Common::EN_ANY,
 			Common::kPlatformDOS,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_ORIG,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -431,7 +431,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "efbd33d6a5e8f14e9c57f963c3fbe939", 423051),
 			Common::FR_FRA,
 			Common::kPlatformDOS,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_FR,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -446,7 +446,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "36a16d70c97d0379f1133cc743c31313", 558493),
 			Common::ES_ESP,
 			Common::kPlatformDOS,
-			ADGF_TESTING,
+			ADGF_TESTING | ADGF_USECODE_ES,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -461,7 +461,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "a8b5c421c5d74be8c69fcd4fecadd1dd", 559015),
 			Common::ES_ESP,
 			Common::kPlatformDOS,
-			ADGF_TESTING,
+			ADGF_TESTING | ADGF_USECODE_DEFAULT,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -476,7 +476,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("jusecode.flx", "088105959be4f2de1cb9e796e71c5f2d", 554522),
 			Common::JA_JPN,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_JA,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REM,
@@ -506,7 +506,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "1bb360156b7240a1f05eb9bda01c54db", 481652),
 			Common::EN_ANY,
 			Common::kPlatformDOS,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_DEFAULT,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REG,
@@ -521,7 +521,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "1824d9725de45a8b49f058c12c6cf5c3", 484445),
 			Common::DE_DEU,
 			Common::kPlatformDOS,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_DE,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REG,
@@ -551,7 +551,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
 			AD_ENTRY1s("eusecode.flx", "f5906654047ed1dab75760da6426ecfa", 478125),
 			Common::ES_ESP,
 			Common::kPlatformDOS,
-			ADGF_UNSTABLE,
+			ADGF_UNSTABLE | ADGF_USECODE_ES,
 			GUIO1(GUIO_NOMIDI)
 		},
 		GAME_CRUSADER_REG,
diff --git a/engines/ultima/ultima8/games/game_info.h b/engines/ultima/ultima8/games/game_info.h
index fcac0e3cc4..f298bcc822 100644
--- a/engines/ultima/ultima8/games/game_info.h
+++ b/engines/ultima/ultima8/games/game_info.h
@@ -47,8 +47,12 @@ struct GameInfo {
 	// Usecode coff variant
 	enum GameUsecodeOffsetVariant {
 		GAME_UC_DEFAULT, // Most versions of most games
+		GAME_UC_ORIG,	 // Original (pre-patch) CD versions of Crusader games
+		GAME_UC_DEMO,    // Crusader: No Remorse or No Regret Demos
 		GAME_UC_REM_ES,  // Crusader: No Remorse Spanish
-		GAME_UC_DEMO     // Crusader: No Remorse or No Regret Demos
+		GAME_UC_REM_FR,	 // Crusader: No Remorse French
+		GAME_UC_REM_JA,  // Crusader: No Remorse Japanese
+		GAME_UC_REG_DE   // Crusader: No Regret German
 	} _ucOffVariant;
 
 	//! version number, encoded as 100*major + minor
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 42f4d49377..9408e16047 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -367,17 +367,41 @@ bool Ultima8Engine::startupGame() {
 	if (_gameInfo->_type == GameInfo::GAME_U8) {
 		_ucMachine = new UCMachine(U8Intrinsics, ARRAYSIZE(U8Intrinsics));
 	} else if (_gameInfo->_type == GameInfo::GAME_REMORSE) {
-		if (_gameInfo->_ucOffVariant == GameInfo::GAME_UC_DEMO)
+		switch (_gameInfo->_ucOffVariant) {
+		case GameInfo::GAME_UC_DEMO:
 			_ucMachine = new UCMachine(RemorseDemoIntrinsics, ARRAYSIZE(RemorseDemoIntrinsics));
-		else if (_gameInfo->_ucOffVariant == GameInfo::GAME_UC_REM_ES)
+			break;
+		case GameInfo::GAME_UC_REM_ES:
 			_ucMachine = new UCMachine(RemorseEsIntrinsics, ARRAYSIZE(RemorseEsIntrinsics));
-		else
+			break;
+		case GameInfo::GAME_UC_REM_FR:
+			_ucMachine = new UCMachine(RemorseFrIntrinsics, ARRAYSIZE(RemorseFrIntrinsics));
+			break;
+		case GameInfo::GAME_UC_REM_JA:
+			warning("TODO: Create Remorse JA intrinsic list");
 			_ucMachine = new UCMachine(RemorseIntrinsics, ARRAYSIZE(RemorseIntrinsics));
+			break;
+		case GameInfo::GAME_UC_ORIG:
+			warning("TODO: Create Remorse original version intrinsic list");
+			_ucMachine = new UCMachine(RemorseIntrinsics, ARRAYSIZE(RemorseIntrinsics));
+			break;
+		default:
+			_ucMachine = new UCMachine(RemorseIntrinsics, ARRAYSIZE(RemorseIntrinsics));
+			break;
+		}
 	} else if (_gameInfo->_type == GameInfo::GAME_REGRET) {
-		if (_gameInfo->_ucOffVariant == GameInfo::GAME_UC_DEMO)
+		switch (_gameInfo->_ucOffVariant) {
+		case GameInfo::GAME_UC_DEMO:
 			_ucMachine = new UCMachine(RegretDemoIntrinsics, ARRAYSIZE(RegretDemoIntrinsics));
-		else
+			break;
+		case GameInfo::GAME_UC_REG_DE:
+			_ucMachine = new UCMachine(RegretDeIntrinsics, ARRAYSIZE(RegretDeIntrinsics));
+			break;
+		case GameInfo::GAME_UC_ORIG: // 1.06 is the original CD release too?
+		default:
 			_ucMachine = new UCMachine(RegretIntrinsics, ARRAYSIZE(RegretIntrinsics));
+			break;
+		}
 	} else {
 		CANT_HAPPEN_MSG("Invalid game type.");
 	}
@@ -842,15 +866,39 @@ bool Ultima8Engine::getGameInfo(const istring &game, GameInfo *ginfo) {
 
 	if (ginfo->_type == GameInfo::GAME_REMORSE)
 	{
-		if (_gameDescription->desc.flags & ADGF_DEMO)
+		switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
+		case ADGF_USECODE_DEMO:
 			ginfo->_ucOffVariant = GameInfo::GAME_UC_DEMO;
-		else if (_gameDescription->desc.language == Common::ES_ESP &&
-				 Common::String("") == _gameDescription->desc.extra) {
+			break;
+		case ADGF_USECODE_ORIG:
+			ginfo->_ucOffVariant = GameInfo::GAME_UC_ORIG;
+			break;
+		case ADGF_USECODE_ES:
 			ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_ES;
+			break;
+		case ADGF_USECODE_FR:
+			ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_FR;
+			break;
+		case ADGF_USECODE_JA:
+			ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_JA;
+			break;
+		default:
+			break;
 		}
 	} else if (ginfo->_type == GameInfo::GAME_REGRET) {
-		if (_gameDescription->desc.flags & ADGF_DEMO)
+		switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
+		case ADGF_USECODE_DEMO:
 			ginfo->_ucOffVariant = GameInfo::GAME_UC_DEMO;
+			break;
+		case ADGF_USECODE_ORIG:
+			ginfo->_ucOffVariant = GameInfo::GAME_UC_ORIG;
+			break;
+		case ADGF_USECODE_DE:
+			ginfo->_ucOffVariant = GameInfo::GAME_UC_REG_DE;
+			break;
+		default:
+			break;
+		}
 	}
 
 	switch (_gameDescription->desc.language) {


Commit: f185e419563d0e8b975c0e64e07e77ea7aef5213
    https://github.com/scummvm/scummvm/commit/f185e419563d0e8b975c0e64e07e77ea7aef5213
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-07-24T13:48:09+09:00

Commit Message:
ULTIMA8: Item sorter improvements for large flat objects

Large flat squares should get sorted below other flat things.  In U8, the
definition of large is 128x128, but in Crusader they can also be larger than
that.

This fixes the paint order of hazard tape stripes in Crusader. It may also
improve paint order for Ultima 8 which has some big flat squares larger than
128x128 too (eg, shape 165 or 318 which are 256x256).

Also added tests for flat object sorting.

Changed paths:
    engines/ultima/ultima8/world/item_sorter.cpp
    engines/ultima/ultima8/world/sort_item.h
    test/engines/ultima/ultima8/world/sort_item.h


diff --git a/engines/ultima/ultima8/world/item_sorter.cpp b/engines/ultima/ultima8/world/item_sorter.cpp
index 1e475a40b8..24b571ceaa 100644
--- a/engines/ultima/ultima8/world/item_sorter.cpp
+++ b/engines/ultima/ultima8/world/item_sorter.cpp
@@ -153,7 +153,7 @@ void ItemSorter::AddItem(int32 x, int32 y, int32 z, uint32 shapeNum, uint32 fram
 	si->_clipped = (clipped != 0);
 
 	// These help out with sorting. We calc them now, so it will be faster
-	si->_f32x32 = xd == 128 && yd == 128;
+	si->_fbigsq = (xd == 128 && yd == 128) || (xd == 256 && yd == 256) || (xd == 512 && yd == 512);
 	si->_flat = zd == 0;
 
 	si->_draw = info->is_draw();
diff --git a/engines/ultima/ultima8/world/sort_item.h b/engines/ultima/ultima8/world/sort_item.h
index d867e33171..f6e05f3843 100644
--- a/engines/ultima/ultima8/world/sort_item.h
+++ b/engines/ultima/ultima8/world/sort_item.h
@@ -43,7 +43,7 @@ struct SortItem {
 			_frame(0), _flags(0), _extFlags(0), _sx(0), _sy(0),
 			_sx2(0), _sy2(0), _x(0), _y(0), _z(0), _xLeft(0),
 			_yFar(0), _zTop(0), _sxLeft(0), _sxRight(0), _sxTop(0),
-			_syTop(0), _sxBot(0), _syBot(0),_f32x32(false), _flat(false),
+			_syTop(0), _sxBot(0), _syBot(0),_fbigsq(false), _flat(false),
 			_occl(false), _solid(false), _draw(false), _roof(false),
 			_noisy(false), _anim(false), _trans(false), _fixed(false),
 			_land(false), _occluded(false), _clipped(false), _sprite(false),
@@ -94,7 +94,7 @@ struct SortItem {
 	int32   _sxBot;      // Screenspace bounding box bottom x coord (RNB x coord) ss origin
 	int32   _syBot;      // Screenspace bounding box bottom extent  (RNB y coord) ss origin
 
-	bool    _f32x32 : 1;         // Needs 1 bit  0
+	bool    _fbigsq : 1;         // Needs 1 bit  0
 	bool    _flat : 1;           // Needs 1 bit  1
 	bool    _occl : 1;           // Needs 1 bit  2
 	bool    _solid : 1;          // Needs 1 bit  3
@@ -347,9 +347,9 @@ inline bool SortItem::below(const SortItem &si2) const {
 		if (si1._occl != si2._occl)
 			return si1._occl > si2._occl;
 
-		// 32x32 flats get drawn first
-		if (si1._f32x32 != si2._f32x32)
-			return si1._f32x32 > si2._f32x32;
+		// Large flats squares get drawn first
+		if (si1._fbigsq != si2._fbigsq)
+			return si1._fbigsq > si2._fbigsq;
 	}
 	// Mixed, or non flat
 	else {
@@ -420,8 +420,8 @@ ConsoleStream &operator<<(ConsoleStream &cs, const SortItem &si) {
 		cs << "solid ";
 	if (si._occl)
 		cs << "occl ";
-	if (si._f32x32)
-		cs << "f32x32 ";
+	if (si._fbigsq)
+		cs << "fbigsq ";
 	if (si._roof)
 		cs << "roof ";
 	if (si._land)
diff --git a/test/engines/ultima/ultima8/world/sort_item.h b/test/engines/ultima/ultima8/world/sort_item.h
index f471816b4a..2c87e6296f 100644
--- a/test/engines/ultima/ultima8/world/sort_item.h
+++ b/test/engines/ultima/ultima8/world/sort_item.h
@@ -74,4 +74,57 @@ class U8SortItemTestSuite : public CxxTest::TestSuite {
 		TS_ASSERT(!si2.below(si1));
 	}
 
+	/* Overlapping flat items (generally the floor) follow a set of rules */
+	void test_flat_sort() {
+		Ultima::Ultima8::SortItem si1(nullptr);
+		Ultima::Ultima8::SortItem si2(nullptr);
+
+		si1._x = si2._x = si1._y = si2._y = 10;
+
+		si1._flat = true;
+		si2._flat = true;
+
+		// If one has a higher z, it's above
+		si2._z = 1;
+		TS_ASSERT(si1.below(si2));
+		TS_ASSERT(!si2.below(si1));
+		si2._z = 0;
+
+		// Animated always gets drawn above
+		si1._anim = true;
+		TS_ASSERT(si2.below(si1));
+		TS_ASSERT(!si1.below(si2));
+		si1._anim = false;
+
+		// Trans always gets drawn above
+		si1._trans = true;
+		TS_ASSERT(si2.below(si1));
+		TS_ASSERT(!si1.below(si2));
+		si1._trans = false;
+
+		// Draw always gets drawn below
+		si1._draw = true;
+		TS_ASSERT(si1.below(si2));
+		TS_ASSERT(!si2.below(si1));
+		si1._draw = false;
+
+		// Solid always gets drawn below
+		si1._solid = true;
+		TS_ASSERT(si1.below(si2));
+		TS_ASSERT(!si2.below(si1));
+		si1._solid = false;
+
+		// Occludes always get drawn below
+		si1._occl = true;
+		TS_ASSERT(si1.below(si2));
+		TS_ASSERT(!si2.below(si1));
+		si1._occl = false;
+
+		// Large flat squares get drawn below
+		si1._fbigsq = true;
+		TS_ASSERT(si1.below(si2));
+		TS_ASSERT(!si2.below(si1));
+		si1._fbigsq = false;
+	}
+
 };




More information about the Scummvm-git-logs mailing list