Template:Engine calls: Difference between revisions

From Boktai Hacking Wiki
Combined engine call table
 
m make mwparserfromhell happy
Line 4: Line 4:


{| class="wikitable exportable"
{| class="wikitable exportable"
|-
! ID || Games || Description
! ID || Games || Description
|-
|-

Revision as of 14:25, 30 May 2025

Please document all engine calls (control 0x9906 and control 0xb745 opcodes) on this page only. Changes you make here will be automatically merged into Engine calls (Boktai 1), Engine calls (Boktai 2), and Engine calls (Boktai 3) daily by a bot (so it may take a bit until your changes show up).

DO NOT add/remove columns to the next table as that will confuse the bot. You should only edit the "Description" column. Ask User:Raphi if you need to edit anything else.

ID Games Description
0x0074 _2_
0x0101 _2_
0x0153 1__
0x01ab __3
0x0238 _2_
0x025e _23
0x0272 123
0x0293 __3
0x02a7 __3
0x02c1 1__
0x0314 __3
0x0353 _2_
0x03aa __3
0x03ca 123
0x0412 __3
0x0447 123
0x04cd 1__
0x04e2 1__
0x054a _23
0x055a __3
0x056e __3
0x0581 1__
0x058d _23
0x05a5 123
0x05e2 _2_
0x05f4 1__
0x061e 123
0x0622 1__
0x0623 _2_
0x063b 1__ Camera_SetBounds(min_x, max_x, min_y, max_y)
0x064e 12_
0x065b 1__
0x06d0 1__
0x0706 1__
0x0740 123
0x075c _23
0x0796 1__
0x07a6 1__
0x07b6 1__
0x07c6 1__
0x0866 123
0x08d9 1__
0x08f4 _2_
0x08f6 1__
0x090a 1__
0x0929 1__
0x0955 123
0x09ea _2_
0x09f8 __3
0x0ac7 _23
0x0ad8 _23
0x0b49 __3
0x0b50 123
0x0bce _23
0x0bfd _23
0x0bfe __3
0x0c1a 1__
0x0c1b _23
0x0cd4 123
0x0dbf 1__
0x0e15 123
0x0e37 123
0x0e76 123
0x0e7c _2_
0x0ee4 123
0x0f48 1__
0x0f87 __3
0x0fa4 1__
0x0fc5 _2_
0x0feb 1__ Crow_SetAggro(?)
0x1022 __3
0x1057 1__
0x10e9 1__
0x1188 1__
0x11c8 1__
0x11d4 123 Video_LoadTileSet(t=type, c=part ids, d=tile set file id, m=tile map file id, s=load offset)

t: Type; only two relevant cases: If 0 (=BG0), then load offset will be forced to 0x400 tiles, irrespective of the m and s keywords. Otherwise, the m and s keywords are used.
c: Tile set file part IDs to load (1-n)
d: Tile set file ID
m: Tile map file ID, only used to determine the load offset.
s: Load offset in tiles
Load offset explanation: Tiles are copied into VRAM starting at that offset. By specifying different load offsets for different tile sets, multiple tile sets can coexist in VRAM simultaneously. If both m and s are specified, m takes precedence.

0x11d9 _23
0x11f7 1__
0x1225 1__
0x1231 1__
0x12c4 123
0x1320 123
0x1343 _23
0x135d 1__
0x138e 123
0x13ac _2_
0x13d9 1__
0x1422 123
0x1488 123
0x149f 1__
0x1500 123
0x150f 12_
0x152e 1__
0x1595 __3
0x15a9 _2_
0x15b3 123
0x15de __3
0x15ec 1__
0x15ed _23
0x1606 __3
0x162e _23
0x164d _23
0x166e 1_3
0x1693 123
0x1722 __3
0x172b _2_
0x172d 123
0x1744 _23
0x1745 __3
0x174c 1__
0x1778 1__
0x180b _23
0x1833 123
0x184b _23 Camera_ConnectToTilemap(...) - Positions the camera on the tile map (call every frame)
0x184d __3
0x1866 1__
0x1870 _23
0x1887 _23
0x18f6 1__ Spawn Muspell
0x1909 __3
0x191a 1__
0x194a __3
0x19cc _23
0x1a35 123
0x1a4f 1__
0x1aa0 1__
0x1ad7 1__
0x1aea 1__
0x1b0f __3
0x1b24 _2_
0x1b77 _23
0x1b88 __3
0x1bee _23
0x1c21 1__
0x1c36 1__
0x1c3e 123
0x1c43 1__
0x1c5e 1__
0x1c64 123 Textbox_Open(r=string ref)
0x1c82 __3
0x1cd6 __3
0x1d39 1__
0x1d61 __3
0x1dbe 123
0x1e6e __3
0x1e93 __3
0x1e97 _23
0x1e98 _23
0x1ea2 1__
0x1ea4 _2_
0x1ed1 _2_
0x1f0b 1__
0x1f3b _23
0x1f44 1__
0x1f48 1__
0x1f65 _23
0x1f6c 1__
0x1f99 1__
0x1fba __3
0x20da 1__
0x2118 1__
0x2141 123
0x2207 _23
0x2223 1__
0x225b 123
0x22ef 1__
0x22f3 1__
0x2306 _2_
0x233f __3
0x2354 _23
0x237a _2_
0x2388 __3
0x23f4 __3
0x24e1 __3
0x2502 _23
0x2571 123
0x2572 __3
0x2575 123
0x2593 _23
0x25aa 1__
0x25f3 _2_
0x264f 1__
0x2687 __3
0x26b3 1__
0x2734 __3
0x2740 _23
0x274e _23
0x277a _2_
0x2804 __3
0x2863 __3
0x286b 123
0x286e 1__
0x286f _23
0x287d __3
0x28cb 123
0x2924 123
0x296b 1__
0x296e __3
0x297e __3
0x29ee __3
0x29f1 _23
0x2a83 1__ Spawn_block_visual(?, t=?, i=?, p=position)

Only visuals (obj), does not affect colission

0x2a8c 1__ Camera_ConnectToTilemap(...) - Positions the camera on the tile map (call every frame)
0x2aab 1__
0x2b06 _2_
0x2b42 1__
0x2b68 _2_
0x2b8c 123
0x2bde __3
0x2c04 __3
0x2c15 1__
0x2c8a __3
0x2d25 1__
0x2d2b _23
0x2d30 _23
0x2d36 _23
0x2d87 __3
0x2d8f 12_
0x2e05 1__
0x2e1c _23
0x2f01 123 Time_GetType(result: u8*)

0, 4, 5 = night, else = day

0x2f51 123
0x2fa0 _23
0x2fa5 123
0x2fe4 123
0x3004 _2_
0x300f 123
0x3019 _23
0x3050 1_3
0x305a 123 Inventory_GiveItem(i=item_id, n=amount)
0x3062 123
0x30a3 123
0x30ac __3
0x30ad 123 Map_LoadMap(p=Map file ID, ...=?)
0x30c9 1__
0x30cc _2_
0x3117 _23
0x3178 1__
0x317b __3
0x3198 1__
0x31a8 __3
0x31fe _23
0x31ff 123
0x320c 123
0x3215 123
0x327d 1__
0x329b 123
0x32bd 1__
0x3361 12_
0x33aa _23
0x33c4 12_
0x33ff __3
0x3469 123 int rand(p=divisor)

If divisor is 0, returns the RNG value directly. Otherwise returns RNG % divsior (TODO: there's some additional shifting going on if p is set)

0x34c2 _23
0x34ea _23
0x352d _23 TextBox_SetExtend(n, text) - Access via <EXTEND=n> tags
0x3535 123 Map_LoadGraphics(t=?, c=?, d=?)
0x3578 __3
0x3590 1__
0x3613 123
0x3620 __3
0x364d 123
0x3699 _2_
0x3705 _23
0x374d 1__
0x3757 _23
0x377d 123
0x382f __3
0x38d0 1__
0x3960 __3
0x39c6 __3
0x3a31 __3
0x3a3c 1__
0x3a5d 123 Inventory_RemoveItem(i=item, n=amount)
0x3a89 _23
0x3b80 1__
0x3bfb 1__
0x3c3e _2_
0x3c47 123
0x3c48 123
0x3c8d 123
0x3c9f __3
0x3d0c _23
0x3d17 123
0x3d1e 1__
0x3d38 __3
0x3d64 __3
0x3d6b __3
0x3d91 __3
0x3da2 __3
0x3db0 _23
0x3db8 123
0x3dba 1__
0x3df7 123
0x3e17 123
0x3e1f 123
0x3e3c 1__
0x3e42 1__
0x3e91 123
0x3e92 1__
0x3e93 _23
0x3ea2 123
0x3ed0 123
0x3edd 1__
0x3edf 1__
0x3eec 1__
0x3f3b _23
0x3f4b _2_
0x3f74 __3
0x3f96 _2_
0x3f99 123
0x3ffd _2_
0x4043 __3
0x4063 _23
0x409d _23
0x40a6 _2_
0x40d7 123
0x40f8 123
0x4127 123
0x41d3 _2_
0x4235 _23
0x4260 __3
0x4263 1__
0x42ef _2_
0x42f5 __3
0x430d 123 setTimeout(?, t=frame count, a=args (to p/e), p=callback function id, e=callback block)

Set either p or e, not both. Return a value > 0 to re-arm the timeout.

0x4350 1__
0x435e _23
0x4365 1__
0x4383 123
0x43a0 123
0x43d6 _23
0x440f _23
0x4456 1__
0x44bc __3
0x44bf _23
0x44cd _23
0x44d3 1__
0x4561 123
0x45a9 1__
0x4631 123
0x4666 1__
0x4674 1__
0x46af 1__
0x46b4 __3
0x472e __3
0x4759 _23
0x47da 1__
0x48b3 123
0x48f0 1__
0x490f _23
0x4963 __3
0x498d 1__
0x4a0a __3
0x4a16 _23
0x4a1c 1__
0x4a25 __3
0x4a8d _23
0x4ab1 _2_
0x4ae0 1__
0x4ae5 123 Load background palette file (p=3x palette file ids)
0x4b15 12_
0x4b39 _23
0x4b41 123
0x4b57 _23
0x4bef 1__
0x4c4d 123
0x4cbb 123
0x4ccd 123
0x4cd8 __3
0x4cdd _23
0x4d12 __3
0x4d4d 123 OBJ palette related(?, p=?)
0x4d88 _23
0x4dab 1__
0x4ddf _23
0x4e22 _23
0x4e30 123
0x4e69 _23
0x4ebf _23
0x4ec6 1__
0x4ec9 __3
0x4ed4 123
0x4f5c 12_
0x4fd1 _23
0x501b _2_
0x5153 __3
0x515d _23
0x517b _2_
0x522c _2_
0x5234 __3
0x5276 123
0x5292 12_
0x52bf _23
0x5335 __3
0x5365 123
0x53bf 123
0x53f4 1__
0x5460 _2_
0x546c _2_
0x546d __3
0x5470 _2_
0x54c1 _23
0x54df _23
0x54f4 1__
0x5512 1__
0x5517 _23
0x5534 1__
0x554b 123
0x556a 1__
0x55a3 1__
0x55c2 123
0x55c5 _2_
0x55e9 __3
0x5610 1__
0x5645 _2_
0x5695 1__
0x5699 1__
0x56ad _2_
0x56dc _2_
0x571d _2_
0x5734 __3
0x5764 1__
0x577e __3
0x582b __3
0x5844 123
0x5856 __3
0x585f __3
0x58d7 123
0x5933 123
0x5941 _23
0x5986 _23
0x598e 1__
0x59a8 1__
0x59d9 1__
0x5a23 1__
0x5a36 123
0x5a7d 1__
0x5b01 123
0x5c0b 123
0x5c70 1__
0x5c9e 123 With 0 parameters: Back up stat & world structs (see RAM map). With 1+ parameters: Back up specific pointers from the stat & world structs.
0x5cbb __3
0x5cc4 _23
0x5ccc 123
0x5d02 __3
0x5d10 1__
0x5d5f __3
0x5d66 1__
0x5d74 123
0x5da5 _2_
0x5de8 1__
0x5e27 _2_
0x5e34 1__
0x5e6e __3
0x5e71 1__
0x5f5f 123
0x5f70 __3
0x5f89 1__
0x5fce 1__
0x5fda _23
0x5ff4 1__
0x6057 123
0x6095 1__
0x60b7 1__
0x60fb _23
0x60fd __3
0x610a _2_
0x6116 1__
0x612e 123
0x6131 1__
0x6145 1__
0x619c 123
0x61a0 _23 Solar Bank interest rate calcuation
0x61a3 1__
0x6205 1__
0x6206 123
0x6219 1__
0x6255 1__
0x6273 _23
0x6299 __3
0x62aa _23
0x62bc 12_
0x62c5 __3
0x62eb __3
0x6367 _2_
0x6389 __3
0x6393 1__
0x63ef 1__
0x6414 _23
0x641d _2_
0x6487 123
0x648f __3
0x650b _23 Create password menu
0x654a __3
0x65e1 _23
0x65e2 _23
0x65ee __3
0x6603 1__
0x661e __3
0x6632 1__
0x6676 1__
0x667c 123
0x6688 _2_
0x669e 1__
0x673c 1__
0x6779 __3
0x6790 _23
0x67c8 1__
0x680e _23
0x6866 __3
0x686e 123
0x6913 123
0x6978 12_
0x6979 1__
0x6987 1__
0x6992 1__
0x69cd 123
0x6a0f __3
0x6a37 __3
0x6a8a 1__
0x6aff 123
0x6b24 _23
0x6b25 1__
0x6bee 1__
0x6c19 1__
0x6c37 1__
0x6cbe _23
0x6d54 1__
0x6d69 123
0x6e11 __3
0x6e34 1__
0x6e4e 1__
0x6e7d _23
0x6e80 1__
0x6f85 _23
0x7017 _2_
0x706d _2_
0x70b6 __3
0x70c6 _23
0x7117 _2_
0x71ba _23
0x71c6 _23
0x71e7 _23
0x71e9 1__
0x7202 1__
0x723e _23
0x7245 __3
0x727f 123
0x7300 _23
0x730a _23
0x7314 __3
0x7318 1__
0x7325 1__ int Inventory_GetAmount(i=item_id)
0x7348 _23
0x734c __3
0x738e 1__
0x73fe _23
0x7443 1__
0x744f _23
0x74d9 1__
0x752d 1__
0x7539 123
0x7566 _23
0x7595 1__
0x75af 123
0x75b7 _23
0x75b9 _2_
0x75d0 __3
0x75df 1__
0x7636 123 Loop(a=argument count of callback, r=number of executions, d=data to loop over, e=callback block)

This is complicated, need some examples... keywords "a" and "r" are always required, keyword "d" is optional: if provided, the loop behaves like a "for each" loop over the provided data, if not provided it behaves like a "for" loop between 0 and r.

0x7653 1__
0x7659 123
0x76f4 1__
0x773f 1__
0x774b 1__
0x775d 1__
0x778b 123
0x779f 123
0x7806 _23
0x7843 _23
0x7844 __3
0x789e __3
0x78c9 _2_
0x78ee 123
0x7905 __3
0x7923 1__
0x7935 123 InitArray(indexed-ptr, values...)

Copies values into the indexed-ptr. Partial writes are supported (you can specify less values than the size of the indexed-ptr).

0x794c 123
0x7957 1__
0x7974 _23
0x7978 __3 Load player's selected region when loading a save file
0x7999 _2_
0x79b7 123
0x79ec 123
0x7a0a _23
0x7a25 _23
0x7a27 123 Video_LoadTileMap(d=file id, t=type, n=layer count, i=layer indices, c=layer IDs)

d: Tile map file ID
t: Type, how layers are assigned to GBA background layers: 0=BG0, 1=BG2+BG3, 2=BG3, 3=BG1, 4=BG1+BG3, 5=BG2+BG1, 6=BG2+BG3=BG1, else=BG2 but invisible in REG_DISPCNT)
n: Layer count, how many layers to load. Defaults to 1. For example, t=4 and n=1 would load only BG1, t=4 and n=2 would load BG1 and BG3.
i: Layer indicies: Specifies which layers to load from the tile map file, via indices into its layerDefinition array.
c: Layer IDs: Specifies which layers to load from the tile map file, by referencing the TileMapLayer.id field
Precedence for layer selection: keyword i, else keyword c, else defaults to [0, 1, 2].
If the tile map file contains a tile set, it will also be loaded into VRAM as well.

0x7a75 123
0x7a77 123
0x7a82 _23
0x7b7d _2_
0x7b9f 12_
0x7bbc __3
0x7c56 __3
0x7c62 _23
0x7c9b 1__
0x7ca2 __3
0x7ce7 _23
0x7cea 1__
0x7cfc 1__
0x7d38 1__
0x7d7c 1__
0x7d90 _23
0x7d9e 1__
0x7ddf 1__
0x7df5 1__
0x7e33 123
0x7e73 _23
0x7eba 12_
0x7f44 123
0x7f5e 123
0x7f67 123
0x7f87 __3
0x7fdd __3
0x7fed 1__
0x800c _2_
0x806a 1__
0x8071 123
0x8089 123 Map_SpawnLoadingZoneIndicator(n=loading_zone_id)
0x80e2 __3
0x80e3 1__
0x814c _23
0x8153 123
0x815c _23
0x8192 __3
0x819c 1__
0x81c4 123
0x81c7 __3
0x820b _23
0x8211 1__
0x822a 1__
0x827a _23
0x82b3 _23
0x82b7 _23
0x82c8 _23
0x8337 _23
0x839b 1__
0x83b2 _23
0x83e5 _2_
0x83e7 _23
0x83f9 1__ Textbox_CloseChoices(m=?)
0x8400 _23
0x8459 _23
0x84cf __3
0x852d __3
0x85c3 __3
0x8602 _23
0x86f3 _23
0x8779 1__
0x877f _23
0x87ad 1__
0x87e4 123
0x87fe _2_
0x883a _23
0x886b 1__
0x8872 1__
0x8894 _2_
0x889d 1__
0x88b7 _2_
0x8918 _23
0x893c __3
0x8944 __3
0x8954 _23
0x898d _23
0x89c6 _23
0x8a05 1__
0x8a21 _2_
0x8a51 1__
0x8aab 123
0x8af6 _23
0x8b1e __3
0x8b67 123
0x8b8e _2_
0x8c35 _2_
0x8cc7 _2_
0x8cf4 1__
0x8cfe _2_
0x8d2d _2_
0x8d5c 123
0x8d63 __3
0x8d76 __3
0x8dd9 1__
0x8df9 1__
0x8e2f 1__
0x8e6a 1__
0x8e9f _2_
0x8ea3 _23
0x8ec8 _2_
0x8ecd _23
0x8f1e 1__
0x8f3f 1__
0x8f41 123
0x8fa3 _23
0x8fcc __3
0x904b _23
0x9053 123
0x9066 __3
0x906f 1__
0x9079 __3
0x90b4 123
0x90bd 1__
0x9129 __3
0x9146 123
0x917f __3
0x919e 1__
0x91a0 1__
0x920f _2_
0x9276 1__ Textbox_Confirm(?, m=?, r=string, p=callback)

p1 in callback = answer

0x9284 _23
0x92be _23
0x92ed _2_
0x930f 123
0x9311 123
0x933c 123
0x9386 _2_
0x93dd 1__
0x94b4 1__
0x94d9 12_
0x94eb _2_
0x9519 123
0x9531 _23
0x95a8 123
0x95f8 123
0x9671 1__
0x96cd __3
0x9700 123
0x975e __3
0x9763 123
0x9769 123
0x9791 1__
0x980b _2_
0x9817 _23
0x9836 1__
0x983a _2_
0x9882 __3
0x9898 1__
0x98cb __3
0x98d8 __3
0x98ec _23
0x997b _23
0x99ca 123
0x99f8 _23
0x99fa 123
0x9a9f 12_
0x9ac8 _23
0x9ae3 1__
0x9b3e __3
0x9bc7 _23
0x9c0c 1__
0x9c24 __3
0x9c2c __3
0x9c3f _23
0x9cc2 __3
0x9cf3 1__
0x9d20 1__
0x9dfe _23
0x9e27 1__
0x9e41 1__
0x9e8b 123
0x9e8d _23
0x9ec0 12_
0x9f1b __3
0x9f67 1__
0x9f6b 1__
0x9fb7 123
0x9ffd _23
0xa046 __3
0xa062 _2_
0xa06f 1__
0xa0a6 _2_
0xa10a __3
0xa133 _2_
0xa169 1__
0xa16f 123
0xa1af 1__
0xa1d7 12_
0xa222 123
0xa225 __3
0xa23d 1__
0xa285 _2_
0xa288 _2_
0xa2db __3
0xa2e1 _23
0xa2e4 123
0xa301 123
0xa39f 123
0xa3aa 123
0xa3b3 123
0xa46e __3
0xa4fc 123
0xa58d 1__
0xa5d0 1__
0xa5e2 1__
0xa61c 123
0xa628 123
0xa630 1__
0xa67b __3
0xa687 _2_
0xa69d __3
0xa72a 1__
0xa76d _23
0xa7ce _23
0xa7d0 1__
0xa7f9 1__
0xa801 __3
0xa864 _23
0xa874 1__
0xa8cb __3
0xa8f1 123
0xa8f4 1__
0xa92e __3
0xa939 1__
0xa995 _23
0xa99f 123
0xa9bc 1__
0xaa62 _23
0xaa65 _2_
0xab3c 123 TextBox_SetVar(n, value) - Access via <VAR=n> tags in strings
0xab41 123
0xab4e _2_
0xab8e 123
0xab9c 123
0xac17 1__
0xac78 1__
0xac8c 1__
0xac98 12_
0xaca8 1__
0xace3 _23
0xad03 _23
0xadb3 1__
0xadb6 123
0xadd2 123 TextBox_EnableAutoAdvance(?, delay_frames)
0xae32 1__
0xae36 1__
0xae3a 123
0xae4e _23
0xae71 123
0xae8b 1__
0xaeb2 123
0xaecc 1__
0xaee2 1__
0xaf10 __3
0xaf33 _23
0xaf43 _23
0xaf7a 1__
0xaf8e _23
0xb002 1__
0xb005 _23
0xb00f 1__
0xb02f 1__
0xb06e __3
0xb0aa __3
0xb0b4 _2_
0xb0bc _23
0xb0ce __3
0xb0d0 __3
0xb0ff 1__
0xb164 _23
0xb189 _2_
0xb1c4 123
0xb1f3 __3
0xb294 _2_
0xb369 1__ Carmilla: Spawn mirror block
0xb3d1 _23
0xb3d7 123
0xb3e4 1__
0xb3e7 1__
0xb3fe 1__
0xb426 _23
0xb45f _23
0xb47e _23
0xb4b4 123
0xb50d 123
0xb511 1__
0xb55a 123
0xb5bd 1__
0xb603 _23
0xb639 123 Unknown? Must be called for enemy spawning to work
0xb683 _23
0xb6ce 123
0xb6eb 1__
0xb6ff 12_
0xb75d __3
0xb762 1__
0xb76c _23
0xb838 123
0xb83e _23
0xb85f _2_
0xb86d 1__
0xb87b 123
0xb88c _2_
0xb8b9 123
0xb8c7 123
0xb8fe 1__
0xba1c 1__
0xba1d __3
0xba36 _2_
0xba4b _2_
0xbb01 123
0xbb34 _23
0xbbaa 123
0xbc12 __3
0xbc5e 1__
0xbcc8 1__
0xbcd2 __3
0xbd3d __3
0xbd45 1__
0xbd6b 1__
0xbd74 _2_
0xbe46 12_
0xbec2 123
0xbef5 123
0xbf96 1__
0xc015 _23
0xc036 __3
0xc077 __3
0xc0b0 123 Camera_Create()
0xc12a 123
0xc12d _23
0xc15e 123
0xc1f2 123
0xc233 _23
0xc23d 1__
0xc272 __3
0xc281 __3
0xc347 _2_
0xc358 1__
0xc3a7 __3
0xc3bc _23
0xc419 123
0xc438 123
0xc46e _23
0xc4d9 1__
0xc52a __3
0xc551 1__
0xc556 123
0xc5bd __3
0xc5d8 _2_
0xc60f 123
0xc673 _23
0xc6aa 123 Textbox_CloseBox(m=?)

Without ‘m’ this is a nop?

0xc765 _23
0xc783 _2_
0xc795 1__
0xc7dc _23
0xc814 _2_
0xc8d1 __3
0xc913 __3
0xc946 _23
0xc959 1__
0xc9bc _2_
0xc9c1 1__
0xc9f1 1__
0xca0a 1__
0xca3d 123
0xca53 1__
0xca73 _2_
0xca7d 123
0xca93 1__
0xca9a __3
0xcabd 1__
0xcaee 123
0xcafe _23
0xcb19 __3
0xcb30 123
0xcbb0 _23
0xcc28 123
0xcc36 __3
0xcc8d __3
0xccc4 1__
0xccd3 _23
0xccd9 _23
0xcd57 _2_
0xce28 _2_
0xcece 1__ bool Inventory_HasGunPart(p=type, i=index)

index: 0=lens, 1=frame, 2=grenades (always returns false), 3=battery

0xced9 _23
0xcf43 1__
0xcf58 _23
0xcf79 _2_
0xcf82 _2_
0xcfd2 __3
0xd017 __3
0xd056 1__
0xd070 1__
0xd0c3 _23
0xd0c7 123
0xd0ce 123
0xd0ee 1__
0xd169 123
0xd179 1__
0xd1c0 _23
0xd21e 1__
0xd229 _2_
0xd24b _23
0xd25f _23
0xd285 _23
0xd317 1__
0xd37f _2_
0xd3a9 _23
0xd3da 1__
0xd401 123
0xd40e _23
0xd42e 1__
0xd438 _2_
0xd455 1__
0xd459 __3
0xd4b5 _2_
0xd4df 1__
0xd4e3 123
0xd53d _23
0xd562 _23
0xd5ae 1__
0xd60a 1__
0xd6d4 1__
0xd6f7 123
0xd774 _23
0xd7f4 _23
0xd826 __3
0xd852 123
0xd854 _23
0xd8af 1__
0xd8df _2_
0xd916 _23
0xd935 _23
0xd968 __3
0xd972 1_3 Spawn the Count
0xd991 1__
0xd9ae 123
0xd9b5 1__ Give gun part silently (p=part, i=id)

p: lens=0, frame=1, battery=3, 2=???
i=index
For lens: i=type*3+level

0xd9b7 _23
0xd9d3 _23
0xda0b _23
0xda0e __3
0xda19 _23
0xda44 1__
0xda5a 123
0xdaa4 _2_
0xdaeb 1__
0xdb6c _23
0xdb8d __3
0xdc21 123
0xdd0e _23
0xdd91 123
0xddcf 123 Spawn chest?
0xddd0 _23
0xddee _23
0xddf8 123
0xdea2 _23
0xded5 _23
0xdee4 1__
0xdf38 1__
0xdf50 1__
0xdf85 _23
0xdfab _23
0xdfc6 _23
0xdfdc __3
0xe00d __3
0xe019 123
0xe02a 123
0xe02e _23
0xe043 __3
0xe06a _2_
0xe078 1__
0xe083 _23 GiveMagic(m=magic)
0xe0a5 123
0xe0e1 _2_
0xe118 1__
0xe131 _23
0xe14b 12_
0xe18f __3
0xe1c6 123
0xe1fe 1__
0xe212 1__
0xe23f __3
0xe28b 123
0xe33a 1__
0xe3b3 __3
0xe3ee __3
0xe415 1__
0xe417 1__
0xe435 123
0xe4a3 _23
0xe4a6 1__
0xe4b1 123
0xe534 _23
0xe588 1__
0xe68e 1__
0xe6ca _23
0xe6f2 123
0xe70e _2_
0xe756 _2_
0xe77c _23
0xe7bc __3
0xe7ca 123
0xe832 __3
0xe881 __3
0xe95a 1__
0xe95e 1__
0xe990 _2_
0xe9d3 123
0xe9da _2_
0xe9e2 _23
0xea00 _23
0xea96 _23
0xeaa0 1__
0xeaac 123
0xeaaf 123
0xeab4 _23
0xeb42 _23
0xebf1 __3
0xebff _23
0xec1f 123
0xec2a 123
0xec35 1__
0xec5b 123
0xec71 __3
0xec74 1__
0xec7d 1__
0xec96 _2_
0xed07 _2_
0xed13 1__
0xed1f _23
0xed2e _23
0xedda 1__
0xede2 123
0xee18 123
0xee34 1__
0xef19 123
0xef1f __3
0xef66 123
0xef6f _23
0xef7c 1__
0xefb0 1__
0xefbf 1__
0xefd1 _23
0xefe6 123
0xf00c 1__ UI_CreateItemNotification(p=position, t=sprite?)
0xf024 __3
0xf03c 1__
0xf04a 123
0xf04b 123
0xf083 __3
0xf0c3 1__
0xf0cc 123
0xf11c _23
0xf156 _23
0xf159 1__
0xf1f9 _23
0xf200 _23
0xf223 1__
0xf246 __3
0xf272 1__
0xf2af 1__
0xf2b3 1__
0xf2d6 1__
0xf2f7 1__
0xf31a __3
0xf33f _2_
0xf341 123
0xf3a3 __3
0xf3e4 __3
0xf404 123
0xf41a _23
0xf426 __3
0xf5eb 123
0xf5f2 1__
0xf61b 1__
0xf639 __3
0xf661 _23
0xf6ad 1__
0xf6cf __3
0xf6d3 __3
0xf7a7 1__
0xf836 _23
0xf86e __3
0xf8b1 1__
0xf8be _23
0xf8d7 1__
0xf982 _2_
0xf993 _23
0xf9d7 __3
0xf9f1 _2_
0xfa5d 123
0xfb4a __3
0xfb53 _2_
0xfb6b 1__
0xfb8c _23
0xfbc1 123
0xfbe5 _2_
0xfc96 __3
0xfcd9 __3
0xfd12 _2_
0xfd59 1__
0xfd6b 123
0xfd86 _23
0xfdd0 1__
0xfe36 1__
0xfe3f __3
0xfe88 __3
0xfe92 __3
0xfea2 __3
0xfebb 123
0xfee0 123
0xfee1 1__
0xfef2 _2_
0xff7f 1__