Start snake_vr/sna_init.c
For now it's copy-pasted from snake/sna_init.c, but once it's all matched, we'll be able to diff those two files and decide how to get rid of the duplication.
This commit is contained in:
parent
639c270236
commit
8167c12fba
|
|
@ -1,8 +1,8 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_8005145C
|
||||
snake_vr_sna_init_8005145C:
|
||||
xdef sna_800515BC
|
||||
sna_800515BC:
|
||||
dw 0x27BDFFD0 ; 8005145C
|
||||
dw 0xAFB10014 ; 80051460
|
||||
dw 0x00808821 ; 80051464
|
||||
|
|
@ -1,594 +0,0 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef sna_NewSnake_8005B650
|
||||
sna_NewSnake_8005B650:
|
||||
dw 0x27BDFFA8 ; 8005AB30
|
||||
dw 0xAFB00030 ; 8005AB34
|
||||
dw 0x00808021 ; 8005AB38
|
||||
dw 0xAFB10034 ; 8005AB3C
|
||||
dw 0x00A08821 ; 8005AB40
|
||||
dw 0x24040005 ; 8005AB44
|
||||
dw 0x24050A70 ; 8005AB48
|
||||
dw 0xAFBF0050 ; 8005AB4C
|
||||
dw 0xAFB7004C ; 8005AB50
|
||||
dw 0xAFB60048 ; 8005AB54
|
||||
dw 0xAFB50044 ; 8005AB58
|
||||
dw 0xAFB40040 ; 8005AB5C
|
||||
dw 0xAFB3003C ; 8005AB60
|
||||
dw 0x0C0053FA ; 8005AB64
|
||||
dw 0xAFB20038 ; 8005AB68
|
||||
dw 0x00409021 ; 8005AB6C
|
||||
dw 0x12400230 ; 8005AB70
|
||||
dw 0x3C058006 ; 8005AB74
|
||||
dw 0x02402021 ; 8005AB78
|
||||
dw 0x24A5A3D0 ; 8005AB7C
|
||||
dw 0x3C068006 ; 8005AB80
|
||||
dw 0x24C6AA24 ; 8005AB84
|
||||
dw 0x3C078001 ; 8005AB88
|
||||
dw 0x0C005414 ; 8005AB8C
|
||||
dw 0x24E72428 ; 8005AB90
|
||||
dw 0x26530020 ; 8005AB94
|
||||
dw 0x02602021 ; 8005AB98
|
||||
dw 0x02002821 ; 8005AB9C
|
||||
dw 0x0C0096B3 ; 8005ABA0
|
||||
dw 0x02203021 ; 8005ABA4
|
||||
dw 0x0440021B ; 8005ABA8
|
||||
dw 0x2402FFFF ; 8005ABAC
|
||||
dw 0x0C0082A6 ; 8005ABB0
|
||||
dw 0x24040070 ; 8005ABB4
|
||||
dw 0x24040064 ; 8005ABB8
|
||||
dw 0x0C0082A6 ; 8005ABBC
|
||||
dw 0x00408021 ; 8005ABC0
|
||||
dw 0x02602021 ; 8005ABC4
|
||||
dw 0x02002821 ; 8005ABC8
|
||||
dw 0x0C0098BC ; 8005ABCC
|
||||
dw 0x00403021 ; 8005ABD0
|
||||
dw 0x02602021 ; 8005ABD4
|
||||
dw 0x00002821 ; 8005ABD8
|
||||
dw 0x240601C2 ; 8005ABDC
|
||||
dw 0x0C0098D7 ; 8005ABE0
|
||||
dw 0x00C03821 ; 8005ABE4
|
||||
dw 0x24020001 ; 8005ABE8
|
||||
dw 0xA2620059 ; 8005ABEC
|
||||
dw 0x02602021 ; 8005ABF0
|
||||
dw 0x0C0098DB ; 8005ABF4
|
||||
dw 0x00402821 ; 8005ABF8
|
||||
dw 0x0C00990E ; 8005ABFC
|
||||
dw 0x02602021 ; 8005AC00
|
||||
dw 0x3415992D ; 8005AC04
|
||||
dw 0x2404006D ; 8005AC08
|
||||
dw 0x0C0082A6 ; 8005AC0C
|
||||
dw 0x2654009C ; 8005AC10
|
||||
dw 0x10400006 ; 8005AC14
|
||||
dw 0x00000000 ; 8005AC18
|
||||
dw 0x0C0082F5 ; 8005AC1C
|
||||
dw 0x00000000 ; 8005AC20
|
||||
dw 0x0C0082C6 ; 8005AC24
|
||||
dw 0x00402021 ; 8005AC28
|
||||
dw 0x0040A821 ; 8005AC2C
|
||||
dw 0x02802021 ; 8005AC30
|
||||
dw 0x02A02821 ; 8005AC34
|
||||
dw 0x2406032D ; 8005AC38
|
||||
dw 0x0C00D2C5 ; 8005AC3C
|
||||
dw 0x3407992D ; 8005AC40
|
||||
dw 0x0C00D36C ; 8005AC44
|
||||
dw 0x02802021 ; 8005AC48
|
||||
dw 0x02802021 ; 8005AC4C
|
||||
dw 0x26450180 ; 8005AC50
|
||||
dw 0x3406992D ; 8005AC54
|
||||
dw 0x264701D0 ; 8005AC58
|
||||
dw 0x26420434 ; 8005AC5C
|
||||
dw 0xAFA20010 ; 8005AC60
|
||||
dw 0x26420698 ; 8005AC64
|
||||
dw 0xAFB30014 ; 8005AC68
|
||||
dw 0x0C00D401 ; 8005AC6C
|
||||
dw 0xAFA20018 ; 8005AC70
|
||||
dw 0x02802021 ; 8005AC74
|
||||
dw 0x0C00D350 ; 8005AC78
|
||||
dw 0x26450848 ; 8005AC7C
|
||||
dw 0x3C01800B ; 8005AC80
|
||||
dw 0xAC339654 ; 8005AC84
|
||||
dw 0x3C19800B ; 8005AC88
|
||||
dw 0x27399670 ; 8005AC8C
|
||||
dw 0x8A560023 ; 8005AC90
|
||||
dw 0x9A560020 ; 8005AC94
|
||||
dw 0x8A570027 ; 8005AC98
|
||||
dw 0x9A570024 ; 8005AC9C
|
||||
dw 0xAB360003 ; 8005ACA0
|
||||
dw 0xBB360000 ; 8005ACA4
|
||||
dw 0xAB370007 ; 8005ACA8
|
||||
dw 0xBB370004 ; 8005ACAC
|
||||
dw 0x3C01800B ; 8005ACB0
|
||||
dw 0xAC349680 ; 8005ACB4
|
||||
dw 0x0C013ACD ; 8005ACB8
|
||||
dw 0x02402021 ; 8005ACBC
|
||||
dw 0x24040016 ; 8005ACC0
|
||||
dw 0x24050002 ; 8005ACC4
|
||||
dw 0x00003021 ; 8005ACC8
|
||||
dw 0x2651092C ; 8005ACCC
|
||||
dw 0x02203821 ; 8005ACD0
|
||||
dw 0x0C006E8C ; 8005ACD4
|
||||
dw 0xAFA00010 ; 8005ACD8
|
||||
dw 0x00408021 ; 8005ACDC
|
||||
dw 0x12000007 ; 8005ACE0
|
||||
dw 0x00000000 ; 8005ACE4
|
||||
dw 0x0C00607A ; 8005ACE8
|
||||
dw 0x02002021 ; 8005ACEC
|
||||
dw 0x3C02800B ; 8005ACF0
|
||||
dw 0x8C429610 ; 8005ACF4
|
||||
dw 0x00000000 ; 8005ACF8
|
||||
dw 0xA6020028 ; 8005ACFC
|
||||
dw 0x1200003E ; 8005AD00
|
||||
dw 0x2403FFFF ; 8005AD04
|
||||
dw 0x0C00765B ; 8005AD08
|
||||
dw 0x240408DB ; 8005AD0C
|
||||
dw 0x00402821 ; 8005AD10
|
||||
dw 0x14A00003 ; 8005AD14
|
||||
dw 0xAE450924 ; 8005AD18
|
||||
dw 0x08016B7F ; 8005AD1C
|
||||
dw 0x2403FFFF ; 8005AD20
|
||||
dw 0x240201F4 ; 8005AD24
|
||||
dw 0xA602002E ; 8005AD28
|
||||
dw 0x00004021 ; 8005AD2C
|
||||
dw 0x3C070080 ; 8005AD30
|
||||
dw 0x34E78080 ; 8005AD34
|
||||
dw 0x240A000C ; 8005AD38
|
||||
dw 0x2409003E ; 8005AD3C
|
||||
dw 0x02003021 ; 8005AD40
|
||||
dw 0x8CC20040 ; 8005AD44
|
||||
dw 0x00002021 ; 8005AD48
|
||||
dw 0x2443000E ; 8005AD4C
|
||||
dw 0xAC60FFF6 ; 8005AD50
|
||||
dw 0xAC670002 ; 8005AD54
|
||||
dw 0xAC60000E ; 8005AD58
|
||||
dw 0xAC67001A ; 8005AD5C
|
||||
dw 0xA06AFFF5 ; 8005AD60
|
||||
dw 0xA069FFF9 ; 8005AD64
|
||||
dw 0x94A20004 ; 8005AD68
|
||||
dw 0x00000000 ; 8005AD6C
|
||||
dw 0xA462000C ; 8005AD70
|
||||
dw 0x94A20006 ; 8005AD74
|
||||
dw 0x24840001 ; 8005AD78
|
||||
dw 0xA4620000 ; 8005AD7C
|
||||
dw 0x28820002 ; 8005AD80
|
||||
dw 0x1440FFF2 ; 8005AD84
|
||||
dw 0x24630034 ; 8005AD88
|
||||
dw 0x25080001 ; 8005AD8C
|
||||
dw 0x29020002 ; 8005AD90
|
||||
dw 0x1440FFEB ; 8005AD94
|
||||
dw 0x24C60004 ; 8005AD98
|
||||
dw 0x2402FF9C ; 8005AD9C
|
||||
dw 0xA6220010 ; 8005ADA0
|
||||
dw 0xA6220000 ; 8005ADA4
|
||||
dw 0x2402FED4 ; 8005ADA8
|
||||
dw 0x26230010 ; 8005ADAC
|
||||
dw 0xA622001A ; 8005ADB0
|
||||
dw 0xA4620002 ; 8005ADB4
|
||||
dw 0xA622000A ; 8005ADB8
|
||||
dw 0xA6220002 ; 8005ADBC
|
||||
dw 0x2402012C ; 8005ADC0
|
||||
dw 0xA4620004 ; 8005ADC4
|
||||
dw 0xA6220004 ; 8005ADC8
|
||||
dw 0x2402FCE0 ; 8005ADCC
|
||||
dw 0x240307D0 ; 8005ADD0
|
||||
dw 0xA6220008 ; 8005ADD4
|
||||
dw 0x24020320 ; 8005ADD8
|
||||
dw 0xA623000C ; 8005ADDC
|
||||
dw 0xA6220018 ; 8005ADE0
|
||||
dw 0xA623001C ; 8005ADE4
|
||||
dw 0x8E020024 ; 8005ADE8
|
||||
dw 0x00001821 ; 8005ADEC
|
||||
dw 0x34420100 ; 8005ADF0
|
||||
dw 0xAE020024 ; 8005ADF4
|
||||
dw 0xAE500928 ; 8005ADF8
|
||||
dw 0x04610003 ; 8005ADFC
|
||||
dw 0x3C02800B ; 8005AE00
|
||||
dw 0x08016D06 ; 8005AE04
|
||||
dw 0x2402FFFF ; 8005AE08
|
||||
dw 0x244429F8 ; 8005AE0C
|
||||
dw 0x94820020 ; 8005AE10
|
||||
dw 0x24030003 ; 8005AE14
|
||||
dw 0xA6420A22 ; 8005AE18
|
||||
dw 0x00021400 ; 8005AE1C
|
||||
dw 0x00021403 ; 8005AE20
|
||||
dw 0x1443001F ; 8005AE24
|
||||
dw 0x3C02800A ; 8005AE28
|
||||
dw 0x2442B2D0 ; 8005AE2C
|
||||
dw 0x8483001E ; 8005AE30
|
||||
dw 0x00000000 ; 8005AE34
|
||||
dw 0x24630001 ; 8005AE38
|
||||
dw 0x00031840 ; 8005AE3C
|
||||
dw 0x00621821 ; 8005AE40
|
||||
dw 0x94620000 ; 8005AE44
|
||||
dw 0x9483001E ; 8005AE48
|
||||
dw 0x30420002 ; 8005AE4C
|
||||
dw 0x14400005 ; 8005AE50
|
||||
dw 0x2402FFFF ; 8005AE54
|
||||
dw 0x2462FFFE ; 8005AE58
|
||||
dw 0x2C420003 ; 8005AE5C
|
||||
dw 0x10400002 ; 8005AE60
|
||||
dw 0x2402FFFF ; 8005AE64
|
||||
dw 0xA482001E ; 8005AE68
|
||||
dw 0x3C03800A ; 8005AE6C
|
||||
dw 0x3C02800B ; 8005AE70
|
||||
dw 0x244429F8 ; 8005AE74
|
||||
dw 0x8482001C ; 8005AE78
|
||||
dw 0x2463B2B8 ; 8005AE7C
|
||||
dw 0x24420001 ; 8005AE80
|
||||
dw 0x00021040 ; 8005AE84
|
||||
dw 0x00431021 ; 8005AE88
|
||||
dw 0x94420000 ; 8005AE8C
|
||||
dw 0x00000000 ; 8005AE90
|
||||
dw 0x30420200 ; 8005AE94
|
||||
dw 0x10400002 ; 8005AE98
|
||||
dw 0x2402FFFF ; 8005AE9C
|
||||
dw 0xA482001C ; 8005AEA0
|
||||
dw 0x02402021 ; 8005AEA4
|
||||
dw 0x00002821 ; 8005AEA8
|
||||
dw 0x2410FFFF ; 8005AEAC
|
||||
dw 0x2402FFFE ; 8005AEB0
|
||||
dw 0xAE500844 ; 8005AEB4
|
||||
dw 0x0C014431 ; 8005AEB8
|
||||
dw 0xAE420918 ; 8005AEBC
|
||||
dw 0x02402021 ; 8005AEC0
|
||||
dw 0x00002821 ; 8005AEC4
|
||||
dw 0x0C014517 ; 8005AEC8
|
||||
dw 0xAE5009A4 ; 8005AECC
|
||||
dw 0x3C02800B ; 8005AED0
|
||||
dw 0x84432A14 ; 8005AED4
|
||||
dw 0x240201C2 ; 8005AED8
|
||||
dw 0xA6420A24 ; 8005AEDC
|
||||
dw 0x000310C0 ; 8005AEE0
|
||||
dw 0x00431023 ; 8005AEE4
|
||||
dw 0x00021080 ; 8005AEE8
|
||||
dw 0x3C03800A ; 8005AEEC
|
||||
dw 0x2463CAC4 ; 8005AEF0
|
||||
dw 0x00431021 ; 8005AEF4
|
||||
dw 0xAE4209B0 ; 8005AEF8
|
||||
dw 0x3C02800B ; 8005AEFC
|
||||
dw 0x8A560023 ; 8005AF00
|
||||
dw 0x9A560020 ; 8005AF04
|
||||
dw 0x8A570027 ; 8005AF08
|
||||
dw 0x9A570024 ; 8005AF0C
|
||||
dw 0xAA560A43 ; 8005AF10
|
||||
dw 0xBA560A40 ; 8005AF14
|
||||
dw 0xAA570A47 ; 8005AF18
|
||||
dw 0xBA570A44 ; 8005AF1C
|
||||
dw 0x8A560023 ; 8005AF20
|
||||
dw 0x9A560020 ; 8005AF24
|
||||
dw 0x8A570027 ; 8005AF28
|
||||
dw 0x9A570024 ; 8005AF2C
|
||||
dw 0xAA560A5F ; 8005AF30
|
||||
dw 0xBA560A5C ; 8005AF34
|
||||
dw 0xAA570A63 ; 8005AF38
|
||||
dw 0xBA570A60 ; 8005AF3C
|
||||
dw 0x24595418 ; 8005AF40
|
||||
dw 0x8A560A5F ; 8005AF44
|
||||
dw 0x9A560A5C ; 8005AF48
|
||||
dw 0x8A570A63 ; 8005AF4C
|
||||
dw 0x9A570A60 ; 8005AF50
|
||||
dw 0xAB360003 ; 8005AF54
|
||||
dw 0xBB360000 ; 8005AF58
|
||||
dw 0xAB370007 ; 8005AF5C
|
||||
dw 0xBB370004 ; 8005AF60
|
||||
dw 0x0C0082A6 ; 8005AF64
|
||||
dw 0x2404006F ; 8005AF68
|
||||
dw 0x10400007 ; 8005AF6C
|
||||
dw 0x24021770 ; 8005AF70
|
||||
dw 0x0C0082F5 ; 8005AF74
|
||||
dw 0x00000000 ; 8005AF78
|
||||
dw 0x0C0082C6 ; 8005AF7C
|
||||
dw 0x00402021 ; 8005AF80
|
||||
dw 0xA6420A56 ; 8005AF84
|
||||
dw 0x24021770 ; 8005AF88
|
||||
dw 0xA6420890 ; 8005AF8C
|
||||
dw 0x0C0082A6 ; 8005AF90
|
||||
dw 0x2404006C ; 8005AF94
|
||||
dw 0x10400007 ; 8005AF98
|
||||
dw 0x24020200 ; 8005AF9C
|
||||
dw 0x0C0082F5 ; 8005AFA0
|
||||
dw 0x00000000 ; 8005AFA4
|
||||
dw 0x0C0082C6 ; 8005AFA8
|
||||
dw 0x00402021 ; 8005AFAC
|
||||
dw 0xA6420890 ; 8005AFB0
|
||||
dw 0x24020200 ; 8005AFB4
|
||||
dw 0xA6420892 ; 8005AFB8
|
||||
dw 0x0C0082A6 ; 8005AFBC
|
||||
dw 0x24040072 ; 8005AFC0
|
||||
dw 0x10400007 ; 8005AFC4
|
||||
dw 0x2402FC01 ; 8005AFC8
|
||||
dw 0x0C0082F5 ; 8005AFCC
|
||||
dw 0x00000000 ; 8005AFD0
|
||||
dw 0x0C0082C6 ; 8005AFD4
|
||||
dw 0x00402021 ; 8005AFD8
|
||||
dw 0xA6420892 ; 8005AFDC
|
||||
dw 0x2402FC01 ; 8005AFE0
|
||||
dw 0xA7820904 ; 8005AFE4
|
||||
dw 0x240203FF ; 8005AFE8
|
||||
dw 0xA78208FC ; 8005AFEC
|
||||
dw 0x0C0082A6 ; 8005AFF0
|
||||
dw 0x24040074 ; 8005AFF4
|
||||
dw 0x1040000B ; 8005AFF8
|
||||
dw 0x00000000 ; 8005AFFC
|
||||
dw 0x0C0082F5 ; 8005B000
|
||||
dw 0x00000000 ; 8005B004
|
||||
dw 0x0C0082C6 ; 8005B008
|
||||
dw 0x00402021 ; 8005B00C
|
||||
dw 0xA7820904 ; 8005B010
|
||||
dw 0x0C0082F5 ; 8005B014
|
||||
dw 0x00000000 ; 8005B018
|
||||
dw 0x0C0082C6 ; 8005B01C
|
||||
dw 0x00402021 ; 8005B020
|
||||
dw 0xA78208FC ; 8005B024
|
||||
dw 0xAE500A6C ; 8005B028
|
||||
dw 0x0C0082A6 ; 8005B02C
|
||||
dw 0x24040065 ; 8005B030
|
||||
dw 0x10400006 ; 8005B034
|
||||
dw 0x00000000 ; 8005B038
|
||||
dw 0x0C0082F5 ; 8005B03C
|
||||
dw 0x00000000 ; 8005B040
|
||||
dw 0x0C0082C6 ; 8005B044
|
||||
dw 0x00402021 ; 8005B048
|
||||
dw 0xAE420A6C ; 8005B04C
|
||||
dw 0x86450A22 ; 8005B050
|
||||
dw 0x24020003 ; 8005B054
|
||||
dw 0x14A20016 ; 8005B058
|
||||
dw 0x24040042 ; 8005B05C
|
||||
dw 0x24100002 ; 8005B060
|
||||
dw 0x0C0138CB ; 8005B064
|
||||
dw 0xA6500A22 ; 8005B068
|
||||
dw 0x8E43009C ; 8005B06C
|
||||
dw 0x00000000 ; 8005B070
|
||||
dw 0x8C620028 ; 8005B074
|
||||
dw 0x02402021 ; 8005B078
|
||||
dw 0x34420080 ; 8005B07C
|
||||
dw 0x0C013B23 ; 8005B080
|
||||
dw 0xAC620028 ; 8005B084
|
||||
dw 0x02402021 ; 8005B088
|
||||
dw 0x3C058005 ; 8005B08C
|
||||
dw 0x0C01389B ; 8005B090
|
||||
dw 0x24A53330 ; 8005B094
|
||||
dw 0x02402021 ; 8005B098
|
||||
dw 0x24050002 ; 8005B09C
|
||||
dw 0x3C02800B ; 8005B0A0
|
||||
dw 0x0C013AB2 ; 8005B0A4
|
||||
dw 0xA450546A ; 8005B0A8
|
||||
dw 0x08016C4A ; 8005B0AC
|
||||
dw 0x2650009C ; 8005B0B0
|
||||
dw 0x0C013AB2 ; 8005B0B4
|
||||
dw 0x02402021 ; 8005B0B8
|
||||
dw 0x8E4309A8 ; 8005B0BC
|
||||
dw 0x00000000 ; 8005B0C0
|
||||
dw 0x30630001 ; 8005B0C4
|
||||
dw 0x14600006 ; 8005B0C8
|
||||
dw 0x00408021 ; 8005B0CC
|
||||
dw 0x8E42091C ; 8005B0D0
|
||||
dw 0x00000000 ; 8005B0D4
|
||||
dw 0x30420020 ; 8005B0D8
|
||||
dw 0x10400009 ; 8005B0DC
|
||||
dw 0x3C03800A ; 8005B0E0
|
||||
dw 0x8E4209A4 ; 8005B0E4
|
||||
dw 0x00000000 ; 8005B0E8
|
||||
dw 0x2442FFFE ; 8005B0EC
|
||||
dw 0x2C420003 ; 8005B0F0
|
||||
dw 0x1040000B ; 8005B0F4
|
||||
dw 0x02001021 ; 8005B0F8
|
||||
dw 0x08016C48 ; 8005B0FC
|
||||
dw 0x24100004 ; 8005B100
|
||||
dw 0x86420A22 ; 8005B104
|
||||
dw 0x2463CBDC ; 8005B108
|
||||
dw 0x00021080 ; 8005B10C
|
||||
dw 0x00431021 ; 8005B110
|
||||
dw 0x8C450000 ; 8005B114
|
||||
dw 0x0C01389B ; 8005B118
|
||||
dw 0x02402021 ; 8005B11C
|
||||
dw 0x02001021 ; 8005B120
|
||||
dw 0x2650009C ; 8005B124
|
||||
dw 0x02002021 ; 8005B128
|
||||
dw 0x00402821 ; 8005B12C
|
||||
dw 0x00003021 ; 8005B130
|
||||
dw 0x0C00D374 ; 8005B134
|
||||
dw 0x00C03821 ; 8005B138
|
||||
dw 0x0C00D2DE ; 8005B13C
|
||||
dw 0x02002021 ; 8005B140
|
||||
dw 0x3C02800B ; 8005B144
|
||||
dw 0x2442E220 ; 8005B148
|
||||
dw 0x864300B4 ; 8005B14C
|
||||
dw 0x27B00028 ; 8005B150
|
||||
dw 0xAE4209AC ; 8005B154
|
||||
dw 0x2402028A ; 8005B158
|
||||
dw 0xAE430798 ; 8005B15C
|
||||
dw 0xA6430052 ; 8005B160
|
||||
dw 0x2403012C ; 8005B164
|
||||
dw 0xA7A30028 ; 8005B168
|
||||
dw 0xA6020002 ; 8005B16C
|
||||
dw 0x0C00B547 ; 8005B170
|
||||
dw 0xA6030004 ; 8005B174
|
||||
dw 0x00408821 ; 8005B178
|
||||
dw 0x02202021 ; 8005B17C
|
||||
dw 0x2405009F ; 8005B180
|
||||
dw 0x24060001 ; 8005B184
|
||||
dw 0x02003821 ; 8005B188
|
||||
dw 0x0C00B764 ; 8005B18C
|
||||
dw 0xAE510898 ; 8005B190
|
||||
dw 0x02202021 ; 8005B194
|
||||
dw 0x24050001 ; 8005B198
|
||||
dw 0x2406FFFF ; 8005B19C
|
||||
dw 0x3C10800B ; 8005B1A0
|
||||
dw 0x261029F8 ; 8005B1A4
|
||||
dw 0xAFA00010 ; 8005B1A8
|
||||
dw 0x86070016 ; 8005B1AC
|
||||
dw 0x3C02800B ; 8005B1B0
|
||||
dw 0x24428FF0 ; 8005B1B4
|
||||
dw 0x0C00B77A ; 8005B1B8
|
||||
dw 0xAFA20014 ; 8005B1BC
|
||||
dw 0x02202021 ; 8005B1C0
|
||||
dw 0x00002821 ; 8005B1C4
|
||||
dw 0x00A03021 ; 8005B1C8
|
||||
dw 0x264708F0 ; 8005B1CC
|
||||
dw 0x264208F8 ; 8005B1D0
|
||||
dw 0x0C00B774 ; 8005B1D4
|
||||
dw 0xAFA20010 ; 8005B1D8
|
||||
dw 0x02202021 ; 8005B1DC
|
||||
dw 0x0C00B587 ; 8005B1E0
|
||||
dw 0x26450020 ; 8005B1E4
|
||||
dw 0x96020016 ; 8005B1E8
|
||||
dw 0x3404B05C ; 8005B1EC
|
||||
dw 0x0C00765B ; 8005B1F0
|
||||
dw 0xA6420A1E ; 8005B1F4
|
||||
dw 0x00004021 ; 8005B1F8
|
||||
dw 0x24100009 ; 8005B1FC
|
||||
dw 0x240F002E ; 8005B200
|
||||
dw 0x240A0080 ; 8005B204
|
||||
dw 0x240E00FF ; 8005B208
|
||||
dw 0x240D00A4 ; 8005B20C
|
||||
dw 0x240C012F ; 8005B210
|
||||
dw 0x240B00B0 ; 8005B214
|
||||
dw 0x2643095A ; 8005B218
|
||||
dw 0x00402021 ; 8005B21C
|
||||
dw 0x90860008 ; 8005B220
|
||||
dw 0x90850009 ; 8005B224
|
||||
dw 0x24C90030 ; 8005B228
|
||||
dw 0x24A7000C ; 8005B22C
|
||||
dw 0xA070FFF5 ; 8005B230
|
||||
dw 0xA06FFFF9 ; 8005B234
|
||||
dw 0xA06AFFF6 ; 8005B238
|
||||
dw 0xA06AFFF7 ; 8005B23C
|
||||
dw 0xA06AFFF8 ; 8005B240
|
||||
dw 0xA46EFFFA ; 8005B244
|
||||
dw 0xA46DFFFC ; 8005B248
|
||||
dw 0xA46C0002 ; 8005B24C
|
||||
dw 0xA46D0004 ; 8005B250
|
||||
dw 0xA46E000A ; 8005B254
|
||||
dw 0xA46B000C ; 8005B258
|
||||
dw 0xA46C0012 ; 8005B25C
|
||||
dw 0xA46B0014 ; 8005B260
|
||||
dw 0xA066FFFE ; 8005B264
|
||||
dw 0xA065FFFF ; 8005B268
|
||||
dw 0xA0690006 ; 8005B26C
|
||||
dw 0xA0650007 ; 8005B270
|
||||
dw 0xA066000E ; 8005B274
|
||||
dw 0xA067000F ; 8005B278
|
||||
dw 0xA0690016 ; 8005B27C
|
||||
dw 0xA0670017 ; 8005B280
|
||||
dw 0x94820004 ; 8005B284
|
||||
dw 0x00000000 ; 8005B288
|
||||
dw 0xA4620008 ; 8005B28C
|
||||
dw 0x94820006 ; 8005B290
|
||||
dw 0x25080001 ; 8005B294
|
||||
dw 0xA4620000 ; 8005B298
|
||||
dw 0x29020002 ; 8005B29C
|
||||
dw 0x1440FFE3 ; 8005B2A0
|
||||
dw 0x24630028 ; 8005B2A4
|
||||
dw 0x02602021 ; 8005B2A8
|
||||
dw 0x02802821 ; 8005B2AC
|
||||
dw 0x24020006 ; 8005B2B0
|
||||
dw 0xA7A20022 ; 8005B2B4
|
||||
dw 0x2402000C ; 8005B2B8
|
||||
dw 0xA7A20024 ; 8005B2BC
|
||||
dw 0x2402000F ; 8005B2C0
|
||||
dw 0xA7A20026 ; 8005B2C4
|
||||
dw 0x2642088C ; 8005B2C8
|
||||
dw 0xA7A00020 ; 8005B2CC
|
||||
dw 0xAFA20010 ; 8005B2D0
|
||||
dw 0x97A60022 ; 8005B2D4
|
||||
dw 0x97A20020 ; 8005B2D8
|
||||
dw 0x97A70026 ; 8005B2DC
|
||||
dw 0x00063400 ; 8005B2E0
|
||||
dw 0x00463025 ; 8005B2E4
|
||||
dw 0x97A20024 ; 8005B2E8
|
||||
dw 0x00073C00 ; 8005B2EC
|
||||
dw 0x0C017E0A ; 8005B2F0
|
||||
dw 0x00473825 ; 8005B2F4
|
||||
dw 0x2404000F ; 8005B2F8
|
||||
dw 0x3C03800C ; 8005B2FC
|
||||
dw 0x2463BCC0 ; 8005B300
|
||||
dw 0x2463003C ; 8005B304
|
||||
dw 0xAE420888 ; 8005B308
|
||||
dw 0x3C01800B ; 8005B30C
|
||||
dw 0xAC20967C ; 8005B310
|
||||
dw 0xAF800900 ; 8005B314
|
||||
dw 0xAC600000 ; 8005B318
|
||||
dw 0x2484FFFF ; 8005B31C
|
||||
dw 0x0481FFFD ; 8005B320
|
||||
dw 0x2463FFFC ; 8005B324
|
||||
dw 0x3C02800C ; 8005B328
|
||||
dw 0x2443BD08 ; 8005B32C
|
||||
dw 0x00002021 ; 8005B330
|
||||
dw 0x24050006 ; 8005B334
|
||||
dw 0x3C01800C ; 8005B338
|
||||
dw 0xAC20BCB8 ; 8005B33C
|
||||
dw 0x3C01800C ; 8005B340
|
||||
dw 0xAC20BD00 ; 8005B344
|
||||
dw 0x24840001 ; 8005B348
|
||||
dw 0xAC650000 ; 8005B34C
|
||||
dw 0xAC600004 ; 8005B350
|
||||
dw 0x28820010 ; 8005B354
|
||||
dw 0x1440FFFB ; 8005B358
|
||||
dw 0x24630010 ; 8005B35C
|
||||
dw 0x3C02800C ; 8005B360
|
||||
dw 0x2443BE08 ; 8005B364
|
||||
dw 0x00002021 ; 8005B368
|
||||
dw 0x24050005 ; 8005B36C
|
||||
dw 0x3C01800A ; 8005B370
|
||||
dw 0xAC20D088 ; 8005B374
|
||||
dw 0x3C01800A ; 8005B378
|
||||
dw 0xAC20D080 ; 8005B37C
|
||||
dw 0x24840001 ; 8005B380
|
||||
dw 0xAC650000 ; 8005B384
|
||||
dw 0xAC600004 ; 8005B388
|
||||
dw 0x28820008 ; 8005B38C
|
||||
dw 0x1440FFFB ; 8005B390
|
||||
dw 0x24630010 ; 8005B394
|
||||
dw 0x2404003F ; 8005B398
|
||||
dw 0x3C02800C ; 8005B39C
|
||||
dw 0x2442BC58 ; 8005B3A0
|
||||
dw 0x00441821 ; 8005B3A4
|
||||
dw 0x3C02800A ; 8005B3A8
|
||||
dw 0x3C01800A ; 8005B3AC
|
||||
dw 0xAC20D094 ; 8005B3B0
|
||||
dw 0x3C01800A ; 8005B3B4
|
||||
dw 0xAC20D098 ; 8005B3B8
|
||||
dw 0x3C01800A ; 8005B3BC
|
||||
dw 0xAC20D09C ; 8005B3C0
|
||||
dw 0xAC40D0C0 ; 8005B3C4
|
||||
dw 0x3C01800A ; 8005B3C8
|
||||
dw 0xAC20D0C4 ; 8005B3CC
|
||||
dw 0x3C01800A ; 8005B3D0
|
||||
dw 0xAC20D0C8 ; 8005B3D4
|
||||
dw 0x3C01800C ; 8005B3D8
|
||||
dw 0xAC20BE90 ; 8005B3DC
|
||||
dw 0xA0600000 ; 8005B3E0
|
||||
dw 0x2484FFFF ; 8005B3E4
|
||||
dw 0x0481FFFD ; 8005B3E8
|
||||
dw 0x2463FFFF ; 8005B3EC
|
||||
dw 0x24027693 ; 8005B3F0
|
||||
dw 0x3C01800A ; 8005B3F4
|
||||
dw 0xAC20CFF8 ; 8005B3F8
|
||||
dw 0xAF8008F4 ; 8005B3FC
|
||||
dw 0x16A20005 ; 8005B400
|
||||
dw 0x00001021 ; 8005B404
|
||||
dw 0x02402021 ; 8005B408
|
||||
dw 0x0C0138DB ; 8005B40C
|
||||
dw 0x3C051000 ; 8005B410
|
||||
dw 0x00001021 ; 8005B414
|
||||
dw 0x04400004 ; 8005B418
|
||||
dw 0x02401021 ; 8005B41C
|
||||
dw 0xAF9204EC ; 8005B420
|
||||
dw 0x08016D0E ; 8005B424
|
||||
dw 0x00000000 ; 8005B428
|
||||
dw 0x0C005433 ; 8005B42C
|
||||
dw 0x02402021 ; 8005B430
|
||||
dw 0x00001021 ; 8005B434
|
||||
dw 0x8FBF0050 ; 8005B438
|
||||
dw 0x8FB7004C ; 8005B43C
|
||||
dw 0x8FB60048 ; 8005B440
|
||||
dw 0x8FB50044 ; 8005B444
|
||||
dw 0x8FB40040 ; 8005B448
|
||||
dw 0x8FB3003C ; 8005B44C
|
||||
dw 0x8FB20038 ; 8005B450
|
||||
dw 0x8FB10034 ; 8005B454
|
||||
dw 0x8FB00030 ; 8005B458
|
||||
dw 0x03E00008 ; 8005B45C
|
||||
dw 0x27BD0058 ; 8005B460
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_8005A3D0
|
||||
snake_vr_sna_init_8005A3D0:
|
||||
xdef sna_act_8005AD10
|
||||
sna_act_8005AD10:
|
||||
dw 0x27BDFFC0 ; 8005A3D0
|
||||
dw 0xAFB1002C ; 8005A3D4
|
||||
dw 0x00808821 ; 8005A3D8
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_80053330
|
||||
snake_vr_sna_init_80053330:
|
||||
xdef sna_anim_duct_move_80054424
|
||||
sna_anim_duct_move_80054424:
|
||||
dw 0x27BDFFE8 ; 80053330
|
||||
dw 0xAFB00010 ; 80053334
|
||||
dw 0x00808021 ; 80053338
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_8005AA24
|
||||
snake_vr_sna_init_8005AA24:
|
||||
xdef sna_kill_8005B52C
|
||||
sna_kill_8005B52C:
|
||||
dw 0x27BDFFD8 ; 8005AA24
|
||||
dw 0xAFB10014 ; 8005AA28
|
||||
dw 0x00808821 ; 8005AA2C
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_800510C4
|
||||
snake_vr_sna_init_800510C4:
|
||||
xdef sna_weapon_switching_800511BC
|
||||
sna_weapon_switching_800511BC:
|
||||
dw 0x3C02800B ; 800510C4
|
||||
dw 0x84432A14 ; 800510C8
|
||||
dw 0x27BDFFD0 ; 800510CC
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_8004EC8C
|
||||
snake_vr_sna_init_8004EC8C:
|
||||
dw 0x27BDFFE8 ; 8004EC8C
|
||||
dw 0xAFB00010 ; 8004EC90
|
||||
dw 0x00808021 ; 8004EC94
|
||||
dw 0xAFBF0014 ; 8004EC98
|
||||
dw 0x0C0138DB ; 8004EC9C
|
||||
dw 0x24050800 ; 8004ECA0
|
||||
dw 0x3C0401FF ; 8004ECA4
|
||||
dw 0x3484FF20 ; 8004ECA8
|
||||
dw 0x00002821 ; 8004ECAC
|
||||
dw 0x240201CC ; 8004ECB0
|
||||
dw 0x3C03800B ; 8004ECB4
|
||||
dw 0xA6020A24 ; 8004ECB8
|
||||
dw 0x24020001 ; 8004ECBC
|
||||
dw 0xA462546A ; 8004ECC0
|
||||
dw 0x978304E4 ; 8004ECC4
|
||||
dw 0x2402FFFA ; 8004ECC8
|
||||
dw 0xA6020A1C ; 8004ECCC
|
||||
dw 0x24020140 ; 8004ECD0
|
||||
dw 0xA60209D0 ; 8004ECD4
|
||||
dw 0xA60309D4 ; 8004ECD8
|
||||
dw 0x0C021973 ; 8004ECDC
|
||||
dw 0xA60309D8 ; 8004ECE0
|
||||
dw 0x8FBF0014 ; 8004ECE4
|
||||
dw 0x8FB00010 ; 8004ECE8
|
||||
dw 0x03E00008 ; 8004ECEC
|
||||
dw 0x27BD0018 ; 8004ECF0
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
opt c+, at+, e+, n-
|
||||
section .text
|
||||
|
||||
xdef snake_vr_sna_init_80052AC0
|
||||
snake_vr_sna_init_80052AC0:
|
||||
dw 0x03E00008 ; 80052AC0
|
||||
dw 0x00000000 ; 80052AC4
|
||||
|
|
@ -175,131 +175,10 @@
|
|||
; just a guess
|
||||
include "{{OBJ_DIR}}\chara\snake\snake.obj"
|
||||
|
||||
{% if not VR_EXE %}
|
||||
include "{{OBJ_DIR}}\chara\snake\sna_init.obj"
|
||||
|
||||
{% if VR_EXE %}
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EB94.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EC18.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EC8C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004ECF4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004ED4C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_8004EE28.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EE90.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EEF4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004EFC4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F014.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F070.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F124.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F1D0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F260.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F2AC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F2F8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F400.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F4E4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F5C8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F688.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004F8D8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FA30.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\GM_Next_BulName_8004FBA0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\GM_ClearBulName_8004FBE4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\GM_CheckShukanReverse_8004FBF8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FB98.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FBC8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FCF8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FE98.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8004FFAC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80050108.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005018C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800502A8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80050350.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005046C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005056C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800506DC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80050954.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80050968.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80051078.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800510C4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005145C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_idle_8005275C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_crouch_800527DC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_prone_idle_800528BC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_run_8005292C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_prone_move_800529C0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_wall_idle_and_c4_80052A5C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_wall_crouch_80052CCC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80051F60.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800520D4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052240.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052350.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052560.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052714.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005280C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052994.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052AC0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052AC8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052B28.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052CB4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052DDC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80052EE8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_gun_800540D0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_bomb_800541A8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_chokethrow_begin1_80054210.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053198.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053254.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800532C0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053330.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053394.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800533EC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053554.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005361C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053800.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800538E0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053A20.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053AD8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053C38.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80053E44.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800541E4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005427C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005429C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800542FC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80054364.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800543D4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80054888.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80054C88.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80055500.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800556FC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005573C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800557D8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_psg1_80056DDC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_stinger_800570C0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_claymore_80057474.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80056FE8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057198.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057204.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057318.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800573E8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057548.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005792C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057CD0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_anim_grenade_80058470.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80057F9C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800580D8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058320.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058538.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800585A8.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800587AC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058818.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_800588AC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005895C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058A5C.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058AC4.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058AFC.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058E24.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80058F24.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_80059004.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005A3D0.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\snake_vr_sna_init_8005AA24.obj"
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_NewSnake_8005B650.obj"
|
||||
{% else %}
|
||||
include "{{OBJ_DIR}}\chara\snake_vr\sna_init.obj"
|
||||
{% endif %}
|
||||
|
||||
include "{{OBJ_DIR}}\data\sdata\sdata6.obj"
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ def get_obj_funcs(path):
|
|||
pos += 2
|
||||
elif cmd == 52:
|
||||
pos += 2 + 1
|
||||
elif cmd == 54: # "54 : Inc SLD linenum by word X at offset Y"
|
||||
pos += 2 + 2
|
||||
elif cmd == 56:
|
||||
pos += 2 + 4
|
||||
elif cmd == 58:
|
||||
|
|
|
|||
|
|
@ -321,8 +321,6 @@ GV_PAD GV_PadData_8009F0C4 = {0, 0, 0, 0, -1, 0, 0, 0, 0, 0};
|
|||
#define DispEmpty( pActor ) (pActor->field_9A0 = 4)
|
||||
#define SE_KARASHT 4
|
||||
|
||||
#ifndef VR_EXE
|
||||
|
||||
void sub_8004EB74(Actor_SnaInit *pActor) // different in VR
|
||||
{
|
||||
if (GM_Camera_800B77E8.field_22 == 0)
|
||||
|
|
@ -8655,16 +8653,3 @@ GV_ACT *sna_NewSnake_8005B650(int name, int where, int argc, char **argv)
|
|||
sna_800ABBA0 = pActor;
|
||||
return &pActor->field_0_actor;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// some jump table probably
|
||||
const char missing_rdata[] = {0xe4, 0x4f, 0x05, 0x80, 0xd4, 0x4f, 0x05, 0x80, 0x0c, 0x50, 0x05, 0x80, 0x48, 0x50, 0x05, 0x80, 0x94, 0x50, 0x05, 0x80, 0xfc, 0x50, 0x05, 0x80, 0xb4, 0x53, 0x05, 0x80};
|
||||
|
||||
// Add INCLUDE_ASM from asm/chara/snake_vr here?
|
||||
// or start a separate src/chara/snake_vr/sna_init.c?
|
||||
// Try to have a single sna_init.c file (with ifdefs) or two separate files?
|
||||
// src/chara/snake_vr/sna_init.c is similar to snake/sna_init.c, but there are a lot
|
||||
// of differences. Not sure which approach makes more sense.
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,879 @@
|
|||
// FIXME: copy-pasta of snake/sna_init.c
|
||||
|
||||
#include "sna_init.h"
|
||||
#include "chara/snake/afterse.h"
|
||||
#include "libdg/libdg.h"
|
||||
#include "linker.h"
|
||||
#include "Game/map.h"
|
||||
#include "Game/object.h"
|
||||
#include "Kojo/demothrd.h"
|
||||
#include "Game/game.h"
|
||||
#include "Game/linkvarbuf.h"
|
||||
#include "unknown.h"
|
||||
#include "Okajima/blood.h"
|
||||
#include "Bullet/bakudan.h"
|
||||
#include "Bullet/jirai.h"
|
||||
#include "Game/homing_target.h"
|
||||
#include "Game/vibrate.h"
|
||||
#include "psyq.h"
|
||||
#include "Game/camera.h"
|
||||
#include "Weapon/grenade.h"
|
||||
#include "Anime/animeconv/anime.h"
|
||||
#include "libgcl/hash.h"
|
||||
#include "Equip/bodyarm.h"
|
||||
#include "Equip/box.h"
|
||||
#include "Equip/bandana.h"
|
||||
#include "Equip/gasmask.h"
|
||||
#include "Equip/jpegcam.h"
|
||||
#include "Equip/kogaku2.h"
|
||||
#include "Equip/scope.h"
|
||||
#include "Equip/tabako.h"
|
||||
#include "Okajima/d_blood.h"
|
||||
#include "Takabe/goggle.h"
|
||||
#include "Takabe/goggleir.h"
|
||||
#include "Weapon/aam.h"
|
||||
|
||||
extern Sna_E1 e1_800AB7C4;
|
||||
Sna_E1 SECTION(".sdata") e1_800AB7C4;
|
||||
|
||||
extern int dword_800ABBA8;
|
||||
int SECTION(".sbss") dword_800ABBA8;
|
||||
|
||||
extern int gSnaMoveDir_800ABBA4;
|
||||
int SECTION(".sbss") gSnaMoveDir_800ABBA4;
|
||||
|
||||
extern char *dword_800ABBB4;
|
||||
char * SECTION(".sbss") dword_800ABBB4;
|
||||
|
||||
extern CONTROL *GM_PlayerControl_800AB9F4;
|
||||
extern OBJECT *GM_PlayerBody_800ABA20;
|
||||
|
||||
extern SVECTOR *svector_800ABBB8;
|
||||
SVECTOR *SECTION(".sbss") svector_800ABBB8;
|
||||
|
||||
extern int dword_800ABBBC;
|
||||
int SECTION(".sbss") dword_800ABBBC;
|
||||
|
||||
extern int dword_800ABBC0;
|
||||
int SECTION(".sbss") dword_800ABBC0;
|
||||
|
||||
extern Actor_SnaInit *sna_800ABBA0;
|
||||
Actor_SnaInit *SECTION(".sbss") sna_800ABBA0;
|
||||
|
||||
extern int dword_800ABBC4;
|
||||
int SECTION(".sbss") dword_800ABBC4;
|
||||
|
||||
extern SVECTOR *pVec_800ABBC8;
|
||||
SVECTOR *SECTION(".sbss") pVec_800ABBC8;
|
||||
|
||||
extern SVECTOR *pVec_800ABBCC;
|
||||
SVECTOR *SECTION(".sbss") pVec_800ABBCC;
|
||||
|
||||
extern int dword_800ABBD0;
|
||||
int SECTION(".sbss") dword_800ABBD0;
|
||||
|
||||
extern short dword_800ABBDC;
|
||||
short SECTION(".sbss") dword_800ABBDC;
|
||||
|
||||
extern short dword_800ABBD4;
|
||||
short SECTION(".sbss") dword_800ABBD4;
|
||||
|
||||
extern SVECTOR *dword_800ABBB0;
|
||||
SVECTOR * SECTION(".sbss") dword_800ABBB0;
|
||||
|
||||
extern TARGET *GM_BombSeg_800ABBD8; // probably wrong type?
|
||||
TARGET *SECTION(".sbss") GM_BombSeg_800ABBD8;
|
||||
|
||||
extern Actor_SnaInit *sna_800ABBA0;
|
||||
Actor_SnaInit *SECTION(".sbss") sna_800ABBA0;
|
||||
|
||||
extern SVECTOR *dword_800ABBAC;
|
||||
SVECTOR *SECTION(".sbss") dword_800ABBAC;
|
||||
|
||||
extern short GM_WeaponChanged_800AB9D8;
|
||||
extern int GM_AlertMode_800ABA00;
|
||||
extern int GM_GameOverTimer_800AB3D4;
|
||||
extern int GM_GameStatus_800AB3CC;
|
||||
extern SVECTOR DG_ZeroVector_800AB39C;
|
||||
extern PlayerStatusFlag GM_PlayerStatus_800ABA50;
|
||||
extern SVECTOR svector_800AB7FC;
|
||||
extern GM_Camera GM_Camera_800B77E8;
|
||||
extern SVECTOR svector_800AB7D4;
|
||||
extern SVECTOR svector_800AB7DC;
|
||||
extern unsigned short GM_WeaponTypes_8009D580[];
|
||||
extern unsigned short GM_ItemTypes_8009D598[];
|
||||
extern void *dword_8009EEA4[];
|
||||
extern int GV_Time_800AB330;
|
||||
extern int bakudan_count_8009F42C;
|
||||
extern SVECTOR svector_800AB7EC;
|
||||
extern SVECTOR svector_800AB7F4;
|
||||
extern int gSnaMoveDir_800ABBA4;
|
||||
extern int DG_UnDrawFrameCount_800AB380;
|
||||
extern SVECTOR svector_800AB7CC;
|
||||
extern int counter_8009F448;
|
||||
extern const char aSnakeEUC[];
|
||||
extern int dword_800ABA1C;
|
||||
extern int tabako_dword_8009F2C0;
|
||||
extern int dword_800AB9F0;
|
||||
extern SVECTOR GM_PlayerPosition_800ABA10;
|
||||
extern UnkCameraStruct gUnkCameraStruct_800B77B8;
|
||||
extern GV_PAD GV_PadData_800B05C0[4];
|
||||
extern CONTROL *tenage_ctrls_800BDD30[16];
|
||||
extern Jirai_unknown stru_800BDD78[16];
|
||||
extern Jirai_unknown stru_800BDE78[8];
|
||||
extern unsigned char gBulNames_800BDC78[64];
|
||||
extern int dword_8009F440;
|
||||
extern int dword_8009F444;
|
||||
extern int dword_8009F46C[];
|
||||
extern int dword_8009F470;
|
||||
extern int dword_8009F474;
|
||||
extern TARGET *target_800BDF00;
|
||||
extern int dword_800BDD28;
|
||||
extern int tenage_ctrls_count_800BDD70;
|
||||
extern int dword_8009F434;
|
||||
extern short d_800AB9EC_mag_size;
|
||||
extern short d_800ABA2C_ammo;
|
||||
extern SVECTOR svector_800AB7E4;
|
||||
extern void *dword_8009EEB0[];
|
||||
extern void *dword_8009EEB8[];
|
||||
extern int dword_800AB9D4;
|
||||
extern short HzdHeights_8009EEC4[];
|
||||
extern int DG_CurrentGroupID_800AB968;
|
||||
extern int GV_Clock_800AB920;
|
||||
extern char dword_8009EF1C[];
|
||||
extern char dword_8009EF20[];
|
||||
extern TSnakeEquipFuncion gSnakeEquips_8009EF8C[];
|
||||
extern TSnakeActFunction GM_lpfnPlayerActControl_800AB3DC;
|
||||
extern TSnakeActFunction GM_lpfnPlayerActObject2_800AB3E0;
|
||||
extern char dword_8009EEE0[];
|
||||
extern char dword_8009EEE4[];
|
||||
extern char dword_8009EEF0[];
|
||||
extern char dword_8009EEF4[];
|
||||
extern char dword_8009EED4[];
|
||||
extern char dword_8009EED8[];
|
||||
extern short snake_weapon_idx_800BDCBA;
|
||||
extern short snake_mag_size_800BDCB8;
|
||||
extern short snake_weapon_max_ammo_800BDCBC;
|
||||
extern int GM_PlayerAction_800ABA40;
|
||||
|
||||
extern Actor_SnaInit *snainit_actor_800A9424;
|
||||
Actor_SnaInit *snainit_actor_800A9424;
|
||||
|
||||
extern const char aRunMoveCancel[]; // = "run move cancel\n"
|
||||
extern const char aForceStanceCan[]; // = "force stance cancel\n"
|
||||
extern const char aForceActCancel[]; // = "force act cancel\n"
|
||||
extern const char aSnaInitC[]; // = "sna_init.c"
|
||||
|
||||
Sna_E2 e2_8009EC64 = {12u, 82u, 19u, 23u, 24u, 29u, 30u, 12u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009EC70 = {10u, 8u, 17u, 23u, 24u, 27u, 28u, 80u, 106u, 107u, 0u, 0u};
|
||||
Sna_E2 e2_8009EC7C = {11u, 9u, 18u, 23u, 24u, 27u, 28u, 73u, 110u, 111u, 0u, 0u};
|
||||
Sna_E2 e2_8009EC88 = {75u, 77u, 79u, 23u, 24u, 27u, 28u, 75u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009EC94 = {92u, 91u, 93u, 23u, 24u, 29u, 30u, 92u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ECA0 = {97u, 96u, 98u, 101u, 24u, 29u, 30u, 97u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ECAC = {104u, 103u, 19u, 23u, 24u, 29u, 30u, 104u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ECB8 = {63u, 65u, 67u, 68u, 69u, 70u, 71u, 72u, 66u, 123u, 130u, 131u};
|
||||
Sna_E2 e2_8009ECC4 = {61u, 64u, 67u, 68u, 69u, 70u, 71u, 72u, 66u, 123u, 130u, 131u};
|
||||
Sna_E2 e2_8009ECD0 = {62u, 83u, 67u, 68u, 69u, 70u, 71u, 72u, 66u, 123u, 130u, 131u};
|
||||
Sna_E2 e2_8009ECDC = {136u, 136u, 35u, 136u, 36u, 37u, 38u, 39u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ECE8 = {42u, 51u, 35u, 45u, 47u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ECF4 = {5u, 52u, 34u, 46u, 48u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ED00 = {74u, 136u, 136u, 136u, 105u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
|
||||
Sna_E2 e2_8009ED0C = {74u, 136u, 34u, 46u, 81u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ED18 = {43u, 136u, 35u, 136u, 53u, 55u, 49u, 54u, 56u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ED24 = {57u, 136u, 35u, 136u, 58u, 59u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ED30 = {60u, 136u, 35u, 136u, 50u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
Sna_E2 e2_8009ED3C = {44u, 136u, 136u, 136u, 136u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
|
||||
|
||||
Sna_E6 e6_8009ED48[] = {
|
||||
{115u, 133u, 0u, 0u},
|
||||
{112u, 133u, 0u, 0u},
|
||||
{113u, 133u, 0u, 0u},
|
||||
{136u, 136u, 0u, 0u},
|
||||
{114u, 132u, 0u, 0u},
|
||||
{116u, 133u, 0u, 0u},
|
||||
{117u, 133u, 0u, 0u},
|
||||
{118u, 133u, 0u, 0u}
|
||||
};
|
||||
|
||||
// TODO: Why is this in .data despite fitting into .sdata?
|
||||
Sna_E1 SECTION(".data") e7_8009ED68 = {7u, 13u, 4u, 14u, 32u, 119u, 124u, 0u};
|
||||
|
||||
extern Sna_E1 e1_800AB78C;
|
||||
extern Sna_E1 e1_800AB7C4;
|
||||
extern Sna_E1 e1_800AB794;
|
||||
extern Sna_E1 e1_800AB79C;
|
||||
extern Sna_E1 e1_800AB7BC;
|
||||
extern Sna_E1 e1_800AB7AC;
|
||||
extern Sna_E1 e1_800AB7A4;
|
||||
extern Sna_E1 e1_800AB7B4;
|
||||
|
||||
Sna_ActionTable actions_no_weapon_8009ED70 = {
|
||||
&e1_800AB78C, &e2_8009EC64, &e1_800AB7C4, &e2_8009ECB8,
|
||||
&e2_8009ECDC, &e6_8009ED48[0], &e7_8009ED68
|
||||
};
|
||||
|
||||
Sna_ActionTable weapon_actions_8009ED8C[10] = {
|
||||
{&e1_800AB794, &e2_8009EC70, &e1_800AB7C4, &e2_8009ECC4, &e2_8009ECE8, &e6_8009ED48[1], &e7_8009ED68},
|
||||
{&e1_800AB79C, &e2_8009EC7C, &e1_800AB7C4, &e2_8009ECD0, &e2_8009ECF4, &e6_8009ED48[2], &e7_8009ED68},
|
||||
{&e1_800AB7A4, &e2_8009ECAC, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED30, &e6_8009ED48[7], &e7_8009ED68},
|
||||
{&e1_800AB7B4, &e2_8009EC88, &e1_800AB7C4, &e2_8009ECD0, &e2_8009ED0C, &e6_8009ED48[4], &e7_8009ED68},
|
||||
{&e1_800AB79C, &e2_8009EC7C, &e1_800AB7C4, &e2_8009ECD0, &e2_8009ED00, &e6_8009ED48[3], &e7_8009ED68},
|
||||
{&e1_800AB7BC, &e2_8009ECA0, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED24, &e6_8009ED48[6], &e7_8009ED68},
|
||||
{&e1_800AB7AC, &e2_8009EC94, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED18, &e6_8009ED48[5], &e7_8009ED68},
|
||||
{&e1_800AB7A4, &e2_8009ECAC, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED30, &e6_8009ED48[7], &e7_8009ED68},
|
||||
{&e1_800AB7A4, &e2_8009ECAC, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED30, &e6_8009ED48[7], &e7_8009ED68},
|
||||
{&e1_800AB78C, NULL, &e1_800AB7C4, &e2_8009ECB8, &e2_8009ED3C, &e6_8009ED48[3], &e7_8009ED68}};
|
||||
|
||||
void *dword_8009EEA4[] = {
|
||||
sna_anim_idle_8005275C,
|
||||
sna_anim_crouch_800527DC,
|
||||
sna_anim_prone_idle_800528BC
|
||||
};
|
||||
|
||||
void *SECTION(".data") dword_8009EEB0[] = {
|
||||
sna_anim_wall_idle_and_c4_80052A5C,
|
||||
sna_anim_wall_crouch_80052CCC
|
||||
};
|
||||
|
||||
void *dword_8009EEB8[] = {
|
||||
sna_anim_run_8005292C,
|
||||
sna_anim_run_8005292C,
|
||||
sna_anim_prone_move_800529C0
|
||||
};
|
||||
|
||||
short SECTION(".data") HzdHeights_8009EEC4[] = {750, 250, 250, 0};
|
||||
|
||||
short SECTION(".data") dword_8009EECC[] = {1100, 496, 136, 0};
|
||||
|
||||
char SECTION(".data") dword_8009EED4[] = {127, 4, 0, 0};
|
||||
char SECTION(".data") dword_8009EED8[] = {225, 1, 255, 2, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EEE0[] = {127, 6, 0, 0};
|
||||
char SECTION(".data") dword_8009EEE4[] = {225, 1, 255, 4, 225, 2, 75, 8, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EEF0[] = {127, 1, 0, 0};
|
||||
char SECTION(".data") dword_8009EEF4[] = {155, 3, 0, 0};
|
||||
char SECTION(".data") dword_8009EEF8[] = {0, 2, 127, 2, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EF00[] = {140, 4, 80, 6, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EF08[] = {0, 10, 127, 2, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EF10[] = {80, 2, 50, 8, 140, 4, 80, 6, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EF1C[] = {196, 4, 0, 0};
|
||||
char SECTION(".data") dword_8009EF20[] = {148, 4, 0, 0};
|
||||
char SECTION(".data") dword_8009EF24[] = {0, 2, 127, 2, 0, 0, 0, 0};
|
||||
char SECTION(".data") dword_8009EF2C[] = {60, 2, 200, 4, 40, 2, 0, 0};
|
||||
|
||||
typedef struct WeaponCreateEntry
|
||||
{
|
||||
void *mCreateActorFn;
|
||||
void *mStateFn;
|
||||
} WeaponCreateEntry;
|
||||
|
||||
WeaponCreateEntry gSnakeWeapons_8009EF3C[] = {
|
||||
{NULL, sna_anim_chokethrow_begin1_80054210},
|
||||
{NewSOCOM_80065D74, sna_gun_800540D0},
|
||||
{famas_create_80066374, sna_gun_800540D0},
|
||||
{grenade_create_80066A4C, sna_anim_grenade_80058470},
|
||||
{NewRCM_80066FF0, sna_gun_800540D0},
|
||||
{NewAAM_80067480, sna_anim_stinger_800570C0},
|
||||
{mine_init_800677BC, sna_anim_claymore_80057474},
|
||||
{NewBomb_80067B20, sna_bomb_800541A8},
|
||||
{NewStanGrenade_80066A74, sna_anim_grenade_80058470},
|
||||
{NewChaffGrenade_80066AA0, sna_anim_grenade_80058470},
|
||||
{NewRifle_80068214, sna_anim_psg1_80056DDC}};
|
||||
|
||||
TSnakeEquipFuncion gSnakeEquips_8009EF8C[] = {
|
||||
NewTabako_80062274,
|
||||
NewScope_80063508,
|
||||
NewBox_80061C7C,
|
||||
NewBox_80061C7C,
|
||||
NewBox_80061C7C,
|
||||
NewGoggle_8007781C,
|
||||
NewGoggleIr_80078E6C,
|
||||
NewGasmask_80060C14,
|
||||
NewBodyarm_80060940,
|
||||
NewKetchap_80072B60,
|
||||
NewKogaku2_800615FC,
|
||||
NewBandana_80061E40
|
||||
#ifndef VR_EXE
|
||||
, NewJpegcam_80065118
|
||||
#else
|
||||
, NULL
|
||||
#endif
|
||||
};
|
||||
|
||||
short word_8009EFC0[] = {0, 500, 0, 320, 400, 320, 400, 32, 32, 0};
|
||||
|
||||
SVECTOR stru_8009EFD4[2] = {{-100, 200, 200, 0}, {-150, 18, 200, 0}};
|
||||
|
||||
Target_Data stru_8009EFE4[4] =
|
||||
{
|
||||
{{0, 0, 300, 0}, {400, 600, 400, 0}, 0, 0, 64, 0}, // TODO: Might not be part of this array, might be its own element
|
||||
{{-400, 0, 600, 0}, {400, 600, 400, 0}, 0, 0, 36, 5},
|
||||
{{400, 0, 600, 0}, {400, 600, 400, 0}, 0, 0, 36, 5},
|
||||
{{0, 0, 0, 0}, {501, 600, 501, 0}, 0, 0, 7, 0}
|
||||
};
|
||||
|
||||
MATRIX stru_8009F064 = {{{-200, 200, 600}, {0, 400, 200}, {400, 0, 5}}, {50, 0, 1}};
|
||||
MATRIX stru_8009F084 = {{{200, 200, 600}, {0, 400, 200}, {400, 0, -5}}, {50, 0, 1}};
|
||||
MATRIX stru_8009F0A4 = {{{0, 200, 600}, {0, 500, 250}, {500, 0, 0}}, {100, 0, 3}};
|
||||
|
||||
GV_PAD GV_PadData_8009F0C4 = {0, 0, 0, 0, -1, 0, 0, 0, 0, 0};
|
||||
|
||||
#define RIFLE_TEBURE_TIME 90 // delay before camera shake
|
||||
#define TEBURE 122
|
||||
#define GetAction( pActor ) (pActor->field_9C_obj.action_flag)
|
||||
#define EndMotion( pActor ) (pActor->field_9C_obj.is_end != 0)
|
||||
#define SET pActor->field_9B4_action_table->field_10->field_0
|
||||
#define DispEmpty( pActor ) (pActor->field_9A0 = 4)
|
||||
#define SE_KARASHT 4
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004EB94.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004EC18.s")
|
||||
|
||||
void sna_8004EC8C(Actor_SnaInit *pActor) // different in VR
|
||||
{
|
||||
ushort v2; // $v1
|
||||
|
||||
sna_set_flags1_8004E2F4(pActor, SNA_FLAG1_UNK12);
|
||||
pActor->field_A28 = 460;
|
||||
GM_Camera_800B77E8.field_22 = 1;
|
||||
v2 = *(ushort *)&e1_800AB7C4.field_4;
|
||||
pActor->field_A20 = -6;
|
||||
pActor->field_9D0[2] = 320;
|
||||
pActor->field_9D0[4] = v2;
|
||||
pActor->field_9D0[6] = v2;
|
||||
sd_set_cli_800887EC(0x1FFFF20, 0);
|
||||
// sna_set_flags2_8004E330(pActor, SNA_FLAG2_UNK5);
|
||||
// GM_ClearPlayerStatusFlag_8004E2D4(PLAYER_FIRST_PERSON);
|
||||
}
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004ECF4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004ED4C.s")
|
||||
|
||||
void sna_8004EE28(Actor_SnaInit *snake)
|
||||
{
|
||||
MATRIX mat1;
|
||||
MATRIX mat2;
|
||||
SVECTOR vec;
|
||||
int vx;
|
||||
MATRIX *world = &snake->field_9C_obj.objs->objs[6].world;
|
||||
|
||||
ReadRotMatrix(&mat1);
|
||||
DG_TransposeMatrix_8001EAD8(&mat1, &mat2);
|
||||
MulMatrix0(&mat2, world, &mat2);
|
||||
DG_MatrixRotZYX_8001E92C(&mat2, &vec);
|
||||
SetRotMatrix(&mat1);
|
||||
vx = vec.vx;
|
||||
if (vx < 0)
|
||||
{
|
||||
vx += 0xf;
|
||||
}
|
||||
vx &= 0xfff0;
|
||||
gUnkCameraStruct_800B77B8.field_28.vx = vx;
|
||||
}
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004EE90.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004EEF4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004EFC4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F014.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F070.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F124.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F1D0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F260.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F2AC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F2F8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F400.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F4E4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F5C8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F688.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004F8D8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FA30.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/GM_Next_BulName_8004FBA0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/GM_ClearBulName_8004FBE4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/GM_CheckShukanReverse_8004FBF8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FB98.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FBC8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FCF8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FE98.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8004FFAC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80050108.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005018C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800502A8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80050350.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005046C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005056C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800506DC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80050954.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80050968.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80051078.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_weapon_switching_800511BC.s")
|
||||
void sna_weapon_switching_800511BC(Actor_SnaInit *pActor, int callback);
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_800515BC.s")
|
||||
void sna_800515BC(Actor_SnaInit *pActor, int a2);
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_idle_8005275C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_crouch_800527DC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_prone_idle_800528BC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_run_8005292C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_prone_move_800529C0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_wall_idle_and_c4_80052A5C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_wall_crouch_80052CCC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80051F60.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800520D4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052240.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052350.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052560.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052714.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005280C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052994.s")
|
||||
|
||||
void snake_vr_sna_init_80052AC0()
|
||||
{
|
||||
}
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052AC8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052B28.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052CB4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052DDC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80052EE8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_gun_800540D0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_bomb_800541A8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_chokethrow_begin1_80054210.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053198.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053254.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800532C0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_duct_move_80054424.s")
|
||||
void sna_anim_duct_move_80054424(Actor_SnaInit *pActor, int time);
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053394.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800533EC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053554.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005361C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053800.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800538E0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053A20.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053AD8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053C38.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80053E44.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800541E4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005427C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005429C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800542FC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80054364.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800543D4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80054888.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80054C88.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80055500.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800556FC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005573C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800557D8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_psg1_80056DDC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_stinger_800570C0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_claymore_80057474.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80056FE8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057198.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057204.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057318.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800573E8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057548.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005792C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057CD0.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_anim_grenade_80058470.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80057F9C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800580D8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058320.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058538.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800585A8.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800587AC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058818.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_800588AC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_8005895C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058A5C.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058AC4.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058AFC.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058E24.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80058F24.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/snake_vr_sna_init_80059004.s")
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_act_8005AD10.s")
|
||||
void sna_act_8005AD10(Actor_SnaInit *pActor);
|
||||
|
||||
#pragma INCLUDE_ASM("asm/chara/snake_vr/sna_kill_8005B52C.s")
|
||||
void sna_kill_8005B52C(Actor_SnaInit *pActor);
|
||||
|
||||
static inline int sna_LoadSnake2(Actor_SnaInit *pActor)
|
||||
{
|
||||
SVECTOR *temp_s1;
|
||||
SVECTOR *temp_s2;
|
||||
DG_PRIM *pPrim;
|
||||
DG_TEX *pTex;
|
||||
POLY_GT4 *pPoly;
|
||||
int i, j;
|
||||
|
||||
temp_s1 = &pActor->field_930;
|
||||
pPrim = DG_GetPrim(22, 2, 0, temp_s1, 0);
|
||||
|
||||
if (!pPrim)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
pTex = DG_GetTexture_8001D830(PCX_LSIGHT);
|
||||
pActor->field_928 = pTex;
|
||||
|
||||
if (!pTex)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
pPrim->field_2E_k500 = 500;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
pPoly = &pPrim->field_40_pBuffers[i]->poly_gt4;
|
||||
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
LSTORE(0, &pPoly->r0);
|
||||
LSTORE(0x808080, &pPoly->r1);
|
||||
LSTORE(0, &pPoly->r2);
|
||||
LSTORE(0x808080, &pPoly->r3);
|
||||
setPolyGT4(pPoly);
|
||||
setSemiTrans(pPoly, 1);
|
||||
pPoly->tpage = pTex->field_4_tPage;
|
||||
pPoly->clut = pTex->field_6_clut;
|
||||
pPoly++;
|
||||
}
|
||||
}
|
||||
|
||||
// ???
|
||||
temp_s2 = temp_s1 + 2;
|
||||
|
||||
temp_s1[2].vx = -100;
|
||||
temp_s1[0].vx = -100;
|
||||
temp_s1[3].vy = -300;
|
||||
temp_s2[0].vy = -300;
|
||||
temp_s1[1].vy = -300;
|
||||
temp_s1[0].vy = -300;
|
||||
temp_s2[0].vz = 300;
|
||||
temp_s1[0].vz = 300;
|
||||
temp_s1[1].vx = -800;
|
||||
temp_s1[1].vz = 2000;
|
||||
temp_s1[3].vx = 800;
|
||||
temp_s1[3].vz = 2000;
|
||||
|
||||
DG_InvisiblePrim(pPrim);
|
||||
pActor->field_92C = pPrim;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sna_LoadSnake3(Actor_SnaInit *pActor)
|
||||
{
|
||||
u_short t1, t2;
|
||||
short stance;
|
||||
short temp_a1;
|
||||
int temp_v1_3;
|
||||
int var_s0_2;
|
||||
int var_v_2;
|
||||
|
||||
stance = pActor->field_A26_stance = GM_SnakeStance;
|
||||
if (stance == 3)
|
||||
{
|
||||
t1 = GM_ItemTypes_8009D598[GM_CurrentItemId + 1];
|
||||
t2 = GM_CurrentItemId;
|
||||
|
||||
if ((t1 & 2) || ((t2 - 2) < 3u))
|
||||
{
|
||||
GM_CurrentItemId = ITEM_NONE;
|
||||
}
|
||||
|
||||
if (GM_WeaponTypes_8009D580[GM_CurrentWeaponId + 1] & 0x200)
|
||||
{
|
||||
GM_CurrentWeaponId = WEAPON_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
pActor->field_844 = -1;
|
||||
pActor->field_91C_weapon_idx = -2;
|
||||
|
||||
sna_weapon_switching_800511BC(pActor, 0);
|
||||
|
||||
pActor->field_9A8_current_item = ITEM_NONE;
|
||||
|
||||
sna_800515BC(pActor, 0);
|
||||
|
||||
pActor->field_9B4_action_table = &weapon_actions_8009ED8C[GM_CurrentWeaponId];
|
||||
pActor->field_A28 = 450;
|
||||
pActor->field_A44 = pActor->field_20_ctrl.field_0_mov;
|
||||
pActor->field_A60 = pActor->field_20_ctrl.field_0_mov;
|
||||
|
||||
gUnkCameraStruct_800B77B8.field_0 = pActor->field_A60;
|
||||
|
||||
if (GCL_GetOption_80020968('o')) // oar
|
||||
{
|
||||
pActor->field_A5A = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
pActor->field_890_autoaim_max_dist = 6000;
|
||||
|
||||
if (GCL_GetOption_80020968('l')) // len
|
||||
{
|
||||
pActor->field_890_autoaim_max_dist = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
pActor->field_892_autoaim_min_angle = 512;
|
||||
|
||||
if (GCL_GetOption_80020968('r')) // rot
|
||||
{
|
||||
pActor->field_892_autoaim_min_angle = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
dword_800ABBDC = -1023;
|
||||
dword_800ABBD4 = 1023;
|
||||
|
||||
if (GCL_GetOption_80020968('t')) // turn
|
||||
{
|
||||
dword_800ABBDC = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
dword_800ABBD4 = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
pActor->field_A70 = -1;
|
||||
|
||||
if (GCL_GetOption_80020968('e')) // exec
|
||||
{
|
||||
pActor->field_A70 = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
temp_a1 = pActor->field_A26_stance;
|
||||
|
||||
if (temp_a1 == 3)
|
||||
{
|
||||
pActor->field_A26_stance = 2;
|
||||
GM_SetPlayerStatusFlag_8004E2B4(PLAYER_PRONE | PLAYER_FIRST_PERSON_DUCT);
|
||||
DG_InvisibleObjs(pActor->field_9C_obj.objs);
|
||||
sna_8004EC8C(pActor);
|
||||
sna_start_anim_8004E1F4(pActor, &sna_anim_duct_move_80054424);
|
||||
GM_Camera_800B77E8.field_22 = 2;
|
||||
var_v_2 = sna_8004EAA8(pActor, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_s0_2 = sna_8004EAA8(pActor, temp_a1);
|
||||
|
||||
if ((pActor->field_9AC & 1) || (pActor->field_920_tbl_8009D580 & 0x20))
|
||||
{
|
||||
if ((unsigned int)(pActor->field_9A8_current_item - 2) < 3)
|
||||
{
|
||||
var_s0_2 = 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sna_start_anim_8004E1F4(pActor, dword_8009EEA4[pActor->field_A26_stance]);
|
||||
}
|
||||
|
||||
var_v_2 = var_s0_2;
|
||||
}
|
||||
|
||||
GM_ConfigObjectAction_80034CD4(&pActor->field_9C_obj, var_v_2, 0, 0);
|
||||
GM_ActMotion_80034A7C(&pActor->field_9C_obj);
|
||||
|
||||
temp_v1_3 = (short)pActor->field_9C_obj.field_18;
|
||||
|
||||
pActor->field_798_p_height = temp_v1_3;
|
||||
pActor->field_20_ctrl.field_32_height = temp_v1_3;
|
||||
|
||||
pActor->field_9B0_pad_ptr = GV_PadData_800B05C0;
|
||||
}
|
||||
|
||||
static inline void sna_LoadSnake4( POLY_FT4 *packs, int n_packs, DG_TEX *tex )
|
||||
{
|
||||
char u, v;
|
||||
int i;
|
||||
|
||||
u = tex->field_8_offx;
|
||||
v = tex->field_9_offy;
|
||||
|
||||
for ( i = 0; i < n_packs; i ++ )
|
||||
{
|
||||
setPolyFT4( packs );
|
||||
setSemiTrans( packs, 1 );
|
||||
setRGB0( packs, 128, 128, 128 );
|
||||
setXY4( packs, 255, 164, 303, 164, 255, 176, 303, 176 );
|
||||
setUV4( packs, u, v, u + 48, v, u, v + 12, u + 48, v + 12 );
|
||||
packs->tpage = tex->field_4_tPage;
|
||||
packs->clut = tex->field_6_clut;
|
||||
packs ++ ;
|
||||
}
|
||||
}
|
||||
|
||||
static inline int sna_LoadSnake(Actor_SnaInit *pActor, int scriptData, int scriptBinds)
|
||||
{
|
||||
CONTROL *pCtrl;
|
||||
OBJECT *pObject;
|
||||
TARGET *pTarget;
|
||||
Jirai_unknown *pJiraiUnk;
|
||||
Shadow_94 shadow94;
|
||||
SVECTOR vec;
|
||||
SVECTOR *pVec;
|
||||
int tmp, model, i;
|
||||
char *param_pos, *param_dir;
|
||||
|
||||
pCtrl = &pActor->field_20_ctrl;
|
||||
if (GM_InitLoader_8002599C(pCtrl, scriptData, scriptBinds) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
param_pos = (char*)GCL_GetOption_80020968('p'); // pos
|
||||
param_dir = (char*)GCL_GetOption_80020968('d'); // dir
|
||||
GM_ConfigControlString_800261C0(pCtrl, param_pos, param_dir);
|
||||
GM_ConfigControlHazard_8002622C(pCtrl, 0, 450, 450);
|
||||
|
||||
tmp = 1;
|
||||
pCtrl->field_59 = tmp;
|
||||
|
||||
GM_ConfigControlAttribute_8002623C(pCtrl, tmp);
|
||||
GM_ConfigControlTrapCheck_80026308(pCtrl);
|
||||
|
||||
|
||||
pObject = &pActor->field_9C_obj;
|
||||
|
||||
model = KMD_SNAKE;
|
||||
if (GCL_GetOption_80020968('m')) // model
|
||||
{
|
||||
model = GCL_StrToInt_800209E8(GCL_Get_Param_Result_80020AA4());
|
||||
}
|
||||
|
||||
GM_InitObject_80034A18(pObject, model, BODY_FLAG, OAR_SNAKE);
|
||||
|
||||
GM_ConfigObjectJoint_80034CB4(pObject);
|
||||
GM_ConfigMotionControl_80034F08(pObject,
|
||||
&pActor->field_180,
|
||||
OAR_SNAKE,
|
||||
&pActor->field_1D0[0],
|
||||
&pActor->field_1D0[17],
|
||||
pCtrl,
|
||||
(SVECTOR *)&pActor->field_698_joint_rotations);
|
||||
GM_ConfigObjectLight_80034C44(pObject, &pActor->field_848_lighting_mtx);
|
||||
|
||||
GM_PlayerControl_800AB9F4 = pCtrl;
|
||||
GM_PlayerPosition_800ABA10 = pActor->field_20_ctrl.field_0_mov;
|
||||
GM_PlayerBody_800ABA20 = pObject;
|
||||
|
||||
sna_8004EB14(pActor);
|
||||
|
||||
if (sna_LoadSnake2(pActor) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
sna_LoadSnake3(pActor);
|
||||
|
||||
pVec = &vec;
|
||||
setVector(pVec, 300, 650, 300);
|
||||
|
||||
pTarget = pActor->field_89C_pTarget = GM_AllocTarget_8002D400();
|
||||
|
||||
GM_SetTarget_8002DC74(pTarget, 159, PLAYER_SIDE, pVec);
|
||||
GM_Target_8002DCCC(pTarget, 1, -1, GM_SnakeCurrentHealth, 0, &DG_ZeroVector_800AB39C);
|
||||
GM_Target_8002DCB4(pTarget, 0, 0, &pActor->field_8F4, &pActor->field_8FC);
|
||||
GM_Target_SetVector_8002D500(pTarget, &pActor->field_20_ctrl.field_0_mov);
|
||||
|
||||
pActor->field_A22_snake_current_health = GM_SnakeCurrentHealth;
|
||||
|
||||
sna_LoadSnake4(pActor->field_950, 2, DG_GetTexture_8001D830(PCX_EMPTY2));
|
||||
|
||||
shadow94.objs_offsets[0] = 0;
|
||||
shadow94.objs_offsets[1] = 6;
|
||||
shadow94.objs_offsets[2] = 12;
|
||||
shadow94.objs_offsets[3] = 15;
|
||||
|
||||
pActor->field_888_pShadow = shadow_init2_80060384(pCtrl, pObject, shadow94, &pActor->field_88C);
|
||||
|
||||
dword_800ABA1C = 0;
|
||||
GM_BombSeg_800ABBD8 = 0;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
tenage_ctrls_800BDD30[i] = NULL;
|
||||
}
|
||||
|
||||
dword_800BDD28 = 0;
|
||||
tenage_ctrls_count_800BDD70 = 0;
|
||||
|
||||
pJiraiUnk = stru_800BDD78;
|
||||
i = 0;
|
||||
|
||||
while (i < 16)
|
||||
{
|
||||
i++;
|
||||
pJiraiUnk->field_0_ypos = 6;
|
||||
pJiraiUnk->field_4_pActor = NULL;
|
||||
pJiraiUnk++;
|
||||
}
|
||||
|
||||
dword_8009F434 = 0;
|
||||
bakudan_count_8009F42C = 0;
|
||||
|
||||
pJiraiUnk = stru_800BDE78;
|
||||
i = 0;
|
||||
|
||||
while (i < 8)
|
||||
{
|
||||
i++;
|
||||
pJiraiUnk->field_0_ypos = 5;
|
||||
pJiraiUnk->field_4_pActor = NULL;
|
||||
pJiraiUnk++;
|
||||
}
|
||||
|
||||
dword_8009F440 = 0;
|
||||
dword_8009F444 = 0;
|
||||
counter_8009F448 = 0;
|
||||
dword_8009F46C[0] = 0;
|
||||
dword_8009F470 = 0;
|
||||
dword_8009F474 = 0;
|
||||
target_800BDF00 = 0;
|
||||
|
||||
for (i = 0; i < 64; i++)
|
||||
{
|
||||
gBulNames_800BDC78[i] = 0;
|
||||
}
|
||||
|
||||
tabako_dword_8009F2C0 = 0;
|
||||
pVec_800ABBCC = NULL;
|
||||
|
||||
if (model == KMD_SNE_WET2) // wet suit in the docks
|
||||
{
|
||||
sna_set_flags1_8004E2F4(pActor, SNA_FLAG1_UNK29);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
GV_ACT *sna_NewSnake_8005B650(int name, int where, int argc, char **argv)
|
||||
{
|
||||
Actor_SnaInit *pActor;
|
||||
|
||||
pActor = (Actor_SnaInit *)GV_NewActor_800150E4(5, sizeof(Actor_SnaInit));
|
||||
if (!pActor)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GV_SetNamedActor_8001514C(&pActor->field_0_actor,
|
||||
(TActorFunction)&sna_act_8005AD10,
|
||||
(TActorFunction)&sna_kill_8005B52C,
|
||||
aSnaInitC);
|
||||
|
||||
if (sna_LoadSnake(pActor, name, where) < 0)
|
||||
{
|
||||
GV_DestroyActor_800151C8(&pActor->field_0_actor);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
snainit_actor_800A9424 = pActor;
|
||||
return &pActor->field_0_actor;
|
||||
}
|
||||
|
||||
// some jump table probably
|
||||
const char missing_rdata[] = {0xe4, 0x4f, 0x05, 0x80, 0xd4, 0x4f, 0x05, 0x80, 0x0c, 0x50, 0x05, 0x80, 0x48, 0x50, 0x05, 0x80, 0x94, 0x50, 0x05, 0x80, 0xfc, 0x50, 0x05, 0x80, 0xb4, 0x53, 0x05, 0x80};
|
||||
|
|
@ -0,0 +1,479 @@
|
|||
// FIXME: copy-pasta of snake/sna_init.h
|
||||
|
||||
#ifndef _sna_H_
|
||||
#define _sna_H_
|
||||
|
||||
#include "libgv/libgv.h"
|
||||
#include "Game/control.h"
|
||||
#include "Game/game.h"
|
||||
#include "Game/target.h"
|
||||
#include "chara/snake/shadow.h"
|
||||
#include <SYS/TYPES.H>
|
||||
#include <LIBGTE.H>
|
||||
#include <LIBGPU.H>
|
||||
|
||||
typedef struct Sna_E1
|
||||
{
|
||||
unsigned char field_0;
|
||||
unsigned char field_1;
|
||||
unsigned char field_2;
|
||||
unsigned char field_3;
|
||||
unsigned char field_4;
|
||||
unsigned char field_5;
|
||||
unsigned char field_6;
|
||||
unsigned char field_7;
|
||||
} Sna_E1;
|
||||
|
||||
typedef struct Sna_E2
|
||||
{
|
||||
unsigned char field_0;
|
||||
unsigned char field_1;
|
||||
unsigned char field_2;
|
||||
unsigned char field_3;
|
||||
unsigned char field_4;
|
||||
unsigned char field_5;
|
||||
unsigned char field_6;
|
||||
unsigned char field_7;
|
||||
unsigned char field_8;
|
||||
unsigned char field_9;
|
||||
unsigned char field_A;
|
||||
unsigned char field_B;
|
||||
} Sna_E2;
|
||||
|
||||
typedef struct Sna_E6
|
||||
{
|
||||
unsigned char field_0;
|
||||
unsigned char field_1;
|
||||
unsigned char field_2;
|
||||
unsigned char field_3;
|
||||
} Sna_E6;
|
||||
|
||||
typedef struct Target_Data
|
||||
{
|
||||
SVECTOR field_0;
|
||||
SVECTOR field_8_size;
|
||||
int field_10;
|
||||
int field_14;
|
||||
int field_18;
|
||||
unsigned int field_1C;
|
||||
} Target_Data;
|
||||
|
||||
typedef struct Sna_Joint_Rotations
|
||||
{
|
||||
SVECTOR field_0_lower_body;
|
||||
SVECTOR field_8_upper_body;
|
||||
SVECTOR field_10_right_shoulder;
|
||||
SVECTOR field_18_right_elbow;
|
||||
SVECTOR field_20_right_wrist;
|
||||
SVECTOR field_28_neck;
|
||||
SVECTOR field_30_neck2;
|
||||
SVECTOR field_38_right_shoulder;
|
||||
SVECTOR field_40_right_elbow;
|
||||
SVECTOR field_48_right_wrist;
|
||||
SVECTOR field_50_right_leg;
|
||||
SVECTOR field_58_right_knee;
|
||||
SVECTOR field_60_right_ankle;
|
||||
SVECTOR field_68_left_leg;
|
||||
SVECTOR field_70_left_knee;
|
||||
SVECTOR field_78_left_ankle;
|
||||
} Sna_Joint_Rotations;
|
||||
|
||||
typedef struct Sna_ActionTable
|
||||
{
|
||||
Sna_E1 *field_0;
|
||||
Sna_E2 *field_4;
|
||||
Sna_E1 *field_8;
|
||||
Sna_E2 *field_C;
|
||||
Sna_E2 *field_10;
|
||||
Sna_E6 *field_14;
|
||||
Sna_E1 *field_18;
|
||||
} Sna_ActionTable;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SNA_FLAG1_UNK1 = 0x1,
|
||||
SNA_FLAG1_UNK2 = 0x2,
|
||||
SNA_FLAG1_UNK3 = 0x4,
|
||||
SNA_FLAG1_UNK4 = 0x8,
|
||||
SNA_FLAG1_UNK5 = 0x10,
|
||||
SNA_FLAG1_UNK6 = 0x20,
|
||||
SNA_FLAG1_UNK7 = 0x40,
|
||||
SNA_FLAG1_UNK8 = 0x80,
|
||||
SNA_FLAG1_UNK9 = 0x100,
|
||||
SNA_FLAG1_UNK10 = 0x200,
|
||||
SNA_FLAG1_UNK11 = 0x400,
|
||||
SNA_FLAG1_UNK12 = 0x800,
|
||||
SNA_FLAG1_UNK13 = 0x1000,
|
||||
SNA_FLAG1_UNK14 = 0x2000,
|
||||
SNA_FLAG1_UNK15 = 0x4000,
|
||||
SNA_FLAG1_UNK16 = 0x8000,
|
||||
SNA_FLAG1_UNK17 = 0x10000,
|
||||
SNA_FLAG1_UNK18 = 0x20000,
|
||||
SNA_FLAG1_UNK19 = 0x40000,
|
||||
SNA_FLAG1_UNK20 = 0x80000,
|
||||
SNA_FLAG1_UNK21 = 0x100000,
|
||||
SNA_FLAG1_UNK22 = 0x200000,
|
||||
SNA_FLAG1_UNK23 = 0x400000,
|
||||
SNA_FLAG1_UNK24 = 0x800000,
|
||||
SNA_FLAG1_UNK25 = 0x1000000,
|
||||
SNA_FLAG1_UNK26 = 0x2000000,
|
||||
SNA_FLAG1_UNK27 = 0x4000000,
|
||||
SNA_FLAG1_UNK28 = 0x8000000,
|
||||
SNA_FLAG1_UNK29 = 0x10000000,
|
||||
SNA_FLAG1_UNK30 = 0x20000000,
|
||||
SNA_FLAG1_UNK31 = 0x40000000,
|
||||
SNA_FLAG1_UNK32 = 0x80000000,
|
||||
} SnaFlag1;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SNA_FLAG2_UNK1 = 0x1,
|
||||
SNA_FLAG2_UNK2 = 0x2,
|
||||
SNA_FLAG2_UNK3 = 0x4,
|
||||
SNA_FLAG2_UNK4 = 0x8,
|
||||
SNA_FLAG2_UNK5 = 0x10,
|
||||
SNA_FLAG2_UNK6 = 0x20,
|
||||
SNA_FLAG2_UNK7 = 0x40,
|
||||
SNA_FLAG2_UNK8 = 0x80,
|
||||
SNA_FLAG2_UNK9 = 0x100,
|
||||
SNA_FLAG2_UNK10 = 0x200,
|
||||
SNA_FLAG2_UNK11 = 0x400,
|
||||
SNA_FLAG2_UNK12 = 0x800,
|
||||
SNA_FLAG2_UNK13 = 0x1000,
|
||||
SNA_FLAG2_UNK14 = 0x2000,
|
||||
SNA_FLAG2_UNK15 = 0x4000,
|
||||
SNA_FLAG2_UNK16 = 0x8000,
|
||||
SNA_FLAG2_UNK17 = 0x10000,
|
||||
SNA_FLAG2_UNK18 = 0x20000,
|
||||
SNA_FLAG2_UNK19 = 0x40000,
|
||||
SNA_FLAG2_UNK20 = 0x80000,
|
||||
SNA_FLAG2_UNK21 = 0x100000,
|
||||
SNA_FLAG2_UNK22 = 0x200000,
|
||||
SNA_FLAG2_UNK23 = 0x400000,
|
||||
SNA_FLAG2_UNK24 = 0x800000,
|
||||
SNA_FLAG2_UNK25 = 0x1000000,
|
||||
SNA_FLAG2_UNK26 = 0x2000000,
|
||||
SNA_FLAG2_UNK27 = 0x4000000,
|
||||
SNA_FLAG2_UNK28 = 0x8000000,
|
||||
SNA_FLAG2_UNK29 = 0x10000000,
|
||||
SNA_FLAG2_UNK30 = 0x20000000,
|
||||
SNA_FLAG2_UNK31 = 0x40000000,
|
||||
SNA_FLAG2_UNK32 = 0x80000000,
|
||||
} SnaFlag2;
|
||||
|
||||
// sub struct of Actor_SnaInit
|
||||
typedef struct UnkSnakeStruct2
|
||||
{
|
||||
unsigned short field_9E4;
|
||||
short field_9E6;
|
||||
short field_9E8;
|
||||
short field_9EA;
|
||||
short field_9EC_flags3;
|
||||
short field_9EE;
|
||||
short field_9F0;
|
||||
short field_9F2;
|
||||
SVECTOR field_9F4;
|
||||
} UnkSnakeStruct2;
|
||||
|
||||
typedef struct SnaAutoMove // @ field_A00 in Actor_SnaInit
|
||||
{
|
||||
VECTOR field_0_ivec; // dunno why int vector. this is something like the direction snake is moving
|
||||
SVECTOR field_10_vec1; // these last two are related to the target position snake wants to move to
|
||||
SVECTOR field_18_vec2;
|
||||
} SnaAutoMove;
|
||||
|
||||
struct Actor_SnaInit;
|
||||
typedef void (*TSnakeFunction)(struct Actor_SnaInit *, int);
|
||||
|
||||
// TODO: Many fields and sub structures are not yet recovered/incorrect
|
||||
typedef struct Actor_SnaInit
|
||||
{
|
||||
GV_ACT field_0_actor;
|
||||
CONTROL field_20_ctrl;
|
||||
OBJECT field_9C_obj;
|
||||
char field_C0[0xC0]; // zeroed during normal gameplay
|
||||
MOTION_CONTROL field_180;
|
||||
OAR_RECORD field_1D0[34]; // bottom half of array is weapon related
|
||||
Sna_Joint_Rotations field_698_joint_rotations;
|
||||
SVECTOR field_718[16]; // same size as above, related / same struct?
|
||||
int field_798_p_height;
|
||||
int field_79C;
|
||||
int field_7A0_msg_count;
|
||||
GV_MSG field_7A4_msgs[8];
|
||||
int field_844;
|
||||
// FIND EXTRA FIELD - snake_vr verison of the actor has 4 bytes less
|
||||
// somewhere between here and "END FIND EXTRA FIELD"
|
||||
// for now a random field is just commented out
|
||||
MATRIX field_848_lighting_mtx; // .t is R, G, B
|
||||
MATRIX field_868_lighting_mtx2;
|
||||
Actor_Shadow *field_888_pShadow;
|
||||
int *field_88C; // shadow enabled?
|
||||
unsigned short field_890_autoaim_max_dist;
|
||||
unsigned short field_892_autoaim_min_angle;
|
||||
SnaFlag1 field_894_flags1;
|
||||
// SnaFlag2 field_898_flags2;
|
||||
TARGET *field_89C_pTarget;
|
||||
TARGET field_8A0_target;
|
||||
TARGET *field_8E8_pTarget;
|
||||
SVECTOR field_8EC_vec;
|
||||
int field_8F4;
|
||||
int field_8F8;
|
||||
SVECTOR field_8FC;
|
||||
int field_904_frames_last_choke;
|
||||
GV_ACT *field_908_weapon_actor;
|
||||
TSnakeFunction field_90C_pWeaponFn;
|
||||
int field_910;
|
||||
int field_914_trigger;
|
||||
short *field_918_n_bullets;
|
||||
int field_91C_weapon_idx;
|
||||
int field_920_tbl_8009D580;
|
||||
short field_924;
|
||||
short field_926;
|
||||
DG_TEX *field_928;
|
||||
DG_PRIM *field_92C;
|
||||
SVECTOR field_930;
|
||||
SVECTOR field_938;
|
||||
SVECTOR field_940;
|
||||
SVECTOR field_948;
|
||||
POLY_FT4 field_950[2];
|
||||
int field_9A0;
|
||||
GV_ACT *field_9A4_item_actor;
|
||||
int field_9A8_current_item;
|
||||
int field_9AC;
|
||||
GV_PAD *field_9B0_pad_ptr;
|
||||
Sna_ActionTable *field_9B4_action_table;
|
||||
TSnakeFunction field_9B8_fn_anim;
|
||||
int field_9BC_anim_frame;
|
||||
TSnakeFunction field_9C0;
|
||||
int field_9C4;
|
||||
TSnakeFunction field_9C8_anim_update_fn_3p; // called for every anim/state while in third person
|
||||
TSnakeFunction field_9CC_anim_update_fn_1p; // same except first person. caller: 8005a7e0
|
||||
short field_9D0[10];
|
||||
UnkSnakeStruct2 field_9E4;
|
||||
void *field_9FC;
|
||||
SnaAutoMove field_A00; // auto movement of snake during mini cutscenes. some above fields may also be this
|
||||
short field_A20;
|
||||
short field_A22_snake_current_health;
|
||||
char field_A24_invuln_frames;
|
||||
char field_A25;
|
||||
// END FIND EXTRA FIELD
|
||||
short field_A26_stance; // SNA_STANCE_...
|
||||
short field_A28;
|
||||
short field_A2A;
|
||||
SVECTOR field_A2C;
|
||||
char field_A34;
|
||||
char field_A35_vibtime2;
|
||||
char field_A36;
|
||||
char field_A37;
|
||||
short field_A38_local_data;
|
||||
short field_A3A;
|
||||
SVECTOR field_A3C;
|
||||
SVECTOR field_A44;
|
||||
int field_A4C;
|
||||
short field_A50;
|
||||
short field_A52;
|
||||
// var reused in differenet contexts, union is better than a generic name for all contexts
|
||||
union {
|
||||
short choke_count;
|
||||
short prone_bool_thing;
|
||||
short wall_thing;
|
||||
short knockdown_thing;
|
||||
} field_A54;
|
||||
short field_A56;
|
||||
short field_A58;
|
||||
unsigned short field_A5A;
|
||||
unsigned short field_A5C;
|
||||
short field_A5E;
|
||||
SVECTOR field_A60;
|
||||
SVECTOR field_A68;
|
||||
int field_A70;
|
||||
} Actor_SnaInit;
|
||||
|
||||
typedef int (*TSnakeActFunction)(Actor_SnaInit *);
|
||||
typedef GV_ACT * (*TSnakeEquipFuncion)(CONTROL *, OBJECT *, int);
|
||||
|
||||
void sna_start_anim_8004E1F4(Actor_SnaInit *pActor, void *pFn);
|
||||
void SetAction_8004E22C(Actor_SnaInit *pActor, int action_flag, int interp);
|
||||
void sna_8004E260(Actor_SnaInit *pActor, int a2, int interp, int a4);
|
||||
int GM_CheckPlayerStatusFlag_8004E29C(PlayerStatusFlag arg0);
|
||||
int GM_SetPlayerStatusFlag_8004E2B4(PlayerStatusFlag arg0);
|
||||
void GM_ClearPlayerStatusFlag_8004E2D4(PlayerStatusFlag flag);
|
||||
void sna_set_flags1_8004E2F4(Actor_SnaInit *snake, SnaFlag1 flags);
|
||||
void sna_clear_flags1_8004E308(Actor_SnaInit *snake, SnaFlag1 flags);
|
||||
int sna_check_flags1_8004E31C(Actor_SnaInit *snake, SnaFlag1 flags);
|
||||
void sna_set_flags2_8004E330(Actor_SnaInit *snake, SnaFlag2 flag);
|
||||
void sna_clear_flags2_8004E344(Actor_SnaInit *snake, SnaFlag2 flags);
|
||||
unsigned int sna_sub_8004E358(Actor_SnaInit *snake, SnaFlag2 param_2);
|
||||
void CheckSnakeDead_8004E384(Actor_SnaInit *snake);
|
||||
void sna_sub_8004E41C(Actor_SnaInit *snake, unsigned short flags);
|
||||
int sub_8004E458(short param_1, int param_2);
|
||||
int sub_8004E4C0(Actor_SnaInit *pActor, int param_2);
|
||||
int sub_8004E51C(SVECTOR *param_1, void *param_2, int param_3, int param_4);
|
||||
void sub_8004E588(HZD_HDL *param_1, SVECTOR *param_2, int *param_3);
|
||||
int sub_8004E930(Actor_SnaInit *snake, int arg1);
|
||||
void sub_8004E9D0(Actor_SnaInit *pActor);
|
||||
void sub_8004EA50(Actor_SnaInit *pActor, int param_2);
|
||||
int sna_8004EAA8(Actor_SnaInit *pActor, int a2);
|
||||
void sub_8004EB74(Actor_SnaInit *pActor);
|
||||
void sna_8004EC00(Actor_SnaInit *pActor);
|
||||
void sna_8004EC8C(Actor_SnaInit *pActor);
|
||||
void sub_8004ED08(Actor_SnaInit *pActor);
|
||||
void sub_8004EEB0(Actor_SnaInit *pActor);
|
||||
int sub_8004EFE4(Actor_SnaInit *pActor, int param_2);
|
||||
void sna_8004F034(Actor_SnaInit *pActor, unsigned int bits);
|
||||
void sna_act_helper2_helper4_8004F090(Actor_SnaInit *pActor, int param_2);
|
||||
void sub_8004F14C(Actor_SnaInit *param_1);
|
||||
void sub_8004F204(Actor_SnaInit *param_1);
|
||||
void sna_set_invuln_8004F2A0(Actor_SnaInit *pActor, char invuln_frames);
|
||||
void sna_clear_invuln_8004F2EC(Actor_SnaInit *snake);
|
||||
void sub_8004F338(Actor_SnaInit *param_1);
|
||||
int sna_act_unk_helper4_8004FA3C(void);
|
||||
void sna_8004FA74(Actor_SnaInit *param_1);
|
||||
void sub_8004FA9C(Actor_SnaInit *snake);
|
||||
int sna_current_item_8004FB38(void);
|
||||
SVECTOR **sub_8004FB90(void);
|
||||
int sna_8004E808(Actor_SnaInit *pActor, int a2, int a3, int a4, int a5);
|
||||
|
||||
// TODO: move these to game.h even though theyre defined in sna_init.c?
|
||||
// .. or move the implementation to a static inline in game.h which the definition in sna_init calls?
|
||||
int GM_Next_BulName_8004FBA0();
|
||||
void GM_ClearBulName_8004FBE4(int idx);
|
||||
void GM_CheckShukanReverse_8004FBF8(unsigned short *pInput);
|
||||
void GM_CheckShukanReverseAnalog_8004FC70(unsigned char *pInput);
|
||||
|
||||
void sna_check_knock_800501F8(Actor_SnaInit *pActor, int time);
|
||||
int sna_prone_check_standup_80050398(Actor_SnaInit *pActor);
|
||||
void sna_80050440(Actor_SnaInit *pActor);
|
||||
void sna_80050568(Actor_SnaInit *pActor);
|
||||
int sub_800507D8(Actor_SnaInit *param_1);
|
||||
void sna_80051FD0(Actor_SnaInit *pActor);
|
||||
void sna_fn_80052120(Actor_SnaInit *pActor, int time);
|
||||
void sub_8005230C(Actor_SnaInit *pActor, int time);
|
||||
void sub_80052468(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_80052540(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_800525F8(Actor_SnaInit *pActor, int time);
|
||||
void sna_act_helper2_helper_helper_800526BC(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_idle_8005275C(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_crouch_800527DC(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_prone_idle_800528BC(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_run_8005292C(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_prone_move_800529C0(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_wall_idle_and_c4_80052A5C(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_wall_move_80052BA8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_wall_crouch_80052CCC(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_80052E58(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_crouch_helper_80053014(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_800531F4(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_nothing_80053B80(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_run_begin_80053B88(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_prone_begin_80053BE8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_prone_standup_80053D74(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_enter_duct_80053E9C(Actor_SnaInit *pActor, int time);
|
||||
void sub_80053FAC(Actor_SnaInit *pActor, int time);
|
||||
void sna_gun_800540D0(Actor_SnaInit *pActor, int time);
|
||||
void sna_bomb_800541A8(Actor_SnaInit *pActor);
|
||||
void sna_anim_chokethrow_begin1_80054210(Actor_SnaInit *pActor, int time);
|
||||
void sna_8005425C(Actor_SnaInit *pActor, int time);
|
||||
void sna_80054318(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_800543A8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_duct_move_80054424(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_duct_idle_80054488(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_shot_flinch_800544E0(Actor_SnaInit *pActor, int time);
|
||||
void sna_act_helper2_helper7_80054648(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_knockdown_80054710(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_knockdown_idle_80054930(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_knockdown_getup_80054A10(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_knockdown_shot_80054B50(Actor_SnaInit *pActor);
|
||||
void sna_anim_knockdown_shot_tank_80054C08(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_scope_80055334(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_jpegcam_800553CC(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_box_idle_800553EC(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_box_move_8005544C(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_box_stop_800554B4(Actor_SnaInit *pActor, int time);
|
||||
void sub_8005684C(Actor_SnaInit *pActor);
|
||||
void sub_8005688C(Actor_SnaInit *pActor, int time);
|
||||
void sub_80056928(Actor_SnaInit *param_1, int time);
|
||||
void sna_knockdown_check_getup_80056A1C(Actor_SnaInit *pActor, int time);
|
||||
void sna_80056A54(Actor_SnaInit *pActor, int time);
|
||||
void sna_fn_80056AD8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_shoot_weapon_80056B88(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_rungun_begin_80056BDC(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_rungun_80056C3C(Actor_SnaInit *param_1, int time);
|
||||
void sna_anim_stinger_800570C0(Actor_SnaInit *pActor, int time);
|
||||
void sna_80057118(Actor_SnaInit *pActor, int time);
|
||||
void sna_800571B8(Actor_SnaInit *pActor, int time);
|
||||
void sna_80057378(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_shoot_weapon_helper_80057590(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_rungun_begin_helper_800577B4(Actor_SnaInit *pActor, int time);
|
||||
void sna_auto_aim_800579A0(Actor_SnaInit *pActor);
|
||||
void OP_ShootStinger_80058378(Actor_SnaInit *pActor, int time);
|
||||
void sub_80058644(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_punch_80058C10(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_chokethrow_begin2_80058C80(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_80058E88(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_rechoke_80058EF4(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_rechoke_80058EF4(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_kill_80058F88(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_drag_80059054(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_hold_80059154(Actor_SnaInit *pActor, int time);
|
||||
void sub_800591BC(Actor_SnaInit *pActor);
|
||||
void sna_anim_choke_helper_8005951C(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_choke_rechoke_helper_8005961C(Actor_SnaInit *pActor, int time);
|
||||
void sna_kill_8005B52C(Actor_SnaInit *pActor);
|
||||
void sna_anim_psg1_helper_80057FD4(Actor_SnaInit *pActor, int a2);
|
||||
void sna_80051DA0(Actor_SnaInit *pActor);
|
||||
void sna_80053360(Actor_SnaInit *pActor, int time);
|
||||
void sub_80057BF0(Actor_SnaInit *pActor, int a2);
|
||||
void sna_anim_throw_800589C8(Actor_SnaInit *pActor, int a2);
|
||||
void sna_gun_800540D0(Actor_SnaInit *pActor, int a2);
|
||||
void sna_anim_punch_helper_800591F4(Actor_SnaInit *pActor, int a2);
|
||||
int sna_8004FDE8(Actor_SnaInit *pActor, Target_Data *pVec);
|
||||
void sna_8004F8E4(Actor_SnaInit *pActor, int a2);
|
||||
void sna_fn_800535B8(Actor_SnaInit *pActor, int time);
|
||||
void sna_knockdown_getup_80050668(Actor_SnaInit *pActor);
|
||||
void sna_anim_grenade_80058470(struct Actor_SnaInit *pActor, int a2);
|
||||
void sna_anim_claymore_80057474(struct Actor_SnaInit *pActor, int a2);
|
||||
void sna_anim_psg1_80056DDC(struct Actor_SnaInit *pActor, int a2);
|
||||
void sna_8004EE28(Actor_SnaInit *pActor);
|
||||
void sna_8004EB14(Actor_SnaInit *pActor);
|
||||
void sna_anim_wall_idle_and_c4_helper_800537D4(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_wall_crouch_helper_80053A54(Actor_SnaInit *pActor, int time);
|
||||
void sub_8004FAE8(Actor_SnaInit *pActor);
|
||||
void sna_anim_wall_move_helper_800538CC(Actor_SnaInit *pActor, int time);
|
||||
void sna_knock_80054D68(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_rungun_helper_80057844(Actor_SnaInit *pActor, int time);
|
||||
int sna_8005009C(Actor_SnaInit *pActor);
|
||||
int sub_80051BA4(Actor_SnaInit *pActor);
|
||||
int sub_8004EFE4(Actor_SnaInit *pActor, int param_2);
|
||||
int sub_8004E5E8(Actor_SnaInit *pActor, int param_2);
|
||||
int sub_8004E808(Actor_SnaInit *pActor, int, int, int, int); // dummy signature
|
||||
int sna_act_unk_helper2_helper3_80060684(SnaAutoMove *, SVECTOR *);
|
||||
void sna_anim_claymore_helper_80058780(Actor_SnaInit *pActor, int time);
|
||||
int HZD_GetAddress_8005C6C4(HZD_HDL *hzd, SVECTOR *vec, int param_3);
|
||||
void sna_act_unk2_80051170(TARGET *pTarget);
|
||||
void sna_act_helper3_helper_80056650(Actor_SnaInit *pActor, int time);
|
||||
void sna_act_unk_helper3_80055DD8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_mini_cutscene_800559D8(Actor_SnaInit *pActor, int time);
|
||||
void sna_anim_dying_80055524(Actor_SnaInit *pActor, int time);
|
||||
void sna_act_unk_helper2_helper2_800605DC(SnaAutoMove *autoMove, HZD_HDL *pHzd, SVECTOR *pVec);
|
||||
int sna_unk_helper2_helper_8006070C(SnaAutoMove *pAutoMove, CONTROL *pControl);
|
||||
void sna_80057A90(Actor_SnaInit *pActor, int time);
|
||||
void sna_8004EF14(Actor_SnaInit *pActor);
|
||||
GV_ACT *sna_NewSnake_8005B650(int name, int where, int argc, char **argv);
|
||||
int HZD_ReachTo_8005C89C(HZD_HDL *pHzd, int, int);
|
||||
int sna_act_unk_helper2_helper_helper_8005C974(HZD_HDL *pHzd, int, int, CONTROL *pControl);
|
||||
void sna_act_helper2_helper2_80033054(int id, SVECTOR *vec);
|
||||
int sna_ration_available_8004FB4C(void);
|
||||
|
||||
// TODO: move these to indivudual weapon headers
|
||||
GV_ACT *NewSOCOM_80065D74(CONTROL *a1, OBJECT *parentObj, int unit, int *a4, int a5);
|
||||
GV_ACT *famas_create_80066374(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *grenade_create_80066A4C(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *NewRCM_80066FF0(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *mine_init_800677BC(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *NewBomb_80067B20(CONTROL *a1, OBJECT *parentObj, int unit, int *a4, int a5);
|
||||
GV_ACT *NewStanGrenade_80066A74(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *NewChaffGrenade_80066AA0(CONTROL *a1, OBJECT *parentObj, int unit, int a4, int a5);
|
||||
GV_ACT *NewRifle_80068214(CONTROL *a1, OBJECT *parentObj, int unit, int *a4, int a5);
|
||||
|
||||
#endif // _sna_H_
|
||||
|
|
@ -14,7 +14,8 @@ Sna_E1 SECTION(".sdata") e1_800AB7BC = {95u, 95u, 99u, 100u, 26u, 102u, 88u, 89u
|
|||
Sna_E1 SECTION(".sdata") e1_800AB7C4 = {20u, 21u, 84u, 0u, 212u, 3u, 0u, 0u};
|
||||
|
||||
#ifdef VR_EXE
|
||||
char vr_pad[8] = {255, 255, 255, 255, 0, 0, 0, 0};
|
||||
char SECTION(".sdata") vr_pad[4] = {255, 255, 255, 255};
|
||||
Actor_SnaInit *SECTION(".sdata") snainit_actor_800A9424 = NULL;
|
||||
#endif
|
||||
|
||||
SVECTOR SECTION(".sdata") svector_800AB7CC = {150, 0, 50, 0};
|
||||
|
|
|
|||
Loading…
Reference in New Issue