first commit

master
teamarchive2.fnf.archive.org root 2021-04-06 22:15:31 +00:00
commit c624f88b88
420 changed files with 314971 additions and 0 deletions

3986
ABOSS.ASM Normal file

File diff suppressed because it is too large Load Diff

2907
ADJUST.ASM Normal file

File diff suppressed because it is too large Load Diff

1189
ARAB.ASM Normal file

File diff suppressed because it is too large Load Diff

2698
ATTRACT.ASM Normal file

File diff suppressed because it is too large Load Diff

3048
AUDIT.ASM Normal file

File diff suppressed because it is too large Load Diff

102
AUDIT.EQU Normal file
View File

@ -0,0 +1,102 @@
*
* AUDITS
*
* AUDITS ARE HANDLED BY AUDITS NUMBER OFF OF THE BASE
* OF THE AUDIT REGION
*
* IF "CHUTES" VALUE IS CHANGED....EXTRA VALUES MUST
* BE PUT IN THIS TABLE. (AND ADJUSTMENT TABLE OF COURSE)
*
AUDNULL equ 0
AUDLCOIN equ 1 ;TOTAL COINS IN LEFT CHUTE
AUDCCOIN equ 2 ;Center
AUDRCOIN equ 3 ;Right
AUDXCOIN equ 4 ;4TH CHUTE
AUDSERV equ 5 ;SERVICE CREDITS
AUDPAIDC equ 13
*
*
FRST_C equ AUDLCOIN ;FOR CLEARING COINS
LAST_C equ AUDPAIDC
*
AUD1STRT equ 14
AUD2STRT equ 15
AUD1CONT equ 16
AUD2CONT equ 17
AUD1TIME equ 18 ;5 SECOND CHUNKS. (700 YEARS WORTH)
AUD2TIME equ 19 ;5 SECOND CHUNKS.
AUDEXTRA equ 20 ;Extra men
AUDBEGIN equ 21 ;Started at beginning
AUDTAUNT1 equ 22 ;Dictator taunt
AUDBOSS1 equ 23 ;Reached orcus
AUDBOSS1SC equ 24 ;Starts/continues during orcus
AUDROAD1 equ 25 ;Reached road 1
AUDROAD1SC equ 26 ;Starts/continues during road
AUDAIRPORT equ 27 ;Reached airport
AUDROAD2 equ 28 ;Reached road 2
AUDREACTOR equ 29 ;Reached chemical plant reactor
AUDBOSSEND equ 30 ;Reached end boss
AUDRPDOME equ 31 ;Reached pleasure dome
AUDEPDOME equ 32 ;Entered pleasure dome
AUDLOCK equ 33 ;Watchdog lockup
AUDSECURITY EQU 34 ;Clicked on security chip breech
AUDPWWARPSO equ 36 ;
AUDPWWARPOK equ 37 ;
AUDWARPA equ 38 ;
AUDWARPT equ 39 ;
AUDWARPC equ 40 ;
AUDECHAIRPL equ 41 ;
AUDECHAIRSV equ 42 ;
AUDDEATHTOT equ 43 ;
AUDKEYTOT equ 44 ;
AUDFULLGAMES equ 45 ;
AUDAUTO equ 48 ;AUTO CYCLE PASSES
AUDSTAT equ 49 ;CMOS GAME STATE
AUDTRAP equ 50 ;UNUSED TRAP INSTRUCTION
AUDSURV equ 51 ;SURVIVED LOCKUPS
AUDBONE equ 52 ;GAMES NOT FINISHED
AUDHANG equ 53 ;WHEN CODE HANGS UP IN A LOOP
*
LAST_AUDIT equ 54
*
FRSTGAUD equ AUD1STRT
LASTGAUD equ LAST_AUDIT
*
* ADJUSTMENTS ARE ALL LONG WORDS REFERENCED BY ADJUSTMENT
* NUMBER.
*
ADJNULL equ 0
ADJPRICE equ 1 ;MASTER PRICING
ADJLMULT equ 2
ADJC1 equ ADJLMULT ;FIRST COIN TABLE ADJUSTMENT
ADJCMULT equ 3
ADJRMULT equ 4
ADJXMULT equ 5
ADJCUNIT equ 6
ADJBUNIT equ 7
ADJMUNIT equ 8
ADJCDIV equ 9
ADJFRAC equ 10 ;NON ZERO SAYS SHOW HALF CREDITS
ADJCX equ ADJFRAC ;LAST COIN TABLE ADJUSTMENT
ADJCSTRT equ 11 ;CREDITS REQUIRED TO START
ADJCCONT equ 12 ;CREDITS REQUIRED TO CONTINUE
ADJDIFF equ 13
ADJHSRES equ 14
ADJLIVES equ 15
ADJMUSIC equ 16
ADJMAXC equ 17 ;MAXIMUM CREDITS
ADJFREPL equ 18 ;NON-ZERO MEANS FREE PLAY
ADJVIRGIN equ 19 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED
**********************************;ADJVIRGIN IS MAINTAINED...BUT NOT USED
ADJGORE equ 20
ADJ1ST6 equ 21 ;NON-ZERO MEANS 1ST 6 UNTOUCHED.
ADJNOCPAG equ 22
ADJCNTR equ 23 ;COIN COUNTER MODE
LAST_ADJUST equ 23


2890
BACKUP/ADJUST.ASM Normal file

File diff suppressed because it is too large Load Diff

1076
BACKUP/ARAB.ASM Normal file

File diff suppressed because it is too large Load Diff

1584
BACKUP/ATTRACT.ASM Normal file

File diff suppressed because it is too large Load Diff

2954
BACKUP/AUDIT.ASM Normal file

File diff suppressed because it is too large Load Diff

87
BACKUP/AUDIT.EQU Normal file
View File

@ -0,0 +1,87 @@
*
* AUDITS
*
* AUDITS ARE HANDLED BY AUDITS NUMBER OFF OF THE BASE
* OF THE AUDIT REGION
*
*
* IF "CHUTES" VALUE IS CHANGED....EXTRA VALUES MUST
* BE PUT IN THIS TABLE. (AND ADJUSTMENT TABLE OF COURSE)
*
AUDNULL EQU 0
AUDLCOIN EQU 1 ;TOTAL COINS IN LEFT CHUTE
AUDRCOIN EQU 2 ;RIGHT CHUTE
AUDCCOIN EQU 3 ;CENTER CHUTE
AUDXCOIN EQU 4 ;4TH CHUTE
AUDSERV EQU 5 ;SERVICE CREDITS
AUDPAIDC EQU 13
*
*
FRST_C EQU AUDLCOIN ;FOR CLEARING COINS
LAST_C EQU AUDPAIDC
*
AUD1STRT EQU 14
AUD2STRT EQU 15
AUD1CONT EQU 16
AUD2CONT EQU 17
AUD1TIME EQU 18 ;5 SECOND CHUNKS. (700 YEARS WORTH)
AUD2TIME EQU 19 ;5 SECOND CHUNKS.
AUDEXTRA EQU 20
AUDWAVE2 EQU 21 ;REACHED WAVE 2 OF CIRCUIT 1
AUDMUTOID EQU 22 ;REACHED MUTOID MAN
AUDCIRC2 EQU 23 ;REACHED CIRCUIT 2 WAVE 1
AUDSCAR EQU 24 ;REACHED SCAR FACE
AUDCIRC3 EQU 25 ;REACHED CIRCUIT 3 WAVE 1
AUDTEMPL EQU 26 ;REACHED TEMPLE WAVES
AUDSNAKES EQU 27 ;REACHED SNAKE BOSS MONSTERS
AUDEND EQU 28 ;REACHED END OF GAME
AUDLOCK EQU 29 ;WATCHDOG LOCKUP
AUDWAVE1 EQU 30 ;WALKED INTO WAVE 1 CIRCUIT 1!
AUDAUTO EQU 32 ;AUTO CYCLE PASSES
AUDSTAT EQU 33 ;CMOS GAME STATE
AUDTRAP EQU 38 ;UNUSED TRAP INSTRUCTION
AUDSURV EQU 39 ;SURVIVED LOCKUPS
AUDBONE EQU 40 ;GAMES NOT FINISHED
*
LAST_AUDIT EQU 40
*
FRSTGAUD EQU AUD1STRT
LASTGAUD EQU LAST_AUDIT
*
* ADJUSTMENTS ARE ALL LONG WORDS REFERENCED BY ADJUSTMENT
* NUMBER.
*
ADJNULL EQU 0
ADJPRICE EQU 1 ;MASTER PRICING
ADJLMULT EQU 2
ADJC1 EQU ADJLMULT ;FIRST COIN TABLE ADJUSTMENT
ADJRMULT EQU 3
ADJCMULT EQU 4
ADJXMULT EQU 5
ADJCUNIT EQU 6
ADJBUNIT EQU 7
ADJMUNIT EQU 8
ADJCDIV EQU 9
ADJFRAC EQU 10 ;NON ZERO SAYS SHOW HALF CREDITS
ADJCX EQU ADJFRAC ;LAST COIN TABLE ADJUSTMENT
ADJCSTRT EQU 11 ;CREDITS REQUIRED TO START
ADJCCONT EQU 12 ;CREDITS REQUIRED TO CONTINUE
ADJDIFF EQU 13
ADJHSRES EQU 14
ADJLIVES EQU 15
ADJMUSIC EQU 16
ADJMAXC EQU 17 ;MAXIMUM CREDITS
ADJFREPL EQU 18 ;NON-ZERO MEANS FREE PLAY
ADJVIRGIN EQU 19 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHTED
**********************************;ADJVIRGIN IS MAINTAINED...BUT NOT USED
ADJGORE EQU 20
ADJ1ST6 EQU 21 ;NON-ZERO MEANS 1ST 6 UNTOUCHED.
ADJNOCPAG EQU 22
ADJCNTR EQU 23 ;COIN COUNTER MODE
LAST_ADJUST EQU 23


1375
BACKUP/BAKGND.ASM Normal file

File diff suppressed because it is too large Load Diff

407
BACKUP/BGNDPAL.ASM Normal file
View File

@ -0,0 +1,407 @@
.OPTION B,D,L,T
.include "BGNDTBL.GLO"
.DATA
GRNDP: ;PAL #2
.word 64 ;pal size
.word >0,>0,>C63,>1084,>10A3,>10C3,>14A5,>18C6,>14E4,>1904
.word >2108,>1924,>1564,>1184,>842,>1063,>1083,>1482,>1483,>14A3
.word >18A3,>1484,>14A4,>18A4,>18A5,>841,>480,>1880,>20C0,>C0
.word >100,>2900,>A0,>120,>8E1,>E0,>140,>9A2,>DA2,>19A6
.word >DE1,>E63,>1440,>1460,>1860,>1C80,>18A0,>1CA0,>294A,>318C
.word >7E60,>7F20,>84,>C6,>E7,>108,>129,>16C,>7CA3,>0
.word >0,>0,>0,>0
HNGRP: ;PAL #5
.word 64 ;pal size
.word >0,>0,>800,>820,>C40,>2400,>C60,>1060,>1480,>14A0
.word >18A0,>18C0,>1CC0,>20E0,>2100,>2500,>843,>1481,>18A2,>1CC3
.word >C64,>20E4,>2505,>40A,>14A6,>C0F,>1CE8,>252A,>3000,>2D20
.word >2926,>2D60,>2D47,>3168,>2D6C,>3800,>3560,>4400,>6400,>3589
.word >35A0,>39AA,>45C0,>3DCB,>41EC,>460D,>4A2E,>4211,>4E4F,>5270
.word >1084,>14A5,>3160,>45E0,>4600,>39CE,>0,>0,>0,>0
.word >0,>0,>0,>0
UFLP: ;PAL #7
.word 43 ;pal size
.word >0,>2,>842,>443,>844,>864,>C65,>C85,>1084,>10A6
.word >14C7,>18E8,>7E00,>7E60,>7EC0,>7F20,>860,>801,>820,>802
.word >822,>C02,>C22,>C03,>C04,>1002,>1003,>1004,>1043,>1403
.word >1404,>1804,>1824,>1005,>1405,>1406,>1806,>1807,>1C05,>1C25
.word >2005,>1C07,>1C08
CANDB: ;PAL #8
.word 64 ;pal size
.word >0,>820,>840,>C40,>1040,>1060,>1460,>84,>A5,>1480
.word >14A0,>1880,>C6,>E7,>18C6,>108,>109,>129,>16C,>1CE
.word >252,>1CA0,>20A1,>20C0,>28C0,>2CE0,>3100,>3942,>4185,>45A7
.word >522B,>7E60,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>7FFF
JEEPP2: ;PAL #11
.word 64 ;pal size
.word >0,>0,>40,>80,>A1,>C1,>101,>121,>162,>182
.word >1C2,>1E3,>223,>243,>283,>2E4,>0,>842,>1084,>18C6
.word >2108,>294A,>318C,>39CE,>4210,>4E73,>6318,>739C,>7FF7,>60
.word >A1,>121,>4C1,>521,>D81,>DE1,>E02,>16A3,>10A4,>1906
.word >C63,>3C00,>6C43,>5400,>5ECA,>6306,>5ACE,>4E6B,>ED,>171
.word >237,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>7FFF
BBPALS:
.long ARPRTPL
.long DESRTPL
.long GRNDP
.long FRTCLS
.long DGP1
.long HNGRP
.long PPLP
.long UFLP
.long CANDB
.long BLUJET
.long BULLET
.long JEEPP2
.long DGP3
.long SPYDERP1
.long FNDP
.long JEEPP
JETPAL: ;PAL #4
.word 64 ;pal size
.word >0,>0,>1420,>1880,>1C00,>2000,>1CA0,>20A0,>20C0,>2400
.word >24C0,>24E0,>2800,>2C00,>28E0,>2900,>2D00,>1,>421,>463
.word >C63,>1483,>14A2,>1084,>14A5,>10C6,>1CE7,>1D08,>156C,>2529
.word >294A,>2D6B,>29CF,>3000,>3400,>3100,>3120,>3520,>3540,>3800
.word >3841,>3920,>3940,>3C00,>3D40,>3D60,>4000,>4160,>4C21,>318C
.word >35AD,>4180,>4580,>4980,>4DA0,>59E0,>39CE,>31F0,>3DEF,>3A32
.word >4210,>4631,>4E73,>5EF7
ZZPALS:
.long BULLET
.long DESRTPL
.long GRNDP
.long FRTCLS
.long JETPAL
.long HNGRP
.long PPLP
.long GRNJET
PITP: ;PAL #0
.word 2 ;pal size
.word >0,>1861
AAPALS:
.long PITP
.long DESRTPL
.long FRTCLS
.long GRNDP
.long PPLP
.long BULLET
.long JEEPP2
XXPALS:
.long PITP
.long DESRTPL
.long JEEPP2
.long GRNDP
.long PPLP
.long BULLET
BACK1: ;PAL #0
.word 32 ;pal size
.word >0,>0,>1,>2,>403,>404,>405,>406,>407,>808
.word >809,>80A,>82B,>82C,>C2D,>C2E,>C2F,>C30,>C31,>1032
.word >1033,>1034,>1035,>1036,>1437,>1438,>1439,>143A,>143B,>183D
.word >183E,>185F
carn3: ;PAL #1
.word 61 ;pal size
.word >0,>0,>18C6,>6000,>64C6,>7880,>78A0,>78C0,>78E0,>7900
.word >7920,>7940,>7946,>7960,>7980,>79A0,>79C0,>79E0,>7A00,>7986
.word >79E6,>7A20,>7A40,>7A60,>7A80,>7AA0,>7AC0,>7AE0,>7B00,>7B20
.word >7B40,>7B60,>7AC6,>7B0B,>7B6B,>7B6F,>7C80,>7CA0,>7CC0,>7CE0
.word >7D20,>7D46,>7D60,>7D80,>7DC0,>7DE0,>7E00,>7E20,>7DC6,>7E40
.word >7E60,>7E80,>7EA0,>7EC0,>7EE0,>7F00,>7F20,>7F40,>7F60,>7EC6
.word >7F4C
PGPALS:
.long BACK1
.long carn3
.long BIGPL1
.long GUNSP1
CRMP: ;PAL #0
.word 64 ;pal size
.word >0,>0,>400,>842,>1440,>C63,>1084,>10A5,>1484,>14A5
.word >18A5,>160,>201,>221,>241,>2A1,>18C6,>1CC6,>18E7,>1CE7
.word >1CE8,>1016,>2108,>2129,>2509,>2529,>292A,>294A,>A75,>2D6B
.word >316C,>2D8B,>318C,>31AC,>31AD,>3569,>358D,>35AD,>39AD,>39CE
.word >39EE,>6D44,>39EF,>3DEF,>3E0F,>4210,>4631,>4A52,>4E73,>5273
.word >4E93,>5294,>52B4,>56B5,>5AD6,>5EF7,>34C0,>7C00,>1000,>2820
.word >3C60,>5840,>3C60,>2820
IRAQPAL: ;PAL #1
.word 64 ;pal size
.word >0,>914,>FF2C,>34E1,>4565,>4DA7,>5A2B,>7EC0,>7F6A,>7FD2
.word >6A90,>1155,>1998,>2E3D,>7FE0,>7300,>6680,>5DA0,>0,>7F76
.word >7713,>6AB0,>5E6D,>520A,>4186,>2CE1,>2080,>842,>1084,>18C6
.word >2108,>294A,>318C,>3DEF,>4A52,>56B5,>6739,>77BD,>11E3,>2285
.word >1F04,>3842,>4884,>58C6,>76EA,>6EA8,>6666,>1104,>1164,>11E4
.word >2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108
.word >2108,>2108,>2108,>2108
GENP: ;PAL #3
.word 64 ;pal size
.word >0,>420,>840,>841,>860,>861,>C60,>C81,>1081,>10A1
.word >1480,>1C60,>14C2,>18E2,>1084,>10A2,>14C3,>18C3,>445,>14A5
.word >889,>18C6,>14E3,>18E3,>1903,>1D03,>1D04,>1D05,>1D24,>2481
.word >28C0,>20C1,>2124,>2125,>2145,>2545,>2565,>2944,>2945,>2108
.word >2126,>2546,>294A,>2566,>2966,>2567,>2987,>2C81,>30A2,>3100
.word >34C3,>2D87,>2D88,>31A9,>31AB,>35CB,>3CE3,>3CE4,>61A1,>4926
.word >3DEE,>5547,>59AB,>0
TECPAL: ;PAL #4
.word 64 ;pal size
.word >0,>842,>443,>464,>466,>467,>866,>886,>887,>129
.word >889,>4AA,>8AA,>8CB,>4ED,>90E,>92F,>1CE,>273,>319
.word >1C80,>20A0,>2882,>28C0,>2CE0,>30E0,>30A3,>3100,>3CC3,>3500
.word >3D20,>4520,>4140,>4960,>5580,>5980,>69C0,>6DE0,>7E00,>C89
.word >CAA,>CAB,>4505,>4D26,>5568,>5989,>5DCB,>CCD,>D51,>10CE
.word >10EF,>10F0,>1111,>1112,>1533,>1556,>1577,>159A,>31D7,>768F
.word >6A0E,>6F7B,>0,>0
LMPBPALS:
.long CRMP
.long IRAQPAL
.long STATICP
.long GENP
.long TECPAL
.long MAPP
.long DOMEP
CRMPZ: ;PAL #0
.word 64 ;pal size
.word >0,>0,>400,>821,>1C20,>C41,>1462,>1482,>1C62,>1C82
.word >1C82,>140,>1E0,>1E0,>200,>260,>1CA3,>24A3,>1CC3,>24C3
.word >24C4,>140B,>2CE4,>2D04,>2CE4,>2D04,>3505,>3525,>A2B,>3D45
.word >3D46,>3D65,>3D66,>3D86,>3D86,>4544,>4566,>4586,>4D86,>4DA7
.word >4DC7,>7D22,>4DC7,>4DC7,>4DE7,>55E8,>5DE9,>5E09,>662A,>6E2A
.word >664A,>6E4A,>6E6A,>6E6B,>768B,>7EAC,>44A0,>7C00,>1400,>3400
.word >4C40,>7420,>4C40,>3400
CLDSZ: ;PAL #1
.word 64 ;pal size
.word >0,>0,>1485,>14A7,>14C7,>14C8,>14E8,>1CC8,>1CE8,>1CE9
.word >24C7,>24E9,>1D09,>2509,>250B,>252B,>252C,>252C,>250B,>252B
.word >252C,>2D2C,>252C,>252E,>254C,>254E,>2D2C,>2D4C,>2D2E,>2D4E
.word >2D4F,>354E,>354F,>2D6E,>2D6F,>356E,>356F,>358F,>3570,>3590
.word >356F,>3590,>35B0,>35B2,>3DB2,>35D2,>3DD2,>3DD3,>45D3,>3DF2
.word >3DF3,>45F3,>4613,>45F5,>4615,>4615,>4636,>4635,>4636,>4656
.word >4657,>4E56,>4E57,>4E77
BGFRTP: ;PAL #3
.word 64 ;pal size
.word >0,>421,>821,>81,>A2,>C41,>1061,>1461,>1481,>1C81
.word >18A2,>1CA2,>C3,>E4,>105,>1CC3,>20C3,>20E4,>24E4,>2504
.word >2505,>2525,>127,>189,>1CC,>2906,>2926,>2947,>2CC1,>2D04
.word >2D26,>2D47,>3168,>3589,>35AA,>39AA,>3DAA,>7621,>3DCB,>41EC
.word >45ED,>460D,>4A0D,>4A2D,>4A2E,>4E2E,>4A4F,>4E4F,>4E70,>5250
.word >5270,>5670,>5291,>5691,>56B1,>5A91,>5AB2,>6B36,>6400,>19D
.word >C0,>100,>1C0,>3C0
PROFP2: ;PAL #4
.word 64 ;pal size
.word >0,>0,>866,>14A5,>C87,>10A9,>10CB,>2108,>2528,>252B
.word >290A,>294A,>2D6B,>10CC,>10EC,>14CC,>14EC,>18EC,>14EE,>1510
.word >1910,>1930,>294C,>316C,>318C,>356D,>358C,>35AD,>1D2F,>2151
.word >2571,>2DB1,>38C4,>40E4,>4127,>39CE,>3DCE,>39CF,>39D0,>39EF
.word >3DEF,>3DF0,>420F,>4210,>3DF1,>4631,>4A52,>4E73,>4A75,>5294
.word >5295,>56B5,>56D7,>5AD6,>5AD7,>5EF7,>5EF8,>6318,>6739,>6B5A
.word >6F7B,>739C,>77BD,>7BDE
PROFP: ;PAL #6
.word 64 ;pal size
.word >0,>0,>840,>C40,>1060,>1460,>1480,>1880,>1881,>18A0
.word >1C60,>1CA0,>20C0,>24A0,>28E0,>2D00,>3520,>842,>1CA3,>24A2
.word >2882,>2CA3,>30A3,>34C4,>38C4,>38E4,>3CE4,>40E4,>34E5,>3CE5
.word >40E5,>4105,>1D2D,>3D48,>4400,>4420,>4505,>4506,>4526,>4527
.word >4820,>4926,>4947,>4948,>4C00,>4D47,>6441,>49A0,>4D68,>5168
.word >4D69,>5169,>5189,>5589,>55AA,>59AA,>55AB,>59CB,>5DCC,>5DEC
.word >5E0D,>620D,>5A51,>6318
TPALS:
.long CRMPZ
.long CLDSZ
.long FRTCLS
.long BGFRTP
.long PROFP2
.long GOOBP
.long PROFP
CLDS8: ;PAL #1
.word 64 ;pal size
.word >0,>0,>CA4,>10C5,>10E5,>10E6,>1106,>14E6,>1506,>1507
.word >18E5,>1907,>1527,>1927,>1928,>1948,>1949,>1969,>1D28,>1D48
.word >1D49,>2149,>1D69,>1D6A,>1D89,>1D8A,>2169,>2189,>216A,>218A
.word >218B,>258A,>258B,>21AA,>21AB,>25AA,>25AB,>25CB,>25AC,>25CC
.word >29AB,>29CC,>29EC,>29ED,>2DED,>2A0D,>2E0D,>2E0E,>320E,>2E2D
.word >2E2E,>322E,>324E,>322F,>324F,>364F,>3270,>366F,>3670,>3690
.word >3691,>3A90,>3A91,>3AB1
OBPALS:
.long CRMP
.long CLDS8
.long FRTCLS
.long BGFRTP
.long SOLDB
.long TECPAL
.long GENP
.long STATICP
.long GOOBP
RTPALS:
.long FRTCLS
.long GRNDP
.long REACTR
.long BULLET
.long GOOBP
.long PPLP
.long CANDB
.long UFLP
CHUTE2: ;PAL #7
.word 24 ;pal size
.word >0,>0,>840,>C60,>1080,>14A1,>24A0,>28C0,>18E2,>18C6
.word >1D03,>1D23,>1D24,>2124,>2144,>2145,>2545,>2108,>2566,>2966
.word >2987,>294A,>318C,>35EE
FNDP3: ;PAL #15
.word 20 ;pal size
.word >0,>1400,>842,>2108,>2800,>3000,>3000,>3800,>3C00,>4000
.word >39AF,>4800,>5400,>6000,>6800,>7000,>7800,>7D49,>5294,>7FFF
LDPALS:
.long PITP
.long DESRTPL
.long STUFFP
.long DISHPAL
.long GOOBP
.long CANDB
.long GRNDP
.long CHUTE2
.long BULLET
.long PPLP
.long DGP1
.long DGP3
.long DGP2
.long FRTCLS
.long FNDP
.long FNDP3
.long MTNKP
frtcls2: ;PAL #0
.word 64 ;pal size
.word >400,>400,>C00,>C00,>C00,>1420,>1420,>2440,>1440,>2C80
.word >1480,>2480,>2CA0,>34A0,>34C0,>34C0,>3CE0,>34E0,>34E0,>4500
.word >4D40,>3D00,>4540,>4D40,>4D40,>5560,>6580,>4D60,>6DE0,>65E0
.word >6E00,>7E00,>7E20,>6E00,>7620,>7E80,>7E40,>7E80,>7EA0,>7EE0
.word >7F20,>7F20,>2440,>3CE0,>4D40,>7600,>7EE0,>4C0,>720,>7C00
.word >7C00,>7C00,>400,>400,>400,>7C00,>7EC0,>7F20,>480,>500
.word >600,>6C0,>720,>4F20
PALS:
.long frtcls2
.long GRNDP
.long REACTR
.long BULLET
.long GOOBP
.long PPLP
.long CANDB
.long UFLP
.long FRTCLS
PPALS:
.long CRMP
.long FRTCLS
.long STATICP
.long GENP
.long TECPAL
APALS:
.long FRTCLS
.long GRNDP
.long UFLP
.long CANDB
.long PPLP
.long JEEPP2
DBPALS:
.long PITP
.long DESRTPL
.long PPLP
.long BULLET
.long GRNDP
UPAL: ;PAL #0
.word 64 ;pal size
.word >0,>420,>822,>841,>843,>864,>C62,>1083,>14A4,>C45
.word >1066,>1467,>1087,>18C5,>1088,>1889,>14A9,>18CB,>1CE6,>2107
.word >2528,>1CAB,>1CED,>20CD,>2949,>2D6A,>318B,>35AC,>39CD,>20EE
.word >24EE,>24EF,>2510,>2511,>2911,>2D33,>3173,>3556,>3598,>41BC
.word >4630,>4E72,>6317,>77BC,>7D60,>7E00,>7E60,>7EC0,>7F20,>0
.word >A0,>C0,>E0,>100,>120,>160,>1A0,>200,>2C0,>360
.word >3E0,>300,>220,>160
DCPALS:
.long UPAL
.long FRTCLS
.long GRNDP
.long UFLP
.long PPLP
.long SPYDERP1
DDPALS:
.long UPAL
.long UFLP
.long GRNDP
.long PPLP
.long FRTCLS
.long CANDB
.long BULLET
DJPALS:
.long FRTCLS
.long GRNDP
.long UFLP
.long GOOBP
.long CANDB
DHPALS:
.long PITP
.long DESRTPL
.long PPLP
.long GRNDP
.long BULLET
HI3: ;PAL #0
.word 64 ;pal size
.word >0,>400,>C42,>160,>201,>221,>241,>2A1,>1CC6,>1416
.word >2508,>2D2A,>2D4A,>2D6B,>2D8B,>358C,>35AD,>3DCE,>4610,>4E73
.word >56B5,>5EF7,>2C80,>34E0,>3D00,>4540,>4580,>4DC0,>5600,>5E40
.word >66A0,>7720,>7F40,>1484,>7FED,>1400,>2C00,>3400,>4400,>5C00
.word >7C00,>0,>4400,>8,>6600,>300,>0,>0,>0,>0
.word >0,>0,>600,>0,>0,>0,>0,>0,>4,>0
.word >0,>0,>0,>7FFF
OREPALS:
.long HI3
.long BIGPL1
.long BIGPL2
.long STUFFP
.long FRTCLS
ENTER1: ;PAL #9
.word 31 ;pal size
.word >0,>0,>1,>2,>403,>404,>405,>406,>407,>808
.word >809,>80A,>82B,>82C,>C2D,>C2E,>C2F,>C30,>C31,>1032
.word >1033,>1034,>1035,>1036,>1437,>1438,>1439,>143A,>143B,>183D
.word >185F
TC2: ;PAL #11
.word 13 ;pal size
.word >0,>0,>4,>404,>405,>826,>827,>C28,>C29,>102A
.word >102B,>104C,>104E
RPALS:
.long CRMP
.long CLDS8
.long FRTCLS
.long BGFRTP
.long PROFP2
.long TECPAL
.long GENP
.long PROFP
.long STATICP
.long ENTER1
.long DUXPAL
.long TC2
ROOMPALS:
.long CHAIRP
.long MTRP

7689
BACKUP/BGNDTBL.ASM Normal file

File diff suppressed because it is too large Load Diff

6118
BACKUP/CARN.ASM Normal file

File diff suppressed because it is too large Load Diff

85
BACKUP/CARN.CMD Normal file
View File

@ -0,0 +1,85 @@
/* CARN linker command file */
-e INIT_PROG /* entry point of program */
-f 0xFFFF /* fill unspecified memory with value */
-o d:CARN.out /* specify output file */
-m d:CARN.map /* map file */
-s /* Kill the symbol table */
NDSP1.OBJ /*IMAGE HANDLER*/
RAM.OBJ /*RAM ALLOCATIONS*/
UTIL.OBJ /*UTILITIES*/
PALL.OBJ /*PALETTE ROUTINES*/
MPROC.OBJ /*MULTI-TASKER*/
BAKGND.OBJ /*BACKGROUND GENERATOR*/
BGNDTBL.OBJ /*BACKGROUND TABLES*/
BGNDPAL.OBJ /*BACKGROUND PALETTES*/
IMGTBL.OBJ /*IMAGE STUB*/
IMGPAL.OBJ /*IMAGE PALETTES GENERATED BY LOADIMG*/
MAIN.OBJ /*INITIALIZATION AND INTERRUPTS*/
CARN.OBJ /*FIRST GAME MODULE*/
SCORE.OBJ
SHOTS.OBJ
COLL2.OBJ
SOUNDS.OBJ
PATCH.OBJ
TEXT.OBJ
WAVES.OBJ
ATTRACT.OBJ
ADJUST.OBJ
AUDIT.OBJ
TEST.OBJ
CHUNKS.OBJ
ICONS.OBJ
NEWHULK.OBJ
HELPER.OBJ
T72.OBJ
ARAB.OBJ
LAYER.OBJ
TRIG.OBJ
FIEND.OBJ
HSTD.OBJ
MINE.OBJ
DIAG.OBJ
MENU.OBJ
RACKUP.OBJ
SHAWN.OBJ
RBOSS.OBJ
MEMORY /* set up memory for sdb board */
{
SCRATCH : org = 0x01000000, len = 0x100000
ROM : org = 0xFFC00000, len = 0x300000
ROM2 : org = 0xFFFF6F00, len = 0x8D00
TRAP31 : org = 0xFFFFFC00, len = 0x400
IROM : org = 0x02000000, len = 0x400000
}
SECTIONS /* linker sections directive */
{
VECTORS: {} > TRAP31
IMAGES: {} > IROM
GROUP:
{
shit: {}
SHIT: {}
} > ROM2
GROUP:
{
FIXED: {}
OFIXED: {}
NFIXED: {}
.BSS: {}
.bss: {}
SYSWORK: {}
} > SCRATCH
GROUP:
{
.text: {}
.TEXT: {}
.data: {}
.DATA: {}
img_tbl: {}
} > ROM
}


21
BACKUP/CARN.TVS Normal file
View File

@ -0,0 +1,21 @@
.struct disp.equ
.STRUCT MPROC.EQU
.STRUCT GAME.EQU
.STRUCT SYS.INC
.km !f1 \ @J"HOME"@K*ACTIVE\ PROC\ PLINK"CR"
.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR"
.km !f3 \ @J"HOME"@KPALRAM\ PAL\ *"CR"
.km !f4 \ @J"HOME"@K*BAKLST\ OBJ\ OLINK"CR"
.km !f5 \ @J"HOME"@K*OFREE\ OBJ\ OLINK"CR"
;**** display SOURCE when cursor on longword in struct or mem display ****
.km S @M"CR"S"CR"
;**** display WORDS when cursor on longword in struct or mem display ****
.km W @M"CR"W"CR"
; this is a comment
.wp SAVESCR,UHW
.WP STATUS,UHW
.wp CPULEFT,UDW
.wp CPUAVG,UDW
.wp START,UHW


303
BACKUP/CHUNKS.ASM Normal file
View File

@ -0,0 +1,303 @@
.FILE 'CHUNKS.ASM'
.TITLE 'CHUNK/EXPLOSION CODE'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
;
; INITIATED: SEPT 2,1990
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "IMGTBL.GLO"
.INCLUDE "GAME.EQU"
;
;SOUNDS EXTERNAL
;
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF RANGRAND,GETFPAL,RANDPER,FRANIM,GPALOBJ,GETCPNT
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF BLOOD_LST2,ALL_CHUNKS,CHUNK_OBJ,BEGIN_CHNK,PCTOT
.DEF BLOOD_LST1,PCINFO,LASTPC
;
;UNINITIALIZED RAM DEFINITIONS
;
.BSS LASTPC,32
.BSS PCTOT,16
.BSS PCINFO,(32+16+32)*PCSMAX
.BSS GENERIC_INIT,7*32-16
;
;EQUATES FOR THIS FILE
;
;FOR STARTING A CHUNK OBJECT
XVAL .EQU GENERIC_INIT
YVAL .EQU XVAL+32
IMG .EQU YVAL+32
ZPOS .EQU IMG+32
FLAGS .EQU ZPOS+16
ID .EQU FLAGS+16
XVEL .EQU ID+16
YVEL .EQU XVEL+32
;
.TEXT
CHUNK_OBJ:
;A9=XVEL
;A10=YVEL FOR ADDING IN
;A11=LIST FOR FRANIM, FIRST ENTRY IS IMG TO START, 0 ENDS LIST
;PROCESS FOR CHUNKING CRATE, ETC
;A8=PNTR TO OBJECT TO BLOW UP
;PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (ALL_CHUNKS) PROCESS
MOVE @PCTOT,A0
CMPI 40,A0
JRGE DONE
CALLA GETCPNT
MOVX A1,A0
SLL 16,A0
;A0=PROPER X,A1=Y
MOVE A9,A6
MOVE A10,A7
MOVE *A11+,A2,L
MOVI 293,A3 ;240
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5 ;I WILL KILL MYSELF
CALLR BEGIN_CHNK
MOVE *A13(PDATA),A0
JRZ NOCH
;CHANGE TO OTHER PAL
MOVE A0,*A8(OPAL),W
NOCH
;NOW INSERT THIS PNTR INTO CHUNK DRIVER
MOVE @LASTPC,A0,L
MOVE A8,*A0+,L
MOVK 1,A1
MOVE A1,*A0+,W ;INIT TICK CNT
MOVE *A11+,A9,L ;LIST FOR THIS CHUNK
MOVE A9,*A0+,L
MOVE A0,@LASTPC,L
;WILL NOW GENERATE X CHUNKS FOR CRATE DEATH
AGAIN MOVE *A11+,A9,L
JRZ DONE
MOVE @PCTOT,A2
INC A2
MOVE A2,@PCTOT
CALLR NEWV2 ;GET VELOCITIES FOR THIS CHUNK
CALLR QUICK_CHNK
MOVE *A13(PDATA),A0
JRZ NOCH2
;CHANGE TO OTHER PAL
MOVE A0,*A8(OPAL),W
NOCH2 MOVE @LASTPC,A0,L
MOVE A8,*A0+,L
MOVK 1,A1
MOVE A1,*A0+,W ;INIT TICK CNT
MOVE A9,*A0+,L
MOVE A0,@LASTPC,L
JRUC AGAIN
DONE DIE
NEWV MOVI -09000H,B0
MOVI 09000H,B1
CALLA RANGRAND
ADD A6,A0
MOVE A0,@XVEL,L
MOVI -07000H,B0
MOVI 07000H,B1
CALLA RANGRAND
ADD A7,A0
MOVE A0,@YVEL,L
RETS
NEWV2 MOVI -0E000H,B0
MOVI 0E000H,B1
CALLA RANGRAND
ADD A6,A0
MOVE A0,@XVEL,L
MOVI -0C000H,B0
MOVI 0C000H,B1
CALLA RANGRAND
ADD A7,A0
MOVE A0,@YVEL,L
RETS
ALL_CHUNKS:
;PROCESS WHICH HANDLES ALL CHUNKS
CLR A0
MOVI PCINFO,A1
MOVI PCSMAX,A2
PCL1: MOVE A0,*A1+,L
MOVE A0,*A1+,W
MOVE A0,*A1+,L
DSJS A2,PCL1
MOVI PCINFO,A0
MOVE A0,@LASTPC,L
PCTP: MOVI PCINFO,A3
PCTP1:
MOVE *A3+,A8,L
JREQ DN
;PC PNTR FOUND
MOVE *A3,A0,W ;GET SLP TIME
DEC A0
MOVE A0,*A3+,W
JRGT PCOUTA ;JRNE
;READY FOR ANIMATION ON THIS PIECE
MOVE *A3,A9,L ;GET FRANIM LIST
MOVK 4,A1
JSRP FRANIM ;PIG ON CYCLES!
JRC YDONE ;GET RID OF PIECE
MOVE A9,*A3,L
; SUBK 16,A3
MOVE A0,*A3(-16),W ;RESTORE SLEEP TIME
; ADDK 16,A3
PCOUTA:
ADDK 32,A3
JRUC PCTP1
YDONE: SUBI 48,A3
;ONLY NECESSARY IF ONLY PIECE IN LIST?
CLR A0
MOVE A0,*A3,L
MOVE A8,A0
CALLA DELOBJ
MOVE @PCTOT,A0
DEC A0
MOVE A0,@PCTOT
JRNN YD
CLR A0
MOVE A0,@PCTOT
YD
MOVE @LASTPC,A0,L
SUBI 80,A0
MOVE A0,@LASTPC,L
MOVE *A0,A5,L
JREQ DN ;BR=ONLY 1 PC IN LIST AND IT DIED!
MOVE *A0+,A1,L
MOVE *A0+,A2,W
MOVE *A0,A5,L
CLR A4
SUBI 48,A0
MOVE A4,*A0,L ;ZERO OUT PREVIOUS LAST ENTRY
MOVE A1,*A3+,L
MOVE A2,*A3+,W
MOVE A5,*A3+,L
JRUC PCTP1
DN: SLEEPK 1
JRUC PCTP
BEGIN_CHNK:
MOVE A0,@XVAL,L
MOVE A1,@YVAL,L
MOVE A2,@IMG,L
MOVE A3,@ZPOS
MOVE A4,@FLAGS
MOVE A5,@ID
MOVE A6,@XVEL,L
MOVE A7,@YVEL,L
QUICK_CHNK:
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
CALLA STFOBJ ;STUFF OBJECT DATA
MOVE A13,*A0(OPLINK),L
CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
RETS
*****************************************************************************
;
; FRANIM LISTS OF CHUNKS/BLOOD
;
*****************************************************************************
BLOOD_LST1:
;BLOODY CHUNK
.LONG rblot1
.WORD NEWPALET|20
.LONG RDBOOM ;ONUP1
.LONG rblot2
.WORD 5
.LONG rblot3
.WORD 5
.LONG rblot4
.WORD 5
.LONG rblot5
.WORD 5
.LONG rblot6
.WORD 5
.LONG rblot7
.WORD 5
.LONG rblot8
.WORD 4
.LONG rblot9
.WORD 4
.LONG rblot10
.WORD 5
.LONG 0
BLOOD_LST2:
;OVAL BLOOD EXPLOSION
.LONG bldclt1
.WORD NEWPALET|1
.LONG RDBOOM ;ONUP1
.LONG bldclt2
.WORD 6
.LONG bldclt3
.WORD 6
.LONG bldclt4
.WORD 6
.LONG bldclt5
.WORD 6
.LONG bldclt6
.WORD 6
.LONG bldclt7
.WORD 6
.LONG bldclt8
.WORD 7
.LONG 0
BLOOD_LST3:
;BLOODY CHUNK
.LONG rblot1
.WORD NEWPALET|40
.LONG RDBOOM ;ONUP1
.LONG rblot2
.WORD 5
.LONG rblot3
.WORD 6
.LONG rblot4
.WORD 6
.LONG rblot5
.WORD 5
.LONG rblot6
.WORD 5
.LONG rblot7
.WORD 5
.LONG rblot8
.WORD 4
.LONG rblot9
.WORD 4
.LONG rblot10
.WORD 5
.LONG 0
*****************************************************************************
.END


1340
BACKUP/CL2.ASM Normal file

File diff suppressed because it is too large Load Diff

1385
BACKUP/COLL2.ASM Normal file

File diff suppressed because it is too large Load Diff

6
BACKUP/DEMO.ASM Normal file
View File

@ -0,0 +1,6 @@
;
.END


3102
BACKUP/DIAG.ASM Normal file

File diff suppressed because it is too large Load Diff

107
BACKUP/DISP.EQU Normal file
View File

@ -0,0 +1,107 @@
.GLOBAL OFREE,OBJLST,BAKLST,DISPLAYON,SCRNRELV
.GLOBAL OINIT,GETOBJ,INSOBJ,DELOBJ,DELOBJA8
.GLOBAL DISPLAY,ADDOBJ,KILOBJ,OBJSTR,DISPH
.GLOBAL ANI,STFOBJ,MAKOBJ,SCRTST,SCRTSTG,GSAGOF,GANIOF,DELBOBJ
.GLOBAL YZSORT,INSBOBJ,KILBOBJ
.GLOBAL PULLBOBJ,PULLOBJ,GANISAG,ADJSTWTL,CLIPOBJ
.GLOBAL QDMA,QDMAN,GETANIXY
.GLOBAL SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL
.GLOBAL SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL
.GLOBAL OBJSTR,SCREENTL,SCREENLR,QSYNC,DMAQCUR,DMAQCNT
.GLOBAL BOTQ0CNT,BOTQ1CNT,TOPQ0CNT,TOPQ1CNT,BOTQ0FLG,BOTQ1FLG
.GLOBAL TOPQ0FLG,TOPQ1FLG,BOTQ0,BOTQ1,TOPQ0,TOPQ1,STOPOBJS
.GLOBAL FREEOBJ,FREEOBJE
.GLOBAL EXISTOBJ,DMAINT
.GLOBAL DISPQT,ENDOFREE,ISOBJ
.GLOBAL BEGINOBJ,BEGINOBJ2,BKGSAGOF
.global KIL1OBJC,KILOBJN,DELOBJDIE,FRQDELDIE
*GLOBALS CONNECTED TO NARC
.GLOBAL DFRMGRND,CURPAL,DUMCOLL
*OBJECT INITIALIZATION TABLE
INITXVAL .EQU 0
INITYVAL .EQU 20H
INITIMG .EQU 40H
INITZPOS .EQU 60H
INITFLAGS .EQU 70H
INITID .EQU 80H
INITXVEL .EQU 90H
INITYVEL .EQU 0B0H
*CONSTANTS
SCRNST .EQU [0,0] ;TOP LEFT OF SCREEN
SCRNEND .EQU [256,400] ;BOTTOM RIGHT OF SCREEN
SCRNMID .EQU [128,200] ;MIDPOINT OF SCREEN
;SCRNST .EQU [1,5] ;TOP LEFT OF SCREEN
;SCRNEND .EQU [252,395] ;BOTTOM RIGHT OF SCREEN
;SCRNMID .EQU [128,200] ;MIDPOINT OF SCREEN
* OBJECT BLOCK LAYOUT
*STRUCT OBJ
OLINK .EQU 0 ;UHL 32 BIT LINK TO NEXT OBJECT BLOCK
OXVEL .EQU 20H ;UHL 32 BIT X VELOCITY 16.16
OYVEL .EQU 40H ;UHL 32 BIT Y VELOCITY 16.16
OXVAL .EQU 60H ;UHL 32 BIT X POSITION
OXFRAC .EQU 60H ; FRACTIONAL PORTION OF X POSITION
OXPOS .EQU 70H ; INTEGER PORTION OF X POSITION
OYVAL .EQU 080H ;UHL 32 BIT Y POSITION
OYFRAC .EQU 080H ; FRACTIONAL PORTION OF Y POSITION
OYPOS .EQU 090H ; INTEGER PORTION OF Y POSITION
OZPOS .EQU 0A0H ;UHW INTEGER Z POSITION OF OBJECT
OFLAGS .EQU 0B0H ;UHW 32 BIT BITS 0 - 5 DMA CONTROL; B16-31= OFFSET PRECOMPUTED
OFSET .EQU 0C0H ;UHW PRECOMPUTED OFFSET
OSAG .EQU 0D0H ;UHL 32 BIT SOURCE ADDRESS (UNCLIPPED, ADJUSTED FOR FLIPS)
OSIZE .EQU 0F0H ; 32 BIT H,W OF OBJECT (16,16) W=ADJUSTED FOR MORSEL
OSIZEX .EQU 0F0H ;UHW X SIZE
OSIZEY .EQU 100H ;UHW Y SIZE
OPAL .EQU 110H ;UHW PALLETTE
OCONST .EQU 120H ;CONSTANT COLOR
OIMG .EQU 130H ;UHL 32 BIT POINTER TO IMAGE DATA TABLE
OID .EQU 150H ;UHW 16 BIT OBJECT ID
OPLINK .EQU 160H ;UHL 32 BIT LINK TO CONTROLLING PROCESS
;ODMAXY .EQU 180H ; 32 BIT SCREEN COORD OF OBJECT
;ODMAX .EQU 180H ;X COORDINATE
;ODMAY .EQU 190H ;Y COORDINATE
OXCLIP .EQU 180H ;UHW 16 BIT TOTAL X PRECLIP
OBSIZ .EQU 190H ;1F0
*ENDSTRUCT
NOBJ .EQU 400 ; OBJECTS TO DISPLAY
BQCELL .EQU >A0 ;SIZE OF DMA QUEUE ELEMENT
***********************
* VALUES FOR OFLAGS *
***********************
M_WRZERO .EQU 1 ;WRITE ZERO DATA
M_WRNONZ .EQU 2 ;WRITE NON-ZERO DATA
M_CONZER .EQU 4 ;REPLACE ZERO DATA WITH CONSTANT
M_CONNON .EQU 8 ;REPLACE NON-ZERO DATA WITH CONSTANT
M_CONST .EQU >C ;ANY CONSTANT DATA REPLACEMENT
M_FLIPH .EQU >10 ;FLIP HORIZONTALLY
M_FLIPV .EQU >20 ;FLIP VERTICALLY
M_NODIS .EQU >100 ;IGNORE THIS ENTRY
M_PZPLUS .EQU >200 ;TAKE Z VALUE FROM RAM LOC. PREVZ AND ADD 1
M_PIXSCAN .EQU >400 ;IF=1 O.K. TO PIXEL SCAN WITH THIS OBJECT
M_NOCOLL .EQU >800 ;IF=1 OBJECT NOT COLLIDABLE
M_PREVZ .EQU >1000 ;TAKE Z VALUE FROM RAM LOC. PREVZ
M_NOMOV .EQU >2000 ;DO NOT ADD VELOCITIES
M_INUSE .set >8000 ;obj in use by display system
*BIT POSITIONS FOR OFLAGS
B_WRZERO .EQU 0
B_WRNONZ .EQU 1
B_CONZER .EQU 2
B_CONNON .EQU 3
B_FLIPH .EQU 4
B_FLIPV .EQU 5
B_NODIS .EQU 8
B_PZPLUS .EQU 9
B_PIXSCAN .EQU 10
B_NOCOLL .EQU 11
B_PREVZ .EQU 12
B_NOMOV .EQU 13
B_INUSE .set 15


972
BACKUP/FBAMODE.ASM Normal file
View File

@ -0,0 +1,972 @@
**************************************************************************
* *
* VIDEO GAME PROJECT: HIGH IMPACT FOOTBALL *
* *
* PROGRAMMER: EDWARD J. BOON *
* ARTIST: JOHN R. NEWCOMER *
* SOUNDS: *
* *
* MODULE: FBAMODE.ASM -- ATTRACT MODE *
* *
* COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. *
* *
**************************************************************************
.FILE 'FBAMODE.ASM'
.TITLE " <<< FOOTBALL ATTRACT MODE CODE >>> "
.WIDTH 132
.OPTION B,D,L
.MNOLIST
*
* GET THE SYSTEM STUFF
*
.INCLUDE "MPROCEQU.ASM" ;MPROC equates
.INCLUDE "DISPEQU.ASM" ;Display processor equates
.INCLUDE "SYSEQU.ASM" ;SYS.INC and GSP.INC
.INCLUDE "MACROS.HDR" ;Macros
.INCLUDE "MAINEQU.ASM"
.INCLUDE "IMGTBL.GLO"
.INCLUDE FIELDEQU.ASM
.INCLUDE "STRING.H"
.INCLUDE DIAGAUDN.ASM
.REF PRINT_DMA,PRINT_DMA_XY,BACKGROUND
.REF PRINT_OBJ,SHADOW_PRINT,AUTOSCR
.REF WIPEOUT,COIN_PAGE,CRED_P,PLAYTABS
.REF LM_SETUP,PRINTF,CHANGE_OID,GET_CSTR
.REF SETUP_OFFENSE,SETUP_DEFENSE,SETWORLD,BALL_IN_PLAY
.REF START_PLAYERS,COLSCAN,PLAY_INIT
.REF GET_LOGO,MIDDLE_OPEN,NOSOUNDS,POST_PLAY ;CAT_DUMP
.REF XFER_ALL_TO_A7
***************************** (SELF PLAY CODE)
.REF AMODE_START
***************************** (SELF PLAY CODE)
.DEF AMODE
.EVEN
.TEXT
**************************************************************************
* *
* ATTRACT MODE ENTRY POINT *
* *
**************************************************************************
AMODE
CLR A0
MOVE A0,@P1STAT,W
MOVE A0,@P2STAT,W
MOVE A0,@P3STAT,W
MOVE A0,@P4STAT,W
MOVI GS_AMODE,A0
MOVE A0,@GSTATE,W ; GAME STATE = ATTRACT MODE
CALLA WIPEOUT
MOVI RGB_BLACK,A0
MOVE A0,@IRQSKYE,W ; SET BACKGROUND COLOR
**************************** (SELF PLAY CODE)
JRUC AM0
SLEEP >80
MOVK 1,A0
MOVE A0,@AUTOPLAY,W
JAUC AMODE_START
***************************** (SELF PLAY CODE)
AM0 MOVK 5,A0
MOVE A0,*A13(P_GCOUNT),W ; # OF LOOPS TILL NO SOUNDS
AM1 CALLA CLR_SCRN
JSRP FIELD_TOUR
CALLA GANGEL
CALLA WIPEOUT
JSRP RUN_A_PLAY
CALLA GANGEL
CALLA WIPEOUT
JSRP COIN_PAGE
CALLA GANGEL
CALLA WIPEOUT
MOVE *A13(P_GCOUNT),A0,W
JREQ AM1
DEC A0
MOVE A0,*A13(P_GCOUNT),W
JRNE AM1
MOVK 1,A0
MOVE A0,@NOSOUND,W ; NO MORE SOUNDS PLEASE.
JRUC AM1
**************************************************************************
* *
* RUN A PLAY *
* *
* Runs a random play during the attract mode. *
* *
**************************************************************************
RUN_A_PLAY
MOVE @NOSOUND,A1,W ; ARE WE ALLOWED ??
JRNE RUNP0
MOVI >C7,A3
CALLA SEND_CODE_A3 ; PLAY TUNE IF LEGAL
RUNP0 CLR A0
MOVE A0,@SCRNTL,L
MOVE A0,@SCRNLR,L
MOVK 15,A0
CALLA RANDU
DEC A0
MOVE A0,@T0TEAM,W
MOVE A0,A1
RUNP1 MOVK 15,A0
CALLA RANDU
DEC A0
CMP A0,A1
JREQ RUNP1 ; DONT PICK SAME TEAM
MOVE A0,@T1TEAM,W
MOVI FIFTY_YARD,A0
MOVE A0,@LINEOFSC,W ; SET LINE OF SCRIMMAGE
MOVE A0,@STLOS,W
MOVE @OFFENSE,A0,W
XORI 1,A0
MOVE A0,@OFFENSE,W ; FLIP OFFENSE !!
MOVK 4,A0
CALLA RANDU
MOVE A0,@DOWNNUM,W ; RANDOM DOWN #
MOVK 4,A0
CALLA RANDU
DEC A0
MOVE A0,@MENUPIK0,W
MOVE A0,@MENUPIK1,W ; RANDOM PLAY CHOICE
CALLA PLAY_INIT
CALLA PLAYTABS ; SETUP OFFPTBL/DEFPTBL
CALLA SETWORLD
CREATE PID_AMODE,MIDDLE_OPEN
SLEEP 1
CREATE PID_AMODE,T0_SLIDE
CREATE PID_AMODE,T1_SLIDE
MOVI AMODE_VERSUS_INIT,A14
CALLA INITOBJ
MOVE A8,A0
CALLA INSOBJ2
SLEEP 2
MOVK 10,A11
CREATE PID_AMODE,RGBSTUFF ; FLASH "VERSUS"
SLEEP >C0 ; WAIT FOR LINEUP
MOVI OID_AMODE,A0
CALLA DALLOBJ ; GET RID OF LOGOS/VERSUS
CALLA START_PLAYERS ; XFER DUDES PROCESSES
MOVI OID_QB,A0
CALLA FINDOMAN ; FIND THE QB
CALLA BALL_IN_PLAY ; PUT THE BALL IN PLAY
CREATE PID_COLSCAN,COLSCAN ; COLLISION SCANNER
CREATE PID_BCTRACK,BC_TRACK ; BALL CARRIER
CLR A0
MOVE A0,@PLAYRES,W ; NO PLAY RESULT SO FAR
MOVI OID_MSGLET,A0
CALLA DALLOBJ ; ERASE LETTERS
MOVI PID_QB_YELL,A0
CALLA DALLPRC ; QB = SHUT UP
*
* WAIT FOR ATTRACT MODE PLAY TO END
*
MOVI 13*20,A10 ; WATCH "CAT" TIME LIMIT
RUNP5 SLEEP 5
MOVE @PLAYRES,A0,W
JRNE RUNP7
DSJS A10,RUNP5 ; I'LL WAIT, BUT NOT FOREVER
CLR A0
MOVE A0,@ERRNUM,W ; DONT CONFUSE WITH BOONTRAP
MOVI AUDWCATS,A0
CALLA AUD1 ; AUDIT THIS !!
.IF B_DEBUG
JAUC $ ; IN DEBUGGER ---> CALL ATTENTION TO !
.ENDIF
.IF PRINTER
; CALLA CAT_DUMP
.ENDIF
RUNP7
MOVI PID_COLSCAN,A0
CALLA DALLPRC
MOVI PID_SCR,A0
CALLA DALLPRC ; KILL SCROLLER
CLR A1
MOVE A1,@SCROLLX,L
MOVE A1,@SCROLLY,L
MOVI POST_PLAY,A7 ; A7 = EVERYONE XFERED HERE
CALLA XFER_ALL_TO_A7
SLEEP >20
MOVI >8000,A0
MOVE A0,A1
CALLA KILALL ; KILL ALL PROCS (EXCEPT INDESTUCTABLES)
MOVI FADEALL,A0
CALLA FADEOUT ; FADE EVERYTHING TO BLACK
SLEEP >30
CALLA NOSOUNDS ; SHUT UP
RETP
FADEALL .LONG 0
T0_SLIDE
MOVI AMODEL0_INIT,A14
CALLA INITOBJ
MOVE @T0TEAM,A1,W
CALLA GET_LOGO
MOVE *A1(16*6),A0,L
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; TEAMS PALETTE
CALLA ANI
MOVE A8,A0
CALLA INSOBJ2
MOVI >30000,A0
MOVE A0,*A8(OXVEL),L
SLEEP >3C
CLR A0
MOVE A0,*A8(OXVEL),L
DIE
T1_SLIDE
MOVI AMODEL1_INIT,A14
CALLA INITOBJ
MOVE @T1TEAM,A1,W
CALLA GET_LOGO
MOVE *A1(16*6),A0,L
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; TEAMS PALETTE
CALLA ANI
MOVE A8,A0
CALLA INSOBJ2
MOVI ->30000,A0
MOVE A0,*A8(OXVEL),L
SLEEP >3D
CLR A0
MOVE A0,*A8(OXVEL),L
DIE
AMODEL0_INIT
.LONG LA,0
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD -120,26,0
AMODEL1_INIT
.LONG LA,0
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD SCRRGT,26,0
AMODE_VERSUS_INIT
.LONG VERSUS,ICN3_PAL
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD >BB
.WORD 32
.WORD 0
**************************************************************************
* *
* SHOW TEAMS *
* *
* Will put all of the teams on the screen along with the field in the *
* background. *
* *
**************************************************************************
;SHOW_TEAMS
; MOVI AMODE_TEXT_INIT,A14
; MOVI >29,A0
; CALLA PRINT_OBJ ; TEXT = A4 --> A7
;
; MOVE A4,A5
; MOVI AMODE_TEXT_INIT,A14
; MOVI 00020002H,A6
; CALLA SHADOW_PRINT
; MOVE @OBJLST3,A0,L
; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST3
; MOVE A5,@OBJLST3,L ; OBJLST3 ---> 1ST CHAR
; MOVK 3,A11
; CREATE PID_AMODE,RGBSTUFF
;*
;* BACKGROUND THING A MA BOB
;*
; MOVK 4,A0
; CALLA GETBLIMP ; TEAM SELECT MODULE
; CALLA A5A6OL1 ; ADD TO "OBJLST1"
;
; MOVI 9,A9
; MOVI 60,A10
; MOVI ATEAM_LOGOS,A11
;SHOWT0 MOVK 5,A7 ; 5 ROWS
;SHOWT1 MOVI LOGO_INIT,A14
; CALLA INITOBJ ; GET AN OBJECT
; MOVE *A11+,A1,L ; A1 = OIMG
; CALLA ANI
; MOVE *A11+,A0,L
; CALLA SWPAL
; MOVE A8,A0
;
; MOVE A9,*A8(OXPOS),W
; MOVE A10,*A8(OYPOS),W
; CALLA INSOBJ
; ADDI 35,A10
; DSJS A7,SHOWT1
; SLEEP 2
; MOVI 60,A10
; ADDI >80,A9
; CMPI (>60*3)+5,A9
; JRLT SHOWT0
;
; SLEEP >40*8
; JRUC AMODE_EXIT
;
;
;
AMODE_TEXT_INIT
.LONG FON15A,boonpal
.WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE
.WORD 0,0,0
;
;
;ATEAM_LOGOS
; .LONG LA,LA_PAL
; .LONG DENVER,DNVR_PAL
; .LONG SANFRN,SANF_PAL
; .LONG MIAMI,MIAM_PAL
; .LONG WASH,WASH_PAL
; .LONG CHICAGO,CHGO_PAL
; .LONG TEXAS,TEX_PAL
; .LONG PITTSBURGH,PITT_PAL
; .LONG DETROIT,DETR_PAL
; .LONG NEWYRK,NYC_PAL
; .LONG AFRICA,AFRC_PAL
; .LONG CANADA,CANA_PAL
; .LONG EUROPA,EURO_PAL
; .LONG KANSAS,KANS_PAL
; .LONG ATLANTA,ATLN_PAL
;
;
;LOGO_INIT
; .LONG LA,boonpal
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD 0,0,0
;
;LA_INIT
; .LONG LA,LA_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>30,0
;
;DENVER_INIT
; .LONG DENVER,DNVR_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>58,0
;
;SF_INIT
; .LONG SANFRN,SANF_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>80,0
;
;MIAMI_INIT
; .LONG MIAMI,MIAM_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>A8,0
;
;WASH_INIT
; .LONG WASH,WASH_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>D0,0
;
;*
;* COLUMN #2
;*
;CHICAGO_INIT
; .LONG CHICAGO,CHGO_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>30,0
;
;DALLAS_INIT
; .LONG TEXAS,TEX_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>58,0
;
;PITT_INIT
; .LONG PITTSBURGH,PITT_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>80,0
;
;DETROIT_INIT
; .LONG DETROIT,DETR_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>A8,0
;
;NY_INIT
; .LONG NEWYRK,NYC_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>D0,0
;
**************************************************************************
* *
* FIELD TOUR *
* *
* This part of the attract mode scans the entire field with the game *
* logo overlaying the screen. *
* *
**************************************************************************
FIELD_TOUR
CREATE PID_AMODE,BACKGROUND ; MAKE A BACKGROUND UPDATE DUDE
JSRP SHOW_CREDITS
CLR A0
MOVI AMODE_TEXT_INIT,A14
CALLA PRINT_OBJ ; COPYRIGHT MESSAGE
MOVE A4,A5
MOVE A7,A6
CALLA A5A6OL1
MOVK 2,A0
CALLA GETBLIMP ; A5 = LOGO MODULE OBJECT LIST
CALLA A5A6OL2 ; PUT ON OBJECT LIST #1
MOVK 4,A11
CREATE PID_AMODE,RGBSTUFF ; FLASH "CREDITS"
MOVK 2,A9
FTOUR1 MOVI LGOAL_OUT_X-80,A0
MOVE A0,@WORLDTLX+16,W ; STARTING X
MOVI TOP_SIDELINE-215,A0
MOVE A0,@WORLDTLY+16,W ; STARTING Y
*
* PAN THROUGH THE CROWD
*
MOVI RGOAL_OUT_X+80-SCRRGT,A1
MOVE @WORLDTLY+16,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
*
* TO MIDDLE OF FIELD
*
MOVE @WORLDTLX+16,A1
SUBI >100,A1
MOVE @WORLDTLY+16,A3
ADDI >100,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
*
* TO LEFT ENDZONE
*
MOVI LGOAL_OUT_X->50,A1
MOVE @WORLDTLY+16,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
SLEEP >80
AMODE_EXIT
MOVI OID_AMODE,A0
MOVE A0,A1
CALLA KILL_OCP
CALLA DELALLB
MOVI PID_AMODE,A0
MOVE A0,A1
CALLA KILALL ; KILL ANYONE I SPAWNED OFF
RETP
*
* DELETE ALL BACKGROUND OBJECTS (AND THEIR PALETTES)
*
DELALLB
MOVE @BAKLST,A0,L ; ARE THERE ANY BACKGROUND OBJ ?
JREQ PS2 ; NO ---> SKIP
MOVE A0,A1 ; A1 = OBJECT #1
CLR A0
MOVE A0,@BAKLST,L
PS1 MOVE *A1,A3,L ; A3 = NEXT IN LINE
MOVE *A1(OPAL),A0,W
CALLA FREEPAL ; DECREMENT PALETTE COUNTER
MOVE @OFREE,A2,L
MOVE A1,@OFREE,L ; PUT OBJECT ON FREE LIST
MOVE A2,*A1,L
MOVE A3,A1
JRNE PS1
PS2 RETS
*
* STARS ALONG THE EDGES
*
CLR A5 ; INITIALIZE COLOR POINTER
DEC A5
MOVI >10,A2 ; STARTING X POSITION
MOVI >15,A3 ; STARTING Y POSITION
MOVI 13,A6 ; STAR COUNT
AM2 CALLR DO_A_STAR
ADDI >25,A2
DEC A6
JRNE AM2
SUBI >25,A2
MOVI 10,A6 ; STAR COUNT
AM3 ADDI >22,A3
CALLR DO_A_STAR
DEC A6
JRNE AM3
MOVI 12,A6 ; STAR COUNT
AM4 SUBI >25,A2
CALLR DO_A_STAR
DEC A6
JRNE AM4
MOVI 9,A6 ; STAR COUNT
AM5 SUBI >22,A3
CALLR DO_A_STAR
DEC A6
JRNE AM5
MOVI boonpal,a10 ; PALETTE TO CYCLE
MOVI >01040900,A11 ; PARAMETERS FOR CYCLE DUDE
CREATE PID_AMODE,CYCLERF
CREATE PID_AMODE,TWINKLE
SLEEP >40*15
CLR A1
NOT A1
MOVI PID_AMODE,A0
CALLA KILALL ; KILL AMODE PROCS
CALLA MYOINIT ; BLOW OUT OBJECT SYSTEM
CALLA SCRCLR
; JSRP HSTD
; MOVK 1,A0
; MOVE A0,@GAMERASE,W ; GAME ERASE = ON
; SLEEP >20
CALLR GAME_ERASE_OFF
JSRP LITTLE_FADE
CALLR GAME_ERASE_ON
SLEEP 2
CALLR GAME_ERASE_OFF
JSRP NO_DRUGS ; SAY NO TO DRUGS MESSAGE
JRUC AMODE
GAME_ERASE_OFF
CLR A0
JRUC GERASE
GAME_ERASE_ON
MOVK 1,A0
GERASE MOVE A0,@GAMERASE,W
RETS
;WIL_FADE
; MOVI WILLINIT,A14
; CALLA INITINS
; SLEEP >60
; MOVE A8,A9
; MOVI >00010002,A11
; MOVI willypal,a8
; CREATE PID_AMODE,PALFADE
; SLEEP >60
; MOVE A9,A0
; CALLA DELOBJP
; MOVI willypal,a0
; CALLA BLOWPAL ; BLOW OUT PALETTE COMPLETELY
; SLEEP 1
; RETP
;WILLINIT
; .LONG willy1,willypal
; .WORD 0,DMAWNZ,>555,>55,>60,0
BALL_BANG
MOVI 1,A0
MOVE A0,@NO_VEL,W ; NO VELOCITIES !!
MOVI 40,B0
BANG_LOOP
PUSH B0
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B1
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B2
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B3
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B4
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B1(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B2(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B3(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ADDI >00010000,A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
MOVE A0,B0
NEG B0
MOVE B0,*B4(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B1(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B3(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B2(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B4(OXVEL),L
*
* PUT EM ON THE LIST
*
MOVE B1,A0
CALLA INSOBJ
MOVE B2,A0
CALLA INSOBJ
MOVE B3,A0
CALLA INSOBJ
MOVE B4,A0
CALLA INSOBJ
PULL B0
DEC B0
JRNE BANG_LOOP
CLR A0
MOVE A0,@NO_VEL,W ; VELOCITIES !!
SLEEP >50
CLR A1
NOT A1
MOVI OID_BALL,A0
CALLA KILL_OCP
RETP
*
* HIGH SCORE TO DATE TABLE
*
HSTD MOVI HSTD_TEXT,A14
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; SLEEP >40*4
RETP
HSTD_TEXT
.LONG >00600070
.WORD >FFFF
.STRING "1) BUN $ 4,000,000",0
.LONG >00800070
.WORD >FFFF
.STRING "2) JRN $ 3,500,000",0
.LONG >00A00070
.WORD >FFFF
.STRING "3) BUN $ 3,000,000",0
.LONG >00C00070
.WORD >FFFF
.STRING "4) JRN $ 2,500,000",0
.LONG >00E00070
.WORD >FFFF
.STRING "5) KIM $ 2,000,000",0
.EVEN
*
* SAY NO TO DRUGS MESSAGE
*
NO_DRUGS
MOVI >0D,A0
CALLA PRINT_DMA
MOVI >0E,A0
CALLA PRINT_DMA
; MOVI BOONDCD,A0
; CALLA GETFPAL ; GET BOONDCD PALLETTE
; JRNE NODR1
; ERMAC 24
;NODR1 MOVE A0,A1 ; A1 = DTIME INPUT = PALLETTE
; MOVI [>70,>D0],A3
; MOVI DMAWNZ,A5
; MOVI BOONDCD_vda,A14
; CALLA DTIME ; DMA BOON PICTURE
SLEEP >40*3
RETP
LITTLE_FADE
MOVI >0F,A0
MOVI >00700070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00900070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00B00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00D00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00F00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
SLEEP >60
RETP
SET_EM_UP
CALLA INITOBJ ; A8 = NFL LOGO OBJECT
MOVE A8,A0
JAUC INSOBJ
DO_A_STAR
RETS
INC A5
CMPI 4,A5
JRLO DOST1
CLR A5 ; FROM (0-3)
DOST1 MOVE A5,A0
SLL 4,A0 ; 16 BIT OFFSET
ADDI STAR_COLORS,A0
MOVE *A0,A0,W ; GET THE COLOR FOR THIS STAR
MOVE A0,*A8(OCONST),W ; THIS IS THE STARS CONSTANT COLOR
MOVE A8,A0
JAUC INSOBJ ; PUT IN LIST
STAR_COLORS
.WORD >0101
.WORD >0202
.WORD >0303
.WORD >0404
*
* MAKE THE TROPHIES TWINKLE
*
TWINKLE
CLR A11
JSRP TWLOOP
MOVI 3,A11
JSRP TWLOOP
MOVI 6,A11
JSRP TWLOOP
JRUC TWINKLE
TWLOOP CREATE PID_AMODE,DO_TWINK
INC A11
CREATE PID_AMODE,DO_TWINK
INC A11
CREATE PID_AMODE,DO_TWINK
SLEEP >30
RETP
DO_TWINK
DIE
;TWINKINIT
; .LONG twink1,twinkpal
; .WORD 0,DMAWNZ,>555,>80,>80,3
TWINK_SPOTS
.LONG >007D007D ; LEFT TROPHY'S SHOULDER
.LONG >009000D0 ; LEFT TROPHY LEG
.LONG >0184007C ; RIGHT TROPHY SHOULDER
.LONG >01A0010D ; RIGHT TROPHY BASE
.LONG >0060010D ; LEFT TROPHY BASE
.LONG >01C000A0 ; RIGHT TROPHY HAND
.LONG >009000D0 ; LEFT TROPHY LEG
.LONG >01A0010D ; RIGHT TROPHY BASE
.LONG >01C000A0 ; RIGHT TROPHY HAND
.LONG >007D007D ; LEFT TROPHY'S SHOULDER
**************************************************************************
* *
* SHOW CREDITS *
* *
* Displays # of credits in the game *
* *
**************************************************************************
SHOW_CREDITS
MOVI COIN_MESS3,A8
CALLA LM_SETUP
CALLA GET_CSTR ; GET THE CURRENT CREDITS
JSRP PRINTF ; PRINT TO OBJECT LIST
MOVI OID_TEXT,A0
MOVI OID_AMODE,A1
CALLA CHANGE_OID ; ALL TEXT = OID_AMODE
*
* ALLOCATE PALETTES FOR EACH TEXT OBJECT CREATED
*
MOVI boonpal,A0
CALLA GETFPAL ; GET BOONPAL !!
MOVI BPAL_BLK,A3 ; A3 = BOONPAL "BLACK"
CLR A2
MOVI >0505,A3 ; A3 = CONSTANT COLOR TO USE
MOVE @OBJLST,A0,L ; TOP O LIST
JREQ SHOWC2 ; NONE, EXIT
SHOWC1 INC A2 ; COUNT IT
MOVE A3,*A0(OCONST),W ; SET COLOR O TEXT
MOVE *A0(OLINK),A0,L
JRNE SHOWC1
MOVI PALRAM,A1 ; TEXT USES 1ST PALETTE !!
MOVE *A1(32),A3,W ; A3 = 1ST PALETTE COUNT
DEC A3 ; DONT COUNT THE 1SR "GETFPAL" CALL
ADD A2,A3 ; ADD IN TEXT OBJECTS
MOVE A3,*A1(32),W
SHOWC2 RETP
COIN_MESS3
MESS_MAC RD15FONT,SPACING20,200,>C0,0D0D0000H,STRCNRMO,0
*********************************************************************
;CREDLET_INIT
; .LONG osrn1,boonpal
; .WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE
; .WORD 0,>D0,0
;
;MED_DIGITS
; .LONG FON150
; .LONG FON151
; .LONG FON152
; .LONG FON153
; .LONG FON154
; .LONG FON155
; .LONG FON156
; .LONG FON157
; .LONG FON158
; .LONG FON159
;
;
; CALLA CRED_P ; A0 = # OF CREDITS
; CLR A10 ; ASSUME NO "TENS" DIGIT
; MOVE A0,A3
; MOVE A3,A6
; CMPI 10,A3
; JRLT SHOWC2
;*
;* CREDITS > 10
;*
; MOVK 10,A0
; DIVS A0,A3 ; A3 = 10'S DIGIT
; MOVE A3,A5
; MOVI CREDLET_INIT,A14
; CALLA INITOBJ ; GET DIGIT #2 = TENS DIGIT
; MOVE A8,A10 ; TENS DIGIT
; MOVI >0101,A0
; MOVE A0,*A8(OCONST),W
; SLL 5,A3
; ADDI MED_DIGITS,A3
; MOVE *A3,A1,L
; CALLA ANI ; SHAPE THE #
; MOVI >E6,A0
; MOVE A0,*A8(OXPOS),W ; X POS = AFTER THE ":"
; MOVE A8,A0
; CALLA INSOBJ
; CALLA CRED_P ; A0 = # OF CREDITS
; MOVE A0,A6
; MOVK 10,A0
; MPYS A0,A5
; SUB A5,A6 ; A6 = ONES
;
;SHOWC2 MOVI CREDLET_INIT,A14
; CALLA INITOBJ ; GET DIGIT #1
; MOVI >0101,A0
; MOVE A0,*A8(OCONST),W
;
; SLL 5,A6
; ADDI MED_DIGITS,A6
; MOVE *A6,A1,L
; CALLA ANI ; SHAPE THE NUMBER
; MOVI >E6,A0
; MOVE A10,A10 ; TENS DIGIT ?
; JREQ SHOWC3
; MOVE *A10(OSIZEX),A2,W
; ADD A2,A0
; INC A0
;SHOWC3 MOVE A0,*A8(OXPOS),W ; PLACE ONES AFTER "TENS"
; MOVE A8,A0
; CALLA INSOBJ
;
; MOVI >0F,A0
; MOVI CREDLET_INIT,A14
; CALLA PRINT_OBJ ; CREDITS MESSAGE !!
; MOVE @OBJLST,A0,L
; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST
; MOVE A4,@OBJLST,L ; OBJLST ---> 1ST CHAR
******************* END OF LINE (QUOTE FROM TRON) ***************
.END


4047
BACKUP/FBFX.ASM Normal file

File diff suppressed because it is too large Load Diff

304
BACKUP/FBSTUFF.ASM Normal file
View File

@ -0,0 +1,304 @@
.TITLE 'FBSTUFF.ASM'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
; ROUTINES STOLEN FROM HIGH IMPACT FOOTBALL
;
; INITIATED: JAN 10,1991
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "GAME.EQU"
;
;SOUNDS
;
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF PALSET,PALRAM
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF FB_FADEOUT,FB_FADEIN
PID_FX .EQU 200
.TEXT
**************************************************************************
* *
* FADEALL *
* *
* FADE EVERYTHING USING A GIVEN FADE ENTRY *
* *
* ENTRY *
* A0 LIST OF PALETTES *
* A11 FADE MULT TABLE *
* *
* EXIT *
* NOTHING *
* *
* CALL *
* CALL *
* *
**************************************************************************
FADEALL:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
JRUC Fader
**************************************************************************
* *
* FADEIN *
* *
* FADE A LIST OF PALETTES FROM BLACK TO THEIR CURRENT COLORS *
* *
* ENTRY *
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FB_FADEIN:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
movi FadeIn,A11
jruc Fader
**************************************************************************
* *
* FADEOUT *
* *
* FADE A LIST OF PALETTES DOWN TO BLACK *
* *
* ENTRY *
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FB_FADEOUT:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
movi FadeOut,A11
Fader:
move A0,A6
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
clr A9 ;palette slot
dec A9
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
PalLp:
addi PALRSIZ,A2
inc A9
cmpi NUMPAL,A9
jrge PalLpX
move *A2(PALCNT),A1,W ;is palette allocated?
jrz PalLp
move *A2(PALID),A8,L ;Ptr to palette
;*** SKIP FADING PALS IN LIST POINTED TO BY A6
move A6,A7
jrz SkFPalX
SkPalLp:
move *A7+,A1,L
jrz SkFPalX
cmp A1,A8
jreq PalLp
jruc SkPalLp
SkFPalX:
CREATE PID_FX,FADEPROC
jruc PalLp
PalLpX:
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
rets
**************************************************************************
* *
* FADE_ONLY *
* *
* FADE ONLY A CERTAIN PALETTE *
* *
* ENTRY *
* A0 PALETTE TO BE FADED *
* A11 MULTIPLIER FOR PALETTES *
* *
* EXIT *
* NOTHING *
* *
* CALL *
* CALLA *
* *
**************************************************************************
FADE_ONLY:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
move A0,A6
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
clr A9 ;palette slot
dec A9
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
FOPalLp:
addi PALRSIZ,A2
inc A9
cmpi NUMPAL,A9
jrge FOPalLpX
move *A2(PALCNT),A1,W ;is palette allocated?
jrz FOPalLp
move *A2(PALID),A8,L ;Ptr to palette
CMP A6,A8
JRNZ FOPalLp ; BR = NOT THE ONE FOR ME
CREATE PID_FX,FADEPROC
jruc FOPalLp
FOPalLpX:
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
rets
**************************************************************************
* *
* FADEPROC *
* *
* PROCESS TO ACTUALLY FADE A PALETTE *
* *
* ENTRY *
* A8 PTR TO PALETTE TO BE FADED *
* A9 PALETTE SLOT OF PALETTE *
* A11 FADE MULTIPLIER TABLE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FADEPROC:
sll 24,A9 ;B8-15 DEST PAL | B0-7 START COLOR
srl 16,A9
.IF YUNIT
MOVE A9,A2
SRL 12,A2
SLL 14,A2
SLL 20,A9
SRL 20,A9
ADD A2,A9
.ENDIF
FadePLp:
;**** SET UP FADED PAL IN PROCESS DATA SPACE ****
move *A11+,A2,W ;A2 - Color Multiplier
jrn FadePrcX
move A13,A0
addi PDATA,A0 ;A0 - Dest Ram for Pal
move A8,A1 ;A1 - Src for Pal
callr FadePal
;**** GET FADED PALETTE XFERRED TO PALRAM ****
move A9,A1 ;B8-15 DEST PAL | B0-7 START COLOR
move A13,A0
addi PDATA,A0 ;SRC FOR XFER
move *A0+,A2,W ;GET # COLORS IN PALETTE
calla PALSET ;SETUP PALETTE TRANSFER
SLEEP 2
jruc FadePLp
FadePrcX:
SLEEP 1 ;give last xfer a chance to go
DIE
**************************************************************************
* *
* FADEPAL *
* *
* APPLY THE COLOR MULTIPLIER AND DO ONE ITERATION ON THE PALETTE *
* *
* ENTRY *
* A0 DESTINATION RAM FOR PALETTE *
* A1 SOURCE FOR PALETTE *
* A2 COLOR MULTIPLIER *
* *
* EXIT *
* NOTHING *
* *
* NOTE: EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN *
* DIVIDED BY 128 *
* *
**************************************************************************
FadePal:
mmtm SP,A8,A9,A10,A11
move *A1+,A14,W
move A14,*A0+,W
sll 23,A14 ;top bits of field are flags
srl 23,A14 ; only 9 bits needed for # colors
movi >7C00,A4 ;A4 - Pre Mult Mask for 5 bits of red
movi >03E0,A6 ;A6 - Pre Mult Mask for 5 bits of green
movi >001F,A8 ;A8 - Pre Mult Mask for 5 bits of blue
move A4,A9
move A6,A10
move A8,A11
sll 7,A9 ; A9 - Post Mult Max for 5 bits of red
sll 7,A10 ;A10 - Post Mult Max for 5 bits of green
sll 7,A11 ;A11 - Post Mult Max for 5 bits of blue
FadeLp:
move *A1+,A3,W ;A3 - RED
move A3,A5 ;A5 - GREEN
move A3,A7 ;A7 - BLUE
and A4,A3
and A6,A5
and A8,A7
mpyu A2,A3
mpyu A2,A5
mpyu A2,A7
cmp A9,A3
jrle RedOk
move A9,A3
RedOk:
cmp A10,A5
jrle GreenOk
move A10,A5
GreenOk:
cmp A11,A7
jrle BlueOk
move A11,A7
BlueOk:
and A9,A3
and A10,A5
; and A11,A7 ;unnecessary cause bottom bits will get >> 7
or A5,A3
or A7,A3
srl 7,A3
move A3,*A0+,W
dsjs A14,FadeLp
mmfm SP,A8,A9,A10,A11
rets
FadeIn .word 0,0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,>FFFF
FadeOut .word 120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0,>FFFF
.END


1872
BACKUP/FBUTIL.ASM Normal file

File diff suppressed because it is too large Load Diff

2334
BACKUP/FIEND.ASM Normal file

File diff suppressed because it is too large Load Diff

424
BACKUP/GAME.EQU Normal file
View File

@ -0,0 +1,424 @@
**************************************************************************
* *
* GAME.INC *
* ALL .EQU CONSTANTS TO BE USED THROUGHOUT THE GAME *
* *
* *
**************************************************************************
;
;
;ENEMY VALUES FOR WAVE_INFO TABLE
HULK .EQU 1 ;GRUNT ENEMY
TANK .EQU 2 ;MINE LAYER
AHMD .EQU 3 ;AHMED FLAME THROWER
AT72 .EQU 4 ;T72 SPAWN
JEEPS .EQU 5 ;SPAWN JEEPS, LEVEL #=X POSITION RNG
FND .EQU 6 ;SPAWN FIEND FROM OFF SCREEN
SKIPR .EQU 7 ;SPAWN SKIPPER GRUNT
SNEUT .EQU 8 ;SMALL NEUTRON BOMB
RUNNRS .EQU 9 ;BONUS HOSTAGES RUNNING DOWN SCREEN
ORC .EQU 10 ;ORCUS BOSS
SNEUT2 .EQU 11 ;LOTS OF SMALL NEUTRON BOMBS
JEEPS2 .EQU 12 ;LOTS OF JEEPS ON ROAD
MOM .EQU 13 ;MOM SPIDER
;
PLYR2_ID .EQU 11
;
;POINTS FOR ALL ENEMIES, ETC.
;
DEARM .EQU >200
KEYPT .EQU >150
HLKPT .EQU >25
FNDPT .EQU >80
AHMDPT .EQU >150
CRTPT .EQU >30 ;CRATE/BARREL PTS FOR SHOOTING
CRTPT2 .EQU >275 ;CRATE/BARREL PTS FOR WALKING INTO!
MINEPT .EQU >50
BTNKPT .EQU >350 ;BIG TANK POINTS (T72)
JEEPPT .EQU >175 ;JEEP POINTS
HITPT .EQU >1 ;BIG STUFF GETS HIT WITH A BULLET
LAYPT .EQU >125 ;MINE LAYER
GATEPT .EQU >250 ;POINTS FOR BLOWING A GATE OPEN
TURTPT .EQU >100 ;POINTS FOR ALL TURRET TYPE GUNS
DISHPT .EQU >650 ;DISH OR REACTOR
JETPT .EQU >500 ;JETS - ADDS IN DISHPT ALSO!
EGGPT .EQU >50
;
PCSMAX .EQU 85 ;CHUNKS UP INTO AIR ;85
;
;BULLET LAYOUT
BLTDIR .EQU PDATA ;UHW
AGE .EQU PDATA+16 ;UHW
GTMP .EQU PDATA+32 ;UHW - PNTR INTO CY TABLE FOR GRENADE
MYPLYR .EQU PDATA+48 ;UHW PLAYER 1 OR 2 FIRED ME=1 OR 2
;THE RINGS USE BULLET LAYOUT WITH SOME ADDED FIELDS:
DELAY .EQU PDATA+64 ;UHW DELAY FOR Y UPDATE
PNTR .EQU PDATA+80 ;UHW PNTR INTO Y UPDATE TABLE
FROM_TSO .EQU PDATA+96 ;UHL FROM TORSO
TIME .EQU PDATA+128 ;UHW TIME RINGS STAY ON
;TORSO PDATA STRUCTURE
*STRUCT PLYR
TSO_PTR .EQU PDATA ;UHL TORSO FOR THESE LEGS
DELYDET .EQU PDATA+32 ;96 ;UHW DELAY KILL TAKE OUT!!!
;MYPLYR .EQU PDATA+48 ;UHW PLAYER 1 OR 2 FIRED ME=1 OR 2
PNUM .EQU PDATA+48 ;224 ;UHW 1 OR 2 FOR PLAYER NUMBER
STICK .EQU PDATA+64 ;UHL STICK ADDRESS
OSHTDIR .EQU PDATA+112 ;UHW OLD SHOT DIR
P_DIR .EQU PDATA+128 ;UHW PLAYER DIR
OLD_P_DIR .EQU PDATA+144 ;UHW OLD DIR
WPN_TYP .EQU PDATA+160 ;UHW WEAPON TYPE
REV_P_DIR .EQU PDATA+176 ;UHW REV DIR
SHOOT_FLAG .EQU PDATA+192 ;UHW SHOOT FLAG
TMP_P_DIR .EQU PDATA+208 ;UHW TEMP P1 DIR
LEG_PTR .EQU PDATA+224 ;32 ;UHL LEGS IMG FOR THIS TORSO
REV_FLAG .EQU PDATA+256 ;UHW FLAG
DEAD .EQU PDATA+272 ;UHW DEAD FLAG
SHOTCNT .EQU PDATA+288 ;UHW AMMO CNT FOR POWERUP WPN
HAVE_REV .EQU PDATA+304 ;240 ;UHW FLAG
;TSHOTS .EQU PDATA+304 ;UHW TOTAL SHOTS FIRED
LEG_PRC .EQU PDATA+320 ;UHL LEG PROCESS PTR
LSRPTR .EQU PDATA+352 ;UHL HELPER PTR OR 0 IF NONE
KILLERO .EQU PDATA+384 ;UHL KILLER IMG PNTR
*ENDSTRUCT
;LEGS PDATA STRUCTURE
;TSO_PTR .EQU PDATA ;UHL TORSO FOR THESE LEGS
;LEG_PTR .EQU PDATA+32 ;UHL LEGS IMG FOR THIS TORSO
TSO_PRC .EQU PDATA+96 ;UHL TORSO PROCESS FOR THESE LEGS
SHOECNT .EQU PDATA+128 ;UHW SHOES ON TIMER
SVSHO .EQU PDATA+144 ;UHW SAVE SHOE CNT FOR NEXT WAVE
TCH_WALL .EQU PDATA+160 ;UHW TOUCH WALL FLAG 1=YES
SHOEV .EQU PDATA+176 ;UHW SHOE VERSION FOR STANDING
;LEG_PTR .EQU PDATA+224 ;32 ;UHL LEGS IMG FOR THIS TORSO
;
;PROCESS ID'S
;
INTROPID .EQU 100
JOYPID .EQU 101
CHNKPID .EQU 102
LAYPID .EQU 103
DELPID .EQU 104
FLGPID .EQU 105
BMBPID .EQU 106
TARGPID .EQU 107
DROPPID .EQU 108
CYCPID .EQU 109
BUYINPID .EQU 110
ARWPID .EQU 111
AMDEPID .EQU 112
GMEOVPID .EQU 113
SCRPID .EQU 114
PLY1PID .EQU 115 ;PLAYER 1 STUFF
PLY2PID .EQU 116 ;PLAYER 2 STUFF
P1PID .EQU 117
P2PID .EQU 118
COLPID .EQU 119 ;COLLISIONS
COLRPID .EQU 120 ;COLOR CYCLE FROM INTERRUPT
DG1PID .EQU 121 ;CNTDWN DIGIT PROC
DG2PID .EQU 122 ;CNTDWN DIGIT PROC
FADEPID .EQU 123 ;SOUND FADER
CP_PID1 .EQU 124
CP_PID2 .EQU 125
LC_PID .EQU 126
RC_PID .EQU 127
CC_PID .EQU 128
SLAM_PID .EQU 129
DIAG_PID .EQU 130
P1SWPID .EQU 131
P2SWPID .EQU 132
DUM_ID .EQU 133
B1PID .EQU 134
B2PID .EQU 135
RCYC1PID .EQU 136
RCYC2PID .EQU 137
ICONPID .EQU 138
BULPID .EQU 139
RNG1PID .EQU 140 ;RINGS
TEMPPID .EQU 141
HULKPID .EQU 142
TP2PID .EQU 143
LORDPID .EQU 144
T72PID .EQU 145
FNDPID .EQU 146
RNG2PID .EQU 147 ;RINGS 2
SECDR .EQU 148
CMAN .EQU 149
BLOWPID .EQU 150
FUTUREPID .EQU 151 ;FOR PROCS THAT WAKE UP IN FUTURE
HSTGPID .EQU 152
SHOTPID .EQU 153
SHRPPID .EQU 154
GIPID .EQU 155
AHMDPID .EQU 156
POWPID .EQU 157
MAPPID .EQU 158
WARPPID .EQU 159
TESTPID .EQU 160
FUTRPID .EQU 161 ;FOR PROCS THAT WAKE UP IN FUTURE
MADPID .EQU 162 ;MADMAN PROCS
BMBLT1PID .EQU 163
BMBLT2PID .EQU 164
shawnpid .equ 165
FLMPID .EQU 166
FIXPID .EQU 167
NEUTPID .EQU 168
JEEPID .EQU 169
PONDPID .EQU 170
JETPID .EQU 171
HISCPID .EQU >200
BOMBNPID .EQU >300
FRYPID .EQU >400
ANIMPID .equ >4000 ;Animation PIDs (256)
ANIMPID2 .equ >4100 ;Animation2 PIDs (256)
ANIMPID3 .equ >4200 ;Animation3 PIDs (256)
ANIMPID4 .equ >4300 ;Animation4 PIDs (256)
;
;OBJECT ID'S
;
;**** OBJECT IDENTIFIER FIELDS
B_CLASS .set 15
F_CLASS .set >E000
CLSNEUT .EQU >0000 ;NEUTRAL ITEMS
CLSDEAD .EQU >2000 ;OBJECTS THAT DELETE THEMSELVES
CLSANIM .EQU >3800 ;Animation class objects
CLSPLYR .EQU >4000 ;PLAYERS STUFF
CLSENMY .EQU >8000 ;ENEMIES
;
TYPNEUT .EQU 0000H ;TYPE NEUTRAL
TYPPLYR .EQU 0100H ;PLAYER
TYPPLBL .EQU 0200H ;PLAYER BULLET
TYPTRUNK .EQU 0300H ;TREE TRUNK TYPE ITEMS
TYPGATE .EQU 0400H ;GATES/DOORS
TYPBOMB .EQU 0500H ;TIME BOMB EXPLOSION
TYPHSTG .EQU 0600H ;HOSTAGES
TYPTEXT .EQU 0700H ;TYPE TEXT
TYPICON .EQU 0800H ;POWERUP ICON
TYPCRTE .EQU 0900H ;CRATE/BRLS
TYPHULK .EQU 0A00H ;HULKS
TYPFND .EQU 0B00H ;FIEND
TYPSHOT .EQU 0C00H ;SHOTS FROM ENEMIES
TYPHLPR .EQU 0D00H ;HELPER BLADE AROUND PLYRS
TYPGOO .EQU 0E00H ;GOO SHRAPNEL
TYPGRW .EQU 0F00H ;GROW FROM SLIME
TYPT72 .EQU 1000H ;T72 TANK IN DESERT
TYPTORSO .EQU 1100H ;TORSO ON TOP OF TANK
TYPLAYR .EQU 1200H ;MINE LAYER
TYPAHMD .EQU 1300H ;AHMED FLAME THROWER
TYPFACE .EQU 1400H ;FROG FACE
TYPSL .EQU 1500H ;SHAWN TYPE ENEMIES
TYPMINE .EQU 1700H ;LAND MINE ON GROUND
TYPJET .EQU 1800H ;JET
;JARVIS
*FROGFACE SUBTYPES
*SUBTYPES
SUBMTHL EQU 1
SUBMTHR EQU 2
SUBSIDEL EQU 3
SUBSIDER EQU 4
SUBEL EQU 5
SUBER EQU 6
SUBSHLDL EQU 7
SUBSHLDR EQU 8
SUBHD EQU 9
SUBARML EQU 10
SUBARMR EQU 11
SUBTUNG EQU 12
SUBFLAM EQU 13
;
;SUB MINE LAYER
;
SUBFLM .EQU 01H ;MINE LAYER SWAPS TO THIS OID
;
;SUB HELPER
;
SUBLAY .EQU 01H ;MINE LAYER SWAPS TO THIS OID
;
;SUB CRATE
;
SUBCRT .EQU 02H
SUBBRL .EQU 04H ;BARREL
;SUB TANK
;
SUBTK .EQU 01H ;TANK PORTION OF T72 TANK
SUB60 .EQU 02H ;TOSRO IS FROM BTR60
SUBPIT .EQU 04H ;GUNNER FROM SAND PITS
;
;SUB HOSTAGE TYPES
;
;SUBGUYA .EQU 01H
;SUBGUYB .EQU 02H
;SUBGUYC .EQU 03H
;SUBGUYD .EQU 04H
SUBRUN .EQU 05H
;
;TYPE PLAYER SUB TYPES
;
SUBPL_1 .EQU 0001H ;PLAYER 1
SUBPL_2 .EQU 0002H
SUBRNG1 .EQU 0003H ;RINGS FOR PLAYER 1,2
SUBHLPME .EQU 0004H ;BLADE SPINNING AROUND PLYR
;
;TYPE PLAY BULLET SUB TYPES
;
SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS
SUBSPRY .EQU 0002H ;SPRAY SUB TYPE
SUBFIRE1 .EQU 0003H ;FIRE BALL WPN
SUBGRND .EQU 0004H ;GRENADE
SUBNOSTP .EQU 0005H ;NON STOPPING BULLET
SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN
;
;TYPE ICON SUB TYPES
;
SUBFIRE .EQU 0001H ;FIRE BALL ICON
SUBSPRY1 .EQU 0002H ;SPRAY BULLETS ICON
SUBSPDG .EQU 0003H ;MACHINE GUN TYP ICON
SUBMAN .EQU 0004H ;EXTRA MAN ICON
SUBGREN .EQU 0005H ;GRENADE
SUBRING .EQU 0006H ;RING ICON
SUBNSTP .EQU 0007H ;NON STOPPING BULLETS ICON
SUBKEY .EQU 0008H ;KEY ICON
SUBSHOE .EQU 0009H ;SHOE ICON
SUBSMRT .EQU 000AH ;SMART BOMB
SUBBMB .EQU 000BH ;EXTRA BOMBS
SUBCSH .EQU 000CH ;JEWEL ITEMS
SUBHLP .EQU 000DH ;HELPER
SUBBLET .EQU 000EH ;BOMBLETS ICON
SUBSEGG .equ 0010H ;Spider egg
SUBBOMBSN .equ 0011H ;Small neutron bomb
;TYPE NEUTRAL SUB TYPES
SUBARW .EQU 0001H ;ARROW ID
SUBUP .EQU 0002H ;OVERHEAD ITEMS
SUBUP2 .EQU 0003H ;OVERHEAD ITEMS AFTER VEL SET
SUBCHNK .EQU 0004H ;CHUNK PC
SUBCHNK2 .EQU 0005H ;CHUNK PC
;TYPE TEXT SUB TYPES
SUBTXT .EQU 0001H ;TEXT ID
SUBP1TXT .EQU 0002H ;P1 TEXT
SUBP2TXT .EQU 0003H ;P2 TEXT
SUBP1LVS .EQU 0004H ;ID FOR P1 LIVES DIGIT
SUBWNDW .EQU 0005H ;BIG BOX WINDOW ID
SUBNEW .EQU 0006H ;NEWOID FOR WAVES
SUBTIME .EQU 0007H ;BTIME ID
SUBMES1 .EQU 0008H
SUBMES2 .EQU 0009H
SUBGOTXT .EQU 000AH ;GAME OVER TEXT
SUBSCOR .EQU 000BH ;SCORE ID
SUBP2LVS .EQU 000CH ;ID FOR P2 LIVES DIGIT
SUBDG1I .EQU 000DH ;CNTDWN PLYR1
SUBDG2I .EQU 000EH ;CNTDWN PLYR2
;
;
B_TYPE .set 12
F_TYPE .set >1F00
B_PLYR .set 6
F_PLYR .set >00C0
B_PLYR1 .set 6
B_PLYR2 .set 7
B_SUBT .set 5
F_SUBT .set >003F
PLIST_ID .EQU 1000H
JOYLFT .EQU 2
JOYRGT .EQU 3
JOYUP .EQU 0
JOYDN .EQU 1
; BIT MASKS FOR PLAYER CONTROL TESTING
BMPRYTE .EQU 3 ;MOVE RIGHT,LEFT,DOWN,UP (LSB)
BMPLEFT .EQU 2
BMPDOWN .EQU 1
BMPUP .EQU 0
;YUNIT EQUATES
BMPFRYTE .EQU 7 ;FIRE RIGHT,LEFT,DOWN,UP (MSB)
BMPFLEFT .EQU 6
BMPFDOWN .EQU 5
BMPFUP .EQU 4
; BITS USED IN PLAYER CONTROLS (1=ACTIVE)
PRYTE .EQU 8
PLEFT .EQU 4
PDOWN .EQU 2
PUP .EQU 1
;YUNIT EQUATES FOR JOYSTICK
PFRYTE .EQU 80H
PFLEFT .EQU 40H
PFDOWN .EQU 20H
PFUP .EQU 10H
;
;*GAME STATE CONSTANTS
INGAME .EQU 10H
ININTRO .EQU 18H
INAMODE .EQU 30H
INDIAG .EQU 40H
INGAMEOV .EQU 50H
STOPOBJ .EQU 60H
;
IBUYINS .EQU 8000 ;NUMBER OF BUYINS ALLOWED
BBUYIN .EQU 19 ;TIME TO BUY IN
*
;*ASCII FONT MISCELLANEOUS EQUATES
F15SP EQU 7EH ;FONT 15 SP CHARACTER, FOR HS ENTRY
F15RUB EQU F15SP+1 ;FONT 15 RUB CHARACTER,FOR HS ENTRY
F15END EQU F15RUB+1 ;FONT 15 END CHARACTER,FOR HS ENTRY
F15RQUOT EQU F15END+1 ;FONT 15 RIGHT QUOTE
************************************************************
* *
* PLAYER DATA STRUCTURE *
* ALL OFFSETS ARE 32 BITS FOR MASS MOVES. *
* *
************************************************************
POBJ .EQU 00H ;PLAYER OBJECT BLOCK
PSCRAD .EQU 20H ;PLAYER SCORE SCREEN ADDRESS
PSCORE .EQU 40H ;PLAYER SCORE
TSHOTS .EQU 60H ;TOTAL SHOTS FIRED
TMINEDTH .EQU 70H ;LAND MINE DEATHS!
TBIGSTF .EQU 80H ;TOTAL BIG STUFF DESTROYED
TMISLS .EQU 90H ;TOTAL MISSILE STRIKES
TEARNED .EQU 0A0H ;TOTAL EXTRA MEN EARNED (SCORE/ICONS)
TWPNS .EQU 0B0H ;TOTAL WEAPONS PICKED UP
BMBSUSED .EQU 0C0H ;TOTAL BOMBS/CRUISES USED
PENRGSIZ .EQU 0E0H ;INC/DEC SIZE OF PLAYER LIVES
PTSRAM .EQU 100H ;HOSTAGE PTS VALUE 0-9
PNEXTREP .EQU 120H ;NEXT REPLAY LEVEL, 32 BITS BCD
PLIVES .EQU 140H ;# OF PLAYER LIVES
BMB_CNT .EQU 150H ;# OF BOMBS LEFT TO USE
STIMER .EQU 160H ;SCORE TIMER
THSTGS .EQU 170H ;TOTAL HOSTAGES COLLECTED
TFLAGS .EQU 180H ;TOTAL FLAGS PICKED UP
DLY_MSG .EQU 190H ;MESSAGE DELAY CONTROL WORD
CNTD .EQU 1A0H ;UHW PLAYER CONTINUE FLAG/CNTDWN FLAG
LVADDR .EQU 1C0H ;ADDRESS OF LIVES IMG FOR DMA SCRBRD
MESSAGE .EQU 1E0H ;ADDRESS OF CORRECT COIN IN MESSAGE
CASHCNT .EQU 200H ;UHW GEMS PICKED UP
THITS .EQU 210H ;UHW TOTAL SUCCESSFULL SHOTS FIRED
TKEYS .EQU 220H ;UHW TOTAL KEYS COLLECTED
PDEND .EQU 230H ;END OF PLAYER DATA
PDSIZE .EQU PDEND ;SIZE OF PLAYER DATA BLOCK
*****************************************************************************
*****************************************************************************
*****************************************************************************


189
BACKUP/GAME2.EQU Normal file
View File

@ -0,0 +1,189 @@
;
;SCREEN SETS
;
;SKYTOPOF .EQU 45
;TYPORB .EQU 0400H ;ORB ENEMY (JARVIS)
;TYPORBL .EQU 0500H ;ORB LAZER
;TYPHULK .EQU 0600H ;HULK BAD GUY
;TYPWLMN .EQU 0800H ;WALL MAN
;TYPGAL .EQU 0900H ;GALAGA ENEMY 1
;TYPCOB .EQU 0A00H ;COBRA
;TYPCHSR .EQU 0B00H ;CHASER AFTER WAVE OVER
;TYPICON .EQU 0C00H ;POWERUP ICON
;TYPPRSM .EQU 0D00H ;PRISM AROUND PLAYER
;TYPTANK .EQU 0E00H ;TANK IMAGE
;TYPLSR .EQU 0F00H ;LASER SATELLITE AROUND PLAYER
;TYPFAT .EQU 1000H ;FAT MAN
;TYPTORSO .EQU 1100H ;TORSO OF TANK
;TYPSNK .EQU 1200H ;JACK SNAKE
; .EQU 1300H ;
; .EQU 1400H ;
;TYPCBALL .EQU 1500H ;CANNON BALL
;TYPCBL2 .EQU 1600H ;EXPLODEING CBALL
;TYPMUT .EQU 1800H ;MUTOID MAN
;TYPFACE .EQU 1900H ;FLATFACE
;TYPPILE .EQU 1A00H ;STUFF ON FLOOR BULLETS BUMP IN TO
;
;SUB COBRA ICONS
;
;SUBCOBBOD .EQU 0
;SUBCOBHD .EQU >30
;SUBCOBFLM .EQU >40
;
;SUB PILE TYPES
;
;SUBEDGE .EQU 01H ;EDGE OF WALL IN ARENA 1 (CIRCUIT 1)
;
;SUB GALAGA ICONS
;
;SUBHEAD .EQU 02H
;SUBBALL .EQU 03H
;SUBCHN .EQU 04H
;
;SUB FACE ICONS
;
;SUBGLL .EQU 00H
;SUBGLR .EQU 01H
;SUBSHL .EQU 02H
;SUBSHR .EQU 03H
;SUBEL .EQU 04H
;SUBER .EQU 05H
;SUBMTL .EQU 06H
;SUBMTR .EQU 07H
;SUBCKL .EQU 08H
;SUBCKR .EQU 09H
;SUBNSL .EQU 0AH
;SUBNSR .EQU 0BH
;
;SUB MUTOID PIECES
;
;SUBTKL .EQU 01H
;SUBTKR .EQU 02H
;SUBTSL .EQU 03H
;SUBTSR .EQU 04H
;SUBARML .EQU 05H
;SUBARMR .EQU 06H
;SUBHD .EQU 07H
;SUBSNK .EQU 08H
;
;TYPE EXPLOSIONS SUB TYPES
;SUBNORM .EQU 0000H ;EXPLOSION THAT WON'T HURT ANYONE
;SUBKILL .EQU 0001H ;KILLER TYPE EXPLOSION
;TYPE ICONS SUB TYPES
;SUBPOW1 .EQU 0000H ;BLADES ICON
;SUBPOW2 .EQU 0001H ;HELPER ICON
;SUBSPRY1 .EQU 0002H ;SPRAY BULLETS ICON
;SUBPOD .EQU 0003H ;POD BOMBS ICON
;SUBMAN .EQU 0004H ;EXTRA MAN ICON
;SUBGREN .EQU 0005H ;GRENADE
;SUBRING .EQU 0006H ;RING ICON
;SUBNSTP .EQU 0007H ;NON STOPPING BULLETS ICON
;SUBKEY .EQU 0008H ;KEY ICON
;SUBSHOE .EQU 0009H ;SHOE ICON
;SUBSMRT .EQU 000AH ;SMART BOMB
;SUBPZ1 .EQU 000BH ;PRIZE 1
;SUBPZ2 .EQU 000CH ;PRIZE 2
;SUBPZ3 .EQU 000DH ;PRIZE 3
;SUBCSH .EQU 000EH ;CASH ITEMS ON FLOOR
;SUBCSHI .EQU 000FH ;CASH ITEMS ON FLOOR AT START OF WAVE
;
;NEOPID .EQU 201
;SCOREPID .EQU 202
;LC_PID .EQU 203
;RC_PID .EQU 204
;CC_PID .EQU 205
;SLAM_PID .EQU 206
;DIAG_PID .EQU 207
;P1SWPID .EQU 208
;P2SWPID .EQU 209
;CP_PID1 .EQU 210
;END_GAME_PID .EQU 211
;CP_PID2 .EQU 212
;COLRPID .EQU 213
;DUM_ID .EQU 214
;BUYCPID .EQU 215
;INDPID .EQU 217
;PMPID .EQU 220
;LORDPID .EQU 223
;DRLPID .EQU 225
;DRRPID .EQU 226
;DRTOPID .EQU 227 ;TOP DOOR OPEN ID
;DRTCPID .EQU 228 ;TOP DOOR CLOSE ID
;CHSRPID .EQU 229
;CHNSWPID .EQU 230
;LSRPID .EQU 231
;ICONPID .EQU 232
;ICTST .EQU 233
;COLPID .EQU 234 ;COLLISION ROUTINE
;PCPID .EQU 235
;HULKPID .EQU 236
;DRSPID .EQU 237
;ORBPID .EQU 238
;TNKPID .EQU 239
;FATPID .EQU 240
;STIMEPID .EQU 241
;PODPID .EQU 242
;EXPID .EQU 243
;B1PID .EQU 244 ;BLINK RING PROC PLAYER 1
;B2PID .EQU 245 ;BLINK RING PROC PLAYER 2
;DLYPID .EQU 246 ;DELAY PLYR START BUTTON
;DG1PID .EQU 249
;DG2PID .EQU 250
;CHSR2PID .EQU 251
;CAMPID .EQU 254
;FDPID .EQU 255
;MNPID .EQU 256
;SETPID .EQU 258
;RCYC1PID .EQU 259
;RCYC2PID .EQU 260
;MCYCPID .EQU 261
;CSHPID .EQU 262
;FLYPID .EQU 263
;TEMPPID .EQU 264
;TP2PID .EQU 265
;WLMNPID .EQU 266
;BONPID .EQU 267
;PICPID .EQU 268
;BON1PID .EQU 269
;TVPID .EQU 270
;TV2PID .EQU 271
;KCHAS .EQU 272
;RNGPID .EQU 273
;FADEPID .EQU 274
;STPPID .EQU 275
;RBTAPID .EQU 276
;CYC2PID .EQU 277
;GALPID .EQU 278
;COBPID .EQU 279 ;COBRA MISC
;COBPIDA .EQU 280 ;COBRA ANIMATION
;COBPIDM .EQU 281 ;COBRA MAIN HEAD
;COBPIDS .EQU 282 ;COBRA SPINE
;BUNK .EQU 283
;SNKPID .EQU 284 ;JACK SNAKE
;LZRPID .EQU 285
;BULPID .EQU 286
;FIXIT .EQU 7777H
;BEEPID .EQU 400
;ENEMY VALUES FOR WAVE_INFO TABLE
;ATRAIN .EQU 1
;ORB .EQU 2
;TANK .EQU 3
;FAT .EQU 4
;WLMN .EQU 5
;HULK .EQU 6
;MINE .EQU 7
;MUTD .EQU 8
;FACE .EQU 9
;RBTA .EQU 10
;GALS3 .EQU 11
;GALS1 .EQU 12
;GALS1A .EQU 13
;GALS2 .EQU 14
;COBRA .EQU 15
;SNK .EQU 16


3926
BACKUP/HELPER.ASM Normal file

File diff suppressed because it is too large Load Diff

1955
BACKUP/HSTD.ASM Normal file

File diff suppressed because it is too large Load Diff

1321
BACKUP/ICONS.ASM Normal file

File diff suppressed because it is too large Load Diff

809
BACKUP/IMGPAL.ASM Normal file
View File

@ -0,0 +1,809 @@
.FILE 'imgpal.asm'
.OPTION B,D,L,T
.include imgtbl.glo
.DATA
.even
KRACK:
.word 64
.word >0,>2A1F,>7FFF,>0,>842,>C63,>1084,>14A4
.word >18C6,>20E2,>1907,>2923,>3169,>4185,>4A05,>73C1
.word >4E6F,>5294,>6,>A,>4C,>8E,>11,>1A
.word >13D,>21F,>31F,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>20,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
ORCP1:
.word 64
.word >0,>421,>842,>C63,>E7,>108,>129,>16B
.word >6E,>458,>1EE,>293,>1084,>14A5,>18C6,>1CE7
.word >6064,>7C65,>2108,>2529,>294A,>2D6B,>318C,>39CE
.word >7F61,>3DEF,>4210,>4632,>5274,>56B5,>6B3A,>7FFF
.word >40,>80,>1C01,>A0,>C0,>E0,>501,>521
.word >541,>561,>5A1,>3C00,>5C1,>5E1,>601,>641
.word >661,>B00,>26E6,>3328,>330B,>432C,>4F52,>5F96
.word >67B5,>6BD7,>7BFD,>4803,>6C00,>7C08,>1C00,>0
RIPAL:
.word 64
.word >0,>0,>421,>800,>C00,>821,>C21,>842
.word >C63,>1000,>1400,>1800,>1C00,>1021,>1421,>1820
.word >1821,>1C21,>1C41,>1C61,>1084,>1C62,>1C82,>14A5
.word >18C6,>1CE6,>1CE7,>2000,>2400,>2800,>2061,>7FFF
.word >60,>80,>60,>80,>81,>A1,>4A1,>20C6
.word >2C00,>2C20,>3020,>3420,>3800,>4C41,>60,>60
.word >60,>60,>80,>80,>A0,>A0,>2529,>8E0
.word >A1,>C1,>C1,>920,>4E2,>520,>D40,>1D82
BLUBOOM:
.word 64
.word >0,>4,>25,>26,>48,>49,>6A,>6B
.word >6C,>8E,>51,>52,>54,>56,>58,>59
.word >7A,>9B,>BC,>5F,>11F,>15F,>17F,>1BF
.word >1DF,>1FF,>21F,>23F,>25F,>27F,>27F,>2DF
.word >2FF,>35F,>3BF,>3DF,>3FF,>3FF,>3FF,>37FF
.word >3BFF,>3FFF,>43FF,>47FF,>4BFF,>4FFF,>53FF,>5FFF
.word >63FF,>6BFF,>77FF,>7FFF,>42,>64,>A6,>50A
.word >56E,>5F4,>658,>116E,>1A14,>1278,>2EB9,>371C
BLUJET:
.word 64
.word >0,>0,>1420,>86,>1C00,>2000,>A7,>A8
.word >C8,>2400,>C9,>E9,>2800,>2C00,>EA,>10A
.word >10B,>1,>421,>463,>C63,>1483,>14A2,>1084
.word >14A5,>10C6,>1CE7,>1D08,>156C,>2529,>294A,>2D6B
.word >29CF,>3000,>3400,>10C,>12C,>12D,>14D,>3800
.word >3841,>12E,>14E,>3C00,>14F,>16F,>4000,>170
.word >4C21,>318C,>35AD,>190,>191,>192,>1B3,>1F6
.word >39CE,>31F0,>3DEF,>3A32,>4210,>4631,>4E73,>5EF7
GRNJET:
.word 64
.word >0,>0,>1420,>82,>1C00,>2000,>A3,>C3
.word >C3,>2400,>A3,>E3,>2800,>2C00,>103,>144
.word >165,>1,>421,>463,>C63,>1483,>14A2,>1084
.word >14A5,>10C6,>1CE7,>1D08,>156C,>2529,>294A,>2D6B
.word >29CF,>3000,>3400,>186,>185,>1A9,>1AA,>3800
.word >3841,>1C9,>1C9,>3C00,>1EA,>1EA,>4000,>20A
.word >4C21,>318C,>35AD,>20B,>22B,>249,>26A,>2CF
.word >39CE,>31F0,>3DEF,>3A32,>4210,>4631,>4E73,>5EF7
SPYDERP1:
.word 64
.word >0,>842,>1084,>1016,>C96,>14A4,>18A4,>18C4
.word >1CE3,>1CE4,>18C6,>2108,>294A,>937,>5B7,>238
.word >2D8,>3C00,>4000,>4C00,>5820,>5C20,>6420,>6820
.word >6C20,>7420,>7820,>7C20,>7CA3,>2CE0,>7D00,>7D80
.word >7E00,>7E60,>7EC0,>7F20,>77A0,>7FE0,>67ED,>0
.word >4400,>6020,>7020,>7CA0,>7CC5,>7D49,>7D8B,>7DAD
.word >7DEE,>7E72,>7ED6,>318C,>39CE,>4210,>4A52,>5294
.word >5AD6,>6318,>6B5A,>739C,>7BDE,>360,>220,>7FFF
NEUTRONP:
.word 25
.word >0,>421,>C63,>14A5,>1CE7,>2529,>318C,>3DEF
.word >5294,>7FFF,>6200,>6E40,>7AA0,>7760,>1F,>7C00
.word >3E0,>1C00,>2800,>4000,>5000,>6400,>7C00,>3E0
.word >1F
PPLP:
.word 64
.word >0,>21,>A0,>E0,>120,>161,>1C1,>2406
.word >28E0,>18C6,>2888,>DE3,>1A06,>2649,>446D,>5850
.word >7C16,>48C3,>3965,>6D25,>7E60,>308A,>79AA,>328C
.word >69EC,>5F57,>71D8,>469,>CCD,>CCE,>D52,>104E
.word >28C0,>2CC0,>1111,>1579,>5980,>6DE0,>129,>1CE
.word >1023,>1084,>1CA0,>C29,>3C6B,>C2F,>404C,>318C
.word >39CE,>484D,>4C6E,>5450,>6031,>6833,>7D80,>4631
.word >56B5,>6739,>0,>200,>742,>3FEF,>7FFF,>0
CLDS9:
.word 64
.word >0,>D33,>DD7,>DF8,>E18,>E19,>E39,>E19
.word >E39,>E3A,>E18,>E3A,>E5A,>E5A,>E5B,>E7B
.word >E7C,>E9C,>E5B,>E7B,>E7C,>E7C,>E9C,>E9D
.word >EBC,>EBD,>E9C,>EBC,>E9D,>EBD,>EBD,>12BD
.word >12BD,>EDD,>EDD,>12DD,>12DD,>12FD,>12DD,>12FD
.word >16DD,>16FD,>171D,>171D,>1B1D,>173D,>1B3D,>1B3D
.word >1F3D,>1B5D,>1B5D,>1F5D,>1F7D,>1F5D,>1F7D,>237D
.word >1F9D,>239D,>239D,>23BD,>23BD,>27BD,>27BD,>27BD
BIGPL1:
.word 64
.word >0,>2860,>34A3,>40C4,>40E4,>44E5,>48E5,>4905
.word >4D05,>4D26,>5126,>5147,>5505,>5526,>5547,>5947
.word >5D47,>5568,>5968,>5D68,>5D88,>5989,>5D89,>5DA9
.word >5DAA,>61A9,>61AA,>61CA,>61EB,>65EB,>61EC,>660C
.word >6A0C,>6A2E,>6E2E,>6A4F,>6E4F,>6E70,>6E90,>72B2
.word >72D3,>76F4,>7B36,>7B57,>7F9B,>D03,>D23,>D43
.word >D63,>D83,>DA3,>E03,>821,>1CE7,>4D60,>2D6B
.word >4631,>7E00,>7F00,>5DC3,>7184,>7316,>0,>0
GUNSP1:
.word 64
.word >0,>842,>C63,>1C60,>1084,>1C25,>1C45,>14A5
.word >2447,>8C2,>8E2,>CE3,>D03,>D23,>D43,>D63
.word >DA3,>18C6,>1CE7,>2108,>2529,>2C48,>2C49,>294A
.word >2D6B,>318C,>35AD,>39AD,>39CE,>3DEF,>4210,>4631
.word >4A30,>4E30,>4A52,>4E73,>5252,>5651,>5273,>5294
.word >56B5,>5AD6,>5EF7,>6318,>6739,>6F7B,>77BD,>0
.word >4A1,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
BIGPL2:
.word 64
.word >0,>C63,>1863,>2063,>2063,>2463,>2863,>2863
.word >2C63,>2C63,>3063,>3083,>3463,>3463,>3483,>3883
.word >3C83,>34A3,>38A3,>3CA3,>3CC3,>38C3,>3CC3,>3CE3
.word >3CE3,>40E3,>40E3,>4103,>4123,>4523,>4124,>4544
.word >4944,>4966,>4D66,>4987,>4D87,>4DA8,>4DC8,>51EA
.word >520B,>562C,>5A6E,>5A8F,>5ED3,>1CA0,>1CC0,>1CE0
.word >1D00,>1D20,>1D40,>1DA0,>0,>1CE7,>14A5,>2D6B
.word >4631,>14A5,>18C7,>5DC3,>18E7,>7316,>842,>C63
GUNSP2:
.word 64
.word >0,>842,>C63,>1C60,>1084,>1C25,>1C45,>14A5
.word >2447,>1480,>14A0,>18A0,>18C0,>18E0,>1900,>1920
.word >1960,>18C6,>1CE7,>2108,>2529,>2C48,>2C49,>294A
.word >2D6B,>318C,>35AD,>39AD,>39CE,>3DEF,>4210,>4631
.word >4A30,>4E30,>4A52,>4E73,>5252,>5651,>5273,>5294
.word >56B5,>5AD6,>5EF7,>6318,>6739,>6F7B,>77BD,>0
.word >1080,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
MADP1:
.word 64
.word >0,>842,>1063,>1C62,>2C00,>3400,>2CA2,>30A4
.word >3800,>4800,>38C3,>3CC3,>40C4,>44E4,>44C5,>4CC5
.word >4CE5,>4D05,>50E5,>5105,>5505,>5525,>4906,>5126
.word >5506,>5526,>5527,>1C78,>5547,>3DAB,>5691,>5926
.word >5947,>5967,>5968,>5D68,>5988,>59A9,>5D88,>5DA8
.word >5DA9,>5DC9,>61C9,>5DCA,>5DEA,>61AA,>61CA,>61EA
.word >61EB,>620B,>5E0C,>622C,>660B,>662C,>664C,>664D
.word >666D,>6A6D,>6A8E,>6AAF,>6AD0,>7777,>7FDD,>0
MADP2:
.word 64
.word >0,>1,>21,>42,>63,>84,>A5,>C6
.word >421,>1084,>14A5,>18C6,>2C00,>E7,>108,>1CE7
.word >2108,>129,>2529,>14A,>294A,>16B,>1CE,>231
.word >2B5,>2D6B,>3000,>3400,>3800,>3C00,>4000,>4400
.word >4800,>4C00,>5000,>5400,>4020,>4420,>4820,>4C20
.word >5020,>44A5,>318C,>5420,>5820,>5C20,>6020,>6420
.word >7D80,>35AD,>6E20,>7661,>7E00,>7E60,>7EC0,>7F20
.word >7F80,>39CE,>3DEF,>4210,>4631,>4A52,>4E73,>1C00
BIOFLG:
.word 32
.word >0,>0,>421,>842,>C63,>1084,>14A5,>18C6
.word >181,>56B5,>1842,>2062,>2863,>2C62,>3062,>3883
.word >3C42,>4083,>44A4,>48C5,>48E5,>352A,>4D06,>5126
.word >5948,>5D89,>61AA,>3DD1,>4613,>722E,>5278,>62DE
SHKPAL:
.word 64
.word >0,>0,>1,>842,>1084,>14A5,>D23,>18C6
.word >1CE7,>2108,>C30,>C50,>1030,>1050,>2529,>294A
.word >C31,>1031,>1052,>1452,>1053,>1453,>1475,>1877
.word >1895,>20D6,>1CB9,>24FA,>2939,>1DDF,>1DFF,>261F
.word >2D6B,>318C,>35AD,>39CE,>3DEF,>4210,>4631,>4E73
.word >2D59,>315C,>39BA,>39BC,>325F,>421C,>463C,>4E5D
.word >56B8,>52BE,>3E9F,>46BF,>4EFF,>5EFA,>5EFE,>633F
.word >6B7F,>6F7F,>6F9F,>73BF,>77DF,>7BDF,>7BFF,>7FFF
MTRP:
.word 64
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >21,>442,>863,>C84,>10A5,>14C6,>18E7,>1D08
.word >2129,>254A,>296B,>2D8C,>31AD,>39EF,>160,>560
.word >3800,>3C00,>3C40,>4060,>44A0,>180,>580,>5A0
.word >980,>DA2,>11C4,>1E06,>2628,>2E49,>366C,>3E8E
.word >42AE,>4D00,>5160,>59E0,>5E00,>6280,>6AE0,>7340
.word >7380,>7BC0,>7BE0,>4EF0,>5713,>5F56,>6777,>6B99
.word >77BA,>7BDC,>7BFC,>7FDC,>7FFC,>7FFF,>0,>0
CHAIRP:
.word 64
.word >0,>0,>842,>1800,>14A5,>2000,>2800,>18A6
.word >18C6,>1CE0,>2100,>2520,>2940,>1E0,>2A1,>E7
.word >1CE7,>108,>2108,>C30,>185A,>129,>2529,>294A
.word >16C,>18C,>1CE,>211,>2B6,>3000,>2D60,>2D6B
.word >318C,>35AD,>39CE,>3C00,>3DEF,>5400,>7D80,>504E
.word >7E00,>4210,>4611,>4631,>7EC0,>4A52,>4E73,>5294
.word >56B5,>5AD6,>5EF7,>5F18,>6318,>6739,>6B5A,>6F5A
.word >6F7B,>77BD,>7FFF,>1400,>1C00,>3000,>5800,>7C00
BOOBP:
.word 64
.word >0,>0,>1,>21,>42,>63,>842,>2021
.word >3000,>3400,>3800,>3C00,>4000,>4400,>38C3,>3CC3
.word >84,>1084,>14A5,>18C6,>1CE7,>2108,>30A4,>40C4
.word >44C5,>44E4,>2529,>294A,>2D6B,>1C78,>318C,>3DAB
.word >39CE,>3DEF,>4800,>4C00,>5000,>5020,>4CC5,>4D05
.word >50E5,>5400,>5420,>5505,>5506,>5820,>5C20,>6020
.word >7420,>5526,>5527,>5926,>5947,>5967,>7D80,>7EC0
.word >5968,>5D88,>5DA9,>61CA,>61EB,>664C,>6AAF,>5AD4
ARPRTPL:
.word 64
.word >0,>1084,>0,>0,>400,>422,>C20,>C42
.word >C82,>1041,>1462,>1882,>1C82,>64,>C63,>20A3
.word >20C3,>24C4,>24E4,>86,>1CC6,>20E7,>4C8,>2508
.word >50B,>D92,>11F4,>28E5,>2D05,>3126,>3967,>41A8
.word >45A8,>2929,>2D4A,>316B,>2A77,>3297,>2A98,>2E98
.word >32B9,>2EFC,>39AD,>3ADA,>42FA,>4610,>471A,>5ED6
.word >4F1A,>5F5C,>6F9D,>7FDE,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
JEEPP:
.word 64
.word >0,>420,>C40,>1460,>1C80,>24A0,>2CC0,>34E0
.word >3D00,>4520,>4D40,>5560,>5D80,>65A0,>6DC0,>7E00
.word >0,>842,>1084,>18C6,>2108,>294A,>318C,>39CE
.word >4210,>4E73,>6318,>739C,>7FFF,>1460,>1C80,>30E0
.word >2081,>34A3,>44C4,>50E5,>5945,>71A7,>10A4,>1906
.word >C63,>3C00,>6C43,>3800,>6AE6,>7FE0,>7FED,>7FF4
.word >EC,>171,>237,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
FING1:
.word 64
.word >0,>0,>2,>461,>C60,>1080,>1084,>14A0
.word >18C0,>18C6,>2481,>2C82,>3082,>1CE0,>2100,>2520
.word >2108,>2940,>294A,>3180,>318C,>7A2,>38A3,>38C3
.word >44C4,>4CC4,>48E4,>4905,>5105,>3DE0,>4620,>5505
.word >5905,>6105,>5D26,>5948,>6547,>6968,>6569,>6D46
.word >7568,>39CE,>75ED,>79EC,>4631,>56B5,>7671,>76B4
.word >6739,>7FFF,>7FFD,>7FFF,>1CE7,>2529,>2D6B,>3DEF
.word >5AD6,>6739,>4800,>7800,>7120,>7260,>7BEE,>7FFF
DESRTPL:
.word 64
.word >0,>1861,>2080,>20A1,>24A2,>28C1,>2CE1,>28C3
.word >2CE3,>3102,>3104,>3523,>3944,>3545,>3D65,>4187
.word >49C9,>0,>1483,>1CC4,>20E6,>24A1,>28C0,>2506
.word >2927,>294A,>2CE0,>2D48,>3DAB,>41ED,>524F,>5693
.word >18A4,>1CC5,>20E5,>3169,>3589,>358B,>39AA,>3DCB
.word >41CB,>4A0D,>1040,>400,>2108,>2D6B,>318C,>39CE
.word >10C2,>14C1,>14E1,>1502,>1D01,>24C0,>28E0,>3101
.word >3522,>3943,>3D64,>1084,>14A5,>28C2,>3103,>18C6
WARPP:
.word 64
.word >0,>842,>1084,>18C6,>2108,>294A,>318C,>39CE
.word >4631,>4E73,>56B5,>5EF7,>6739,>6F7B,>77BD,>7FFF
.word >882,>8C2,>902,>289F,>213F,>19DF,>125F,>AFF
.word >7E60,>7E00,>7D80,>7D00,>3440,>4460,>6062,>60C4
.word >6547,>7DCC,>240E,>7FE0,>6400,>7C00,>0,>0
.word >0,>0,>0,>0,>0,>0,>8000,>8000
.word >8000,>8000,>0,>0,>8000,>8000,>8000,>8000
.word >8000,>0,>0,>0,>8000,>8000,>8000,>7FFF
WARPP2:
.word 64
.word >0,>842,>1084,>18C6,>2108,>294A,>318C,>39CE
.word >4631,>4E73,>56B5,>5EF7,>6739,>6F7B,>77BD,>7C15
.word >882,>8C2,>902,>289F,>213F,>19DF,>125F,>AFF
.word >7E60,>7E00,>7D80,>7D00,>3440,>4460,>6062,>60C4
.word >6547,>7DCC,>240E,>7FE0,>6400,>1F,>0,>0
.word >0,>0,>0,>0,>0,>0,>8000,>8000
.word >8000,>8000,>0,>0,>8000,>8000,>8000,>8000
.word >8000,>0,>0,>0,>8000,>8000,>8000,>7FFF
GRNTR:
.word 48
.word >0,>0,>1060,>1800,>1460,>1CA2,>1CE7,>2400
.word >24E2,>28E2,>2108,>2529,>318C,>2C00,>3000,>3400
.word >3442,>3463,>3863,>3102,>3C00,>4063,>48A5,>3942
.word >3D63,>4184,>49C7,>35AD,>4210,>6548,>5294,>6318
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >20A0,>2800,>3021,>3421,>3C63,>7D80,>7F20,>7FFF
GRNTP:
.word 48
.word >0,>0,>64,>1802,>65,>8A7,>14A5,>2404
.word >8E9,>8EA,>2108,>2529,>318C,>2C06,>3008,>3407
.word >3446,>3467,>3869,>90C,>3C0C,>406D,>48B0,>94E
.word >D6F,>1190,>1DD2,>35AD,>4210,>6548,>5294,>6318
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C7,>2806,>3027,>342B,>3C6E,>7D80,>7F20,>7FFF
GRNTB:
.word 48
.word >0,>0,>421,>6,>421,>842,>1CE7,>9
.word >841,>C63,>2108,>2529,>318C,>B,>C,>D
.word >84D,>C6D,>106E,>1084,>F,>C73,>14B7,>C63
.word >C63,>C63,>C63,>35AD,>4210,>2159,>5294,>6318
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C63,>A,>42C,>42D,>C70,>7D80,>7F20,>7FFF
GRNTBLU:
.word 48
.word >0,>9,>9,>C,>C,>C,>F,>E
.word >F,>1813,>F,>1414,>1C15,>F,>812,>1414
.word >1C15,>2C18,>381B,>1011,>1C1A,>28DF,>259F,>1877
.word >1C98,>20B9,>28FC,>41E,>101F,>554,>101F,>41B
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C,>11,>32,>35,>19,>7D80,>7F20,>7FFF
GRNTPNK:
.word 48
.word >0,>1003,>1403,>2006,>2C06,>2406,>2C09,>2808
.word >2C09,>500D,>3409,>4C0E,>540F,>3409,>400C,>4C0E
.word >540F,>6412,>7015,>480B,>640F,>70D6,>6D97,>3942
.word >3D63,>4184,>49C7,>6412,>7015,>6548,>7015,>640F
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >4008,>2808,>302A,>342B,>3C0D,>7D80,>7F20,>7FFF
GRNTPUR:
.word 48
.word >0,>9,>9,>3815,>3815,>3815,>3818,>3817
.word >3818,>501C,>3818,>4C1D,>541E,>3818,>401B,>4C1D
.word >541E,>641E,>701E,>481A,>541E,>603E,>5CFE,>501E
.word >541E,>581E,>605E,>3C1E,>481E,>3CBD,>481E,>3C1E
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C,>2814,>2815,>2818,>281C,>7D80,>7F20,>7FFF
GRNTGRN:
.word 48
.word >0,>9,>9,>C,>C,>C,>F,>3EE
.word >3EF,>1BF3,>3EF,>17F4,>1FF5,>F,>812,>1414
.word >1C15,>2C18,>381B,>1011,>1E10,>2AD5,>2795,>1A6D
.word >1E8E,>22AF,>2AF2,>614,>1215,>74A,>1215,>611
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C,>11,>32,>35,>19,>7D80,>7F20,>7FFF
GRNTRED:
.word 48
.word >0,>9,>9,>5000,>5000,>5000,>5002,>5001
.word >5002,>6806,>5002,>6407,>6C08,>5002,>5805,>6407
.word >6C08,>7C0B,>7C0E,>6004,>6C0D,>78D2,>7592,>686A
.word >6C8B,>70AC,>78EF,>5411,>6012,>5547,>6012,>540E
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >C,>440D,>442E,>4431,>4415,>7D80,>7F20,>7FFF
DGP1:
.word 64
.word >0,>C0,>100,>140,>180,>220,>1460,>1C80
.word >30E0,>1880,>2081,>34A3,>44C4,>50E5,>5945,>71A7
.word >421,>C63,>14A5,>1CE7,>2529,>2D6B,>35AD,>3DEF
.word >4E73,>5AD6,>6739,>77BD,>0,>2400,>3000,>3C00
.word >4800,>5400,>6000,>7800,>7120,>6DC0,>7260,>7720
.word >7FA7,>7FCE,>7FF6,>7FF7,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
DGP2:
.word 64
.word >0,>1800,>2402,>2C02,>3802,>5003,>1460,>1C80
.word >30E0,>1880,>2081,>34A3,>44C4,>50E5,>5945,>71A7
.word >421,>C63,>14A5,>1CE7,>2529,>2D6B,>35AD,>3DEF
.word >4E73,>5AD6,>6739,>77BD,>0,>2400,>3000,>3C00
.word >4800,>5400,>6000,>7800,>7120,>6DC0,>7260,>7720
.word >7FA7,>7FCE,>7FF6,>7FF7,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
DGP3:
.word 64
.word >0,>7,>48,>8A,>AC,>131,>1460,>1C80
.word >30E0,>1880,>1020,>2880,>3481,>40A2,>48E2,>5144
.word >421,>C63,>14A5,>1CE7,>2529,>2D6B,>35AD,>3DEF
.word >4E73,>5AD6,>6739,>77BD,>0,>2400,>3000,>3C00
.word >4800,>5400,>6000,>7800,>7120,>6DC0,>7260,>7720
.word >7FA7,>7FCE,>7FF6,>7FF7,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
AHMEDP:
.word 64
.word >0,>A0,>E0,>160,>29C0,>36A0,>0,>1880
.word >2081,>34A3,>44C4,>50E5,>5945,>71A7,>421,>C63
.word >14A5,>1CE7,>2529,>2D6B,>35AD,>4631,>5294,>5EF7
.word >6B5A,>77BD,>3880,>4840,>5040,>6040,>6C40,>4840
.word >6040,>6C40,>7C40,>7D00,>7D40,>7DA0,>7DC0,>7DE0
.word >7E20,>7E60,>7F40,>7FA0,>7FED,>7FEE,>7FEF,>7FF1
.word >7FF2,>7FF3,>6802,>6805,>744A,>7890,>7D35,>7D58
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
EORNGPAL:
.word 64
.word >0,>800,>C00,>1000,>1420,>1820,>1C20,>2040
.word >2440,>2840,>2C60,>3060,>3460,>3880,>3C80,>4080
.word >44A0,>48A0,>4CC0,>50C0,>54E0,>5900,>5D20,>6140
.word >6560,>6980,>6DA0,>71C0,>75E0,>7A00,>7E20,>7E40
.word >7E60,>7E81,>7EA2,>7EC3,>7EE4,>7F05,>7F26,>7F47
.word >7F68,>7F89,>7FAA,>7FCB,>7FEC,>7FED,>7FEE,>7FEF
.word >7FF0,>7FF1,>7FF2,>7FF3,>7FF4,>7FF5,>7FF6,>7FF7
.word >7FF8,>7FF9,>7FFA,>7FFB,>7FFC,>7FFD,>7FFE,>7FFF
MTNKP:
.word 64
.word >0,>C63,>14A5,>1CE7,>2529,>2D6B,>35AD,>4631
.word >6318,>0,>0,>0,>2,>4,>6,>28
.word >2A,>4E,>72,>B7,>11B,>21F,>3E0,>160
.word >7D40,>7FE0,>6400,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
MTNKP2:
.word 64
.word >0,>C63,>14A5,>1CE7,>2529,>2D6B,>35AD,>4631
.word >6318,>0,>0,>0,>800,>1000,>1800,>2000
.word >2800,>3802,>4842,>5C03,>6C62,>7D45,>3E0,>160
.word >7D40,>7FE0,>6400,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
BTRP:
.word 64
.word >0,>400,>821,>C43,>1040,>1041,>1062,>1064
.word >1462,>1483,>1485,>18A6,>1C80,>1C81,>1C82,>1CA2
.word >24A1,>28C1,>1CC4,>24C3,>24E3,>28E3,>1CC7,>2506
.word >2926,>1CC8,>20E8,>2509,>292A,>2CE1,>3501,>2D03
.word >2D04,>3921,>3922,>3544,>3944,>3945,>3964,>3965
.word >4961,>4982,>4185,>41A5,>49C6,>59C2,>51E6,>2D47
.word >3588,>39A9,>41EA,>460A,>5207,>5A27,>4A2B,>39AE
.word >526C,>4A32,>5AAD,>5ECE,>62EF,>6B31,>6F52,>7FFF
SCUDP:
.word 64
.word >0,>40,>480,>820,>840,>842,>1060,>1080
.word >1460,>CA2,>14A0,>1101,>1142,>983,>A03,>EA5
.word >1B27,>20A0,>28E0,>2100,>2940,>3100,>3920,>4160
.word >1DC3,>3180,>3265,>26E6,>276B,>39C0,>4DA0,>55C0
.word >4200,>4E60,>6200,>56A0,>5EE0,>6F60,>1084,>18C6
.word >2108,>294A,>318C,>39CE,>4210,>4A52,>5294,>6318
.word >6F7B,>77BD,>7FE0,>7CC0,>46F,>FE2,>0,>3000
.word >3800,>4020,>4820,>5020,>6020,>6C20,>7420,>7FFF
BLLNP5:
.word 13
.word >0,>0,>2C00,>3800,>4800,>7C00,>20,>4C00
.word >3000,>4400,>3C60,>60E2,>4483
BLLNP3:
.word 13
.word >0,>0,>1C0,>260,>1C1,>3A5,>0,>100
.word >161,>161,>202,>3C6,>3E7
DHNDP:
.word 64
.word >0,>0,>842,>1002,>1043,>1403,>1424,>1444
.word >1803,>1824,>1825,>1C25,>2025,>2026,>1865,>2046
.word >2426,>2427,>2447,>2827,>2847,>2848,>2C28,>2C48
.word >3028,>3049,>3069,>3449,>3469,>346A,>384A,>386A
.word >3C4B,>444C,>3C6B,>406B,>3C8C,>406C,>446C,>448D
.word >484D,>488D,>4C4E,>4C8E,>504E,>546F,>508F,>548F
.word >54B0,>5870,>5890,>5C71,>5CB1,>6472,>60B2,>64B2
.word >64B3,>6873,>68B3,>6CB4,>7475,>70D5,>74D5,>7CB6
CENSP:
.word 19
.word >0,>0,>C00,>1400,>1C00,>2400,>2C00,>3400
.word >3C00,>4400,>4C00,>5400,>5C00,>6400,>6C00,>7C00
.word >7CC0,>7D40,>7E00
BOXP:
.word 16
.word >0,>7C00,>6440,>4840,>53,>95,>1F,>3E0
.word >2C0,>1E0,>7FE0,>5EE0,>4620,>7C1F,>6018,>3C0F
GOOBP:
.word 64
.word >0,>161,>181,>1A1,>1C1,>1E1,>201,>221
.word >241,>261,>6E2,>B63,>FE4,>1E2,>280,>340
.word >2108,>2529,>294A,>35AD,>49EE,>5294,>56B5,>5AD6
.word >6318,>77BD,>16C,>211,>319,>7F20,>5420,>5C20
.word >6C20,>5EF7,>6F7B,>140,>240,>2E0,>0,>421
.word >2,>23,>45,>5,>46,>49,>1CE7,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>7FFF
FRTCLS:
.word 64
.word >0,>0,>842,>C63,>1063,>1084,>1484,>14A5
.word >18A4,>18C6,>1CC4,>1CC5,>20E6,>1CE7,>2507,>2108
.word >2529,>2928,>2D28,>294A,>2D6B,>3149,>356A,>398B
.word >318C,>35AD,>39CE,>3DAB,>3DEF,>49EE,>522F,>4A52
.word >4E73,>5650,>5A71,>62B2,>5294,>56B5,>5AD6,>6318
.word >7736,>77BD,>A5,>129,>16C,>211,>319,>3100
.word >7F20,>1035,>1435,>1437,>5420,>5C20,>6C20,>183B
.word >5EF7,>6F7B,>C0,>140,>240,>2E0,>3A0,>47EB
REACTR:
.word 64
.word >0,>421,>C63,>84,>A5,>C6,>1084,>1486
.word >18C6,>1CC5,>2100,>2520,>2940,>3180,>E7,>14A7
.word >108,>14A,>18A8,>18C9,>1CCA,>20EB,>294A,>210C
.word >250D,>252E,>292E,>2D4F,>2D71,>3171,>3192,>4C41
.word >3DE0,>35AD,>39CD,>3DEF,>4620,>4210,>4631,>35B3
.word >39D5,>4632,>3DF6,>4218,>4639,>5EC0,>7F80,>6F6F
.word >4A52,>4E73,>5294,>56B5,>5AD6,>4A5B,>4E7C,>5ADC
.word >4E7D,>5EF7,>6318,>673A,>6B5A,>6F7B,>739C,>77BD
LBOXP1:
.word 11
.word >0,>14A5,>2108,>2D6B,>39CE,>4A52,>6318,>6560
.word >7E20,>7B20,>738E
LBOXP2:
.word 11
.word >0,>14A5,>2108,>2D6B,>39CE,>4A52,>6318,>7C00
.word >7CA5,>7D4A,>7DEF
STUFFP:
.word 64
.word >0,>421,>C63,>14A5,>1CE7,>2529,>318C,>3DEF
.word >5294,>7FFF,>1C00,>2800,>4000,>5C00,>7CC0,>6200
.word >6E40,>7AA0,>7760,>6,>A,>4C,>8E,>11
.word >1A,>A0,>E0,>140,>1C0,>240,>300,>2CA1
.word >34E3,>4142,>4DA4,>5A05,>13D,>21F,>31F,>3082
.word >38A3,>48E4,>5505,>6105,>6D46,>7621,>7568,>7DA9
.word >79EC,>1405,>2008,>2C0B,>4010,>5C17,>43F0,>781E
.word >6800,>6739,>15,>0,>0,>0,>0,>0
STATICP:
.word 32
.word >0,>1084,>18E8,>2549,>739C,>3DEF,>318A,>631D
.word >39EE,>250B,>6318,>5291,>4253,>842,>3E0F,>316A
.word >2549,>1D2A,>739C,>3DEF,>318A,>2529,>631D,>739C
.word >39EE,>250B,>807,>7FFF,>6318,>1CE7,>5291,>4253
IBALLP:
.word 64
.word >0,>842,>1080,>14A0,>1860,>18C0,>2100,>2420
.word >2C80,>24C0,>2CC0,>2CE0,>2520,>2D20,>3120,>3520
.word >30E1,>3521,>308A,>2940,>2D60,>3180,>35A0,>35AA
.word >318C,>38C0,>3900,>3980,>39C0,>3C00,>3CC0,>40A0
.word >48C0,>3CE0,>3D40,>4560,>3DE0,>41E0,>45E0,>4620
.word >446D,>39CE,>6C34,>4631,>4A40,>4E60,>5280,>56A0
.word >5AC0,>5EE0,>6300,>6720,>6B40,>6F60,>7FE0,>4A41
.word >4E73,>56B5,>5EF7,>6739,>6F7B,>7FFF,>0,>0
RBPAL:
.word 31
.word >0,>79A2,>7902,>6C42,>5CA2,>5462,>4842,>3C42
.word >3442,>3042,>2842,>210C,>240C,>1C09,>1407,>0
.word >40A3,>48A5,>58C6,>6905,>7D27,>4E73,>35AD,>294A
.word >1CE7,>1084,>34A3,>5109,>614A,>44A4,>69CE
BULLET:
.word 64
.word >0,>0,>20,>7D00,>7E60,>7F80,>7FFF,>330C
.word >160,>208,>C0,>7400,>7F00,>38C0,>5DA0,>7EC0
.word >7FEC,>7640,>7F20,>7326,>52B4,>1D16,>422,>C69
.word >C8C,>1911,>1D57,>25FC,>2A1F,>1020,>7D40,>2861
.word >7E00,>7EE0,>4482,>64E1,>6800,>5103,>7FC1,>6F36
.word >7184,>7C21,>628F,>7609,>5A0D,>4569,>7DA0,>7EC2
.word >6E80,>7FA0,>7FD4,>39D4,>252E,>4637,>5B1F,>18EA
.word >14A8,>1087,>2D72,>2A0,>0,>7F6A,>7EC0,>65C7
SCOREPAL:
.word 61
.word >0,>842,>1842,>2062,>2863,>3520,>1084,>18C6
.word >1CE7,>923,>252A,>294A,>3E0,>2C62,>3062,>7CE1
.word >3883,>3C42,>4083,>44A4,>48C5,>4D80,>48E5,>5A43
.word >1585,>318C,>352A,>4D06,>5126,>5948,>5D89,>61AA
.word >3DD1,>4613,>722E,>5278,>62DE,>7FFF,>1012,>C53
.word >C76,>8F6,>538,>578,>1DB,>238,>298,>346A
.word >3C6B,>100E,>406C,>444D,>504E,>5830,>6032,>6832
.word >7013,>7414,>7815,>7FE0,>7C00
DUXPAL:
.word 11
.word >0,>7C00,>6739,>1F,>35AD,>77A0,>741A,>1A
.word >15,>10,>B
DIAGP:
.word 29
.word >0,>56B5,>7BDE,>7800,>7640,>77A0,>3C0,>1E
.word >3A8E,>35E,>35AD,>6F00,>33F,>79F7,>781E,>677F
.word >6F9F,>7FFF,>25DA,>4,>0,>43,>BF79,>FCAB
.word >D306,>12A6,>6FB1,>7C00,>3E0
FNDP:
.word 59
.word >0,>1003,>1403,>400B,>3009,>2406,>2C09,>3009
.word >2C09,>6012,>3409,>4C0E,>6414,>482D,>400C,>4C0E
.word >540F,>6412,>7015,>7417,>7415,>70D6,>6D39,>3942
.word >3D63,>6091,>49C7,>6412,>7015,>6548,>7015,>640F
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >500B,>2808,>3C2B,>342B,>3C0D,>7D80,>7F20,>7FFF
.word >1C05,>842,>2108,>2807,>3C0B,>440D,>3DAE,>7C16
.word >6D97,>5294,>7815
FNDPRED:
.word 59
.word >0,>1003,>1403,>2480,>3001,>2406,>2800,>3C02
.word >2C09,>6000,>3401,>4C00,>6400,>4860,>4002,>4C0E
.word >5402,>6401,>7000,>7461,>7860,>6141,>68A0,>3942
.word >3D63,>61C0,>49C7,>6412,>70E0,>6548,>7015,>640F
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >5001,>2808,>5822,>342B,>3C0D,>7D80,>7F20,>7FFF
.word >1C01,>842,>2108,>2801,>3C02,>4402,>3DAE,>7C00
.word >712A,>5294,>7FFF
FNDPBLU:
.word 59
.word >0,>E,>E,>D,>12,>11,>A,>10
.word >14,>113D,>D,>B3,>141F,>95,>17,>19
.word >416,>CDA,>201F,>61F,>8BF,>95F,>201F,>3942
.word >3D63,>1559,>49C7,>6412,>1FB,>6548,>7015,>640F
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >98,>2808,>3C2B,>342B,>3C0D,>7D80,>7F20,>7FFF
.word >49,>842,>2108,>8C,>411,>6F,>3DAE,>91A
.word >9BC,>5294,>7FFF
FNDPGRN:
.word 59
.word >0,>1003,>1403,>962,>143,>2406,>E0,>120
.word >D84,>1323,>561,>5C1,>2A2,>160,>D61,>4C0E
.word >641,>2E0,>6E2,>1FE6,>1622,>27C9,>300,>3942
.word >3D63,>43D0,>49C7,>6412,>B63,>6548,>7015,>640F
.word >5000,>140,>180,>200,>7CA0,>2C1,>321,>3E1
.word >E43,>2808,>981,>342B,>3C0D,>7D80,>7F20,>7FFF
.word >E0,>842,>2108,>E0,>104,>220,>3DAE,>B65
.word >27E7,>5294,>7FFF
FNDPPUR:
.word 59
.word >0,>1003,>1403,>3412,>240B,>2406,>1C09,>280D
.word >2C09,>5C1D,>2C0E,>38B2,>5D1E,>4838,>3010,>4C0E
.word >3C15,>4819,>541C,>615F,>5CBC,>553E,>545F,>3942
.word >3D63,>715E,>49C7,>6412,>5CBC,>6548,>7015,>640F
.word >120,>140,>180,>200,>260,>2C1,>321,>3E1
.word >4015,>2808,>4435,>342B,>3C0D,>7D80,>7F20,>7FFF
.word >1407,>842,>2108,>1C0A,>2C0F,>3411,>3DAE,>541F
.word >5DBC,>5294,>7FFF
nup1:
.word 64
.word >0,>0,>842,>1084,>18C6,>2862,>3082,>38A3
.word >39CE,>40C4,>48E4,>4CC4,>5505,>6105,>6D46,>7621
.word >6168,>6547,>6968,>7568,>75AA,>7DA9,>79EC,>722E
.word >7FF3,>66F7,>7FFF,>461,>80,>4A1,>4C1,>8C2
.word >8E2,>D03,>D23,>1966,>2108,>2D4A,>41EF,>318C
.word >313C,>41BC,>4631,>5AD6,>4E3D,>62DE,>7CA0,>7D00
.word >7D80,>7F20,>7FC0,>7A41,>1800,>2800,>4000,>6420
.word >1F,>4C13,>1DF,>29F,>35F,>F,>18,>2C0B
nup2:
.word 64
.word >0,>0,>842,>1084,>18C6,>1422,>1C42,>2463
.word >39CE,>2481,>2CA1,>3081,>38C2,>44C2,>5103,>421
.word >38C2,>3CA1,>40C2,>4CC2,>4D04,>5503,>6D84,>7A28
.word >7FF3,>66F7,>7FFF,>840,>C60,>1060,>1480,>18A0
.word >1CC0,>20E0,>2500,>2D41,>2108,>2D4A,>41EF,>318C
.word >313C,>41BC,>4631,>5AD6,>4E1D,>62DE,>7CA0,>7D00
.word >7D80,>7F20,>7FC0,>7A41,>1800,>2800,>4000,>6420
.word >1F,>4C13,>1DF,>29F,>35F,>F,>18,>2C0B
nup1a:
.word 64
.word >0,>1B,>1D,>5F,>49F,>143D,>1C5D,>247E
.word >259F,>2C9F,>34BF,>389F,>40DF,>4CDF,>591F,>61FC
.word >4D3F,>511F,>553F,>613F,>617F,>697F,>65BF,>5DFF
.word >6BBF,>52BF,>6BBF,>3C,>5B,>7C,>9C,>9D
.word >BD,>DE,>FE,>53F,>CDF,>191F,>2DBF,>1D5F
.word >1CFF,>2D7F,>31FF,>469F,>39FF,>4E9F,>1B,>13
.word >12,>1A,>2C0F,>3811,>4C13,>1B,>17,>3416
.word >1F,>681A,>1DF,>29F,>35F,>F,>18,>380E
nup2a:
.word 64
.word >0,>4C00,>5442,>5C84,>64C6,>7462,>7C82,>7CA3
.word >7DCE,>7CC4,>7CE4,>7CC4,>7D05,>7D05,>7D46,>7E21
.word >7D68,>7D47,>7D68,>7D68,>7DAA,>7DA9,>7DEC,>7E2E
.word >7F33,>7EF7,>7D8C,>5061,>4C80,>50A1,>50C1,>54C2
.word >54E2,>5903,>5923,>6566,>6D08,>794A,>7DEF,>7D8C
.word >7D3C,>7DBC,>7E31,>7ED6,>7E3D,>7EF5,>7CA0,>7D00
.word >7D80,>7F20,>7FC0,>7A41,>4403,>5008,>6407,>782C
.word >7419,>7C14,>7519,>75D9,>7699,>7409,>7412,>7C08
GREYPAL:
.word 64
.word >0,>842,>863,>C63,>C84,>1084,>1085,>10A5
.word >14A5,>14A6,>14C6,>18C6,>18C7,>18E7,>1CE7,>1CE8
.word >1D08,>2108,>2109,>2129,>2529,>252A,>254A,>294A
.word >294B,>296B,>2D6B,>2D6C,>2D8C,>318C,>318D,>31AD
.word >35AD,>35AE,>35CE,>39CE,>39CF,>39EF,>3DEF,>4210
.word >4631,>4A52,>4E73,>4E74,>5294,>56B5,>5AD6,>5EF7
.word >6318,>6739,>6B5A,>6F7B,>0,>C63,>14A5,>2108
.word >2D6B,>3DEF,>4A52,>2D6B,>3DEF,>4A52,>5294,>5AD6
RDBOOM:
.word 64
.word >0,>1000,>1420,>1820,>2040,>2440,>2860,>2C60
.word >3060,>3880,>4440,>4840,>5040,>5840,>6040,>6440
.word >6860,>6C80,>70A0,>7C40,>7D00,>7D40,>7D60,>7DA0
.word >7DC0,>7DE0,>7E00,>7E20,>7E40,>7E60,>7A60,>7EC0
.word >7EE0,>7F40,>7FA0,>7FC2,>7FE4,>7FEA,>7FEC,>7FED
.word >7FEE,>7FEF,>7FF0,>7FF1,>7FF2,>7FF3,>7FF4,>7FF7
.word >7FF8,>7FFA,>7FFD,>7FFF,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
GRNBOOM:
.word 64
.word >0,>80,>4A0,>4C0,>500,>920,>D40,>D60
.word >D80,>11C0,>A20,>A40,>A80,>AC0,>B00,>B20
.word >F40,>1360,>1780,>BE0,>23E0,>2BE0,>2FE0,>37E0
.word >3BE0,>3FE0,>43E0,>47E0,>4BE0,>4FE0,>4FC0,>5BE0
.word >5FE0,>6BE0,>77E0,>7BE2,>7FE4,>7FEA,>7FEC,>7FED
.word >7FEE,>7FEF,>7FF0,>7FF1,>7FF2,>7FF3,>7FF4,>7FF7
.word >7FF8,>7FFA,>7FFD,>7FFF,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0
PLLT:
.word 62
.word >0,>1C44,>2845,>2C47,>3047,>3448,>3849,>3C4A
.word >3C6A,>404B,>406B,>444B,>446C,>484C,>486D,>4C4D
.word >4C6E,>504E,>506E,>546F,>50AF,>54B0,>5850,>5890
.word >5C71,>5CB1,>5CD2,>6051,>6452,>6C53,>60D3,>60F3
.word >68B4,>64F4,>7075,>7496,>70D6,>7CD8,>7CF8,>6915
.word >6D36,>7137,>7158,>7959,>799B,>1,>401,>801
.word >C01,>1401,>1801,>1C01,>2000,>2085,>2801,>3000
.word >4000,>3947,>49CB,>6604,>668F,>7B94
SOLDB:
.word 64
.word >0,>0,>842,>860,>C63,>C80,>C81,>10A1
.word >1082,>10A2,>14C2,>14C3,>18C2,>18C3,>18E2,>18E3
.word >1CE3,>1D03,>1084,>18E4,>1D04,>2124,>14A5,>1D05
.word >2125,>18C6,>2126,>1CE7,>2108,>C2F,>1859,>2545
.word >2546,>2966,>2547,>2967,>2C62,>38A4,>3CA4,>3CE4
.word >2D87,>40C4,>44E5,>44E6,>4906,>4D27,>5127,>2968
.word >2D68,>2D88,>2D89,>31A9,>35C9,>5568,>294A,>31AA
.word >35AA,>318C,>35CA,>35CB,>4DAB,>5DCC,>4E0E,>6293
MAPP:
.word 64
.word >0,>914,>7A84,>3481,>4481,>4CC2,>5903,>7EC0
.word >7F6A,>7FD2,>6A90,>1155,>1998,>2E3D,>7FE0,>7300
.word >6680,>5DA0,>0,>7F76,>7713,>6AB0,>5E6D,>520A
.word >4186,>2CE1,>2080,>842,>1084,>18C6,>2108,>294A
.word >318C,>3DEF,>4A52,>56B5,>6739,>7FFF,>1283,>2345
.word >1FE4,>3842,>4884,>58C6,>5E21,>59A2,>6666,>1104
.word >1164,>11E4,>6D44,>30C1,>4103,>7AC8,>772B,>734D
.word >79A7,>7242,>3E0,>2C0,>240,>1E0,>280,>360
DOMEP:
.word 64
.word >0,>820,>C20,>1420,>1C20,>2421,>2C23,>3425
.word >3C27,>4429,>4C2B,>542D,>5C2F,>6431,>6C33,>6C35
.word >783B,>7C5D,>7D5F,>7F20,>6560,>48A1,>7C00,>6400
.word >1800,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6
.word >18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6
.word >18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6
.word >18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6
.word >18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>18C6,>7FFF
DISHPAL:
.word 64
.word >0,>1861,>23,>865,>10A7,>18E9,>1D0A,>296D
.word >31AF,>39F1,>4233,>4A75,>52B7,>5AF9,>633B,>6B7D
.word >14C8,>865,>0,>421,>842,>C63,>1084,>14A5
.word >18C6,>1CE7,>2108,>2529,>294A,>2D6B,>318C,>35AD
.word >39CE,>3DEF,>4210,>4631,>4A52,>4E73,>5294,>56B5
.word >5AD6,>5EF7,>6318,>6B5A,>7BDE,>1F,>7C00,>3E0
.word >7FE0,>120,>2080,>24A1,>28C0,>0,>8000,>0
.word >0,>0,>0,>0,>0,>7C00,>7FE0,>7FFF
TNKPAL:
.word 64
.word >0,>420,>C40,>1460,>1C80,>20A0,>28C0,>30E0
.word >3500,>3D20,>4540,>4982,>55C4,>5E06,>5E48,>6E8A
.word >1040,>1860,>24A0,>30C0,>421,>C63,>14A5,>1CE7
.word >2529,>2D6B,>35AD,>3DEF,>4E73,>6739,>34A3,>6105
.word >69A7,>7A4C,>7A4C,>500,>1545,>1DA7,>2123,>2649
.word >430,>7FE0,>7EE0,>7E40,>7D80,>7100,>7FFF,>1C05
.word >2807,>3009,>3409,>3C0B,>400C,>440D,>4C0E,>540F
.word >6412,>7015,>7C16,>70D6,>6D97,>5294,>3DAE,>7FFF

2500
BACKUP/IMGTBL.ASM Normal file

File diff suppressed because it is too large Load Diff

450
BACKUP/KEEPATT.ASM Normal file
View File

@ -0,0 +1,450 @@
;THIS STUFF WAS TAKEN OUT OF ATTRACT.ASM
;
;HSTDTAB:
; JSRP WNDWON
; CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED
; MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0
; CLR A1
; NOT A1
; CALLA KILOBJ
;
; MOVI CHAMPS,A0
; MOVE A0,@BAKMODS,L
; CALLA BGND_UD1
;; MOVI CHAMPS,A0
; MOVE A0,@BAKMODS,L
; CALLA BGND_UD1
; MOVI CHAMPS,A0
; MOVE A0,@BAKMODS,L
; CALLA BGND_UD1
; MOVI HSC,A0
; CALLA BLAKOUT
; MOVI NUARENAP,A0
; CALLA BLAKOUT
;
; MOVI SCRNEND,A0 ;[256,405],A0
; MOVE A0,@SCRNLR,L
;
; MOVI PAL4TAB,A0
; MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK
; CALLA FADEIN
;
; SLEEP 20
;
; MOVI HSC,A8 ;PAL NAME
; MOVI PAL1,A9 ;RAM AREA
; MOVI [50,55],A10 ;BEGIN/END COLOR #
; MOVK 5,A11 ;RATE IN TICKS
; CREATE CYCPID,COLCYC ;COLOR CYCLER ON
;
; MOVI HSC,A8 ;PAL NAME
; MOVI PAL2,A9 ;FIRST COLOR TO CYCLE
; MOVI [55,58],A10 ;LAST COLOR TO CYCLE
; MOVK 9,A11 ;RATE
; CREATE CYCPID,COLCYC
;
;;DISPLAY SCORES HERE!
;
; CALLA COLRPRC
; CLR A0
; MOVE A0,@GAMERASE,W
; SLEEP 2
; CALLA GETHIGH
;
; SLEEP 5*60
; MOVE @KEEPON,A0
; JRZ TY6
; SLEEP 14*60
; CLR A0
; MOVB A0,@CANT
; MOVE A0,@KEEPON
; MOVK 3,A11 ;FADE RATE
; CREATE 0,FADE_DOWN
; SLEEP 40
; SOUND1 MUSICOFF
; MOVK 3,A11 ;FADE RATE
; CREATE 0,FADE_UP
;
;
;TY6 MOVK 1,A0
; MOVE A0,@GAMERASE,W
;
; MOVI CYCPID,A0
; CLR A1
; NOT A1
; CALLA KILALL
;
; MOVI PAL4TAB,A0
; MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK
; CALLA FADEOUT
;
; SLEEP 30
; CALLA CLR_SCRN
; RETP
;
;OFFERT:
; JSRP WNDWON
; CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED
;
; MOVI OFFER,A0
; MOVE A0,@BAKMODS,L
; CALLA BGND_UD1
;
; MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0
; CLR A1
; NOT A1
; CALLA KILOBJ
;
; MOVI HSC,A0
; CALLA BLAKOUT
; MOVI DUXPAL,A0
; CALLA BLAKOUT
; MOVI smlg,A0
; CALLA BLAKOUT
;
; MOVI SCRNEND,A0 ;[256,405],A0
; MOVE A0,@SCRNLR,L
;
; MOVI PAL5TAB,A0
; MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK
; CALLA FADEIN
;
; MOVI DUXPAL,A8 ;PAL NAME
; MOVI PAL1,A9 ;RAM AREA
; MOVI [1,6],A10 ;BEGIN/END COLOR #
; MOVK 8,A11 ;RATE IN TICKS
; CREATE CYCPID,COLCYC ;COLOR CYCLER ON
;
; SLEEP 8*60
;
; MOVI CYCPID,A0
; CLR A1
; NOT A1
; CALLA KILALL
;
; MOVI PAL5TAB,A0
; MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK
; CALLA FADEOUT
;
; SLEEP 35
; CALLA CLR_SCRN
; MOVB @CANT,A0
; JREQ ACJAZ
;ADPAZ SLEEP 1
; JRUC ADPAZ
;ACJAZ RETP
;PRINTIT:
; JSRP SNKNOW
; CLR A0
; MOVI 03E3EH,A6 ;COLOR
; JSRP STRCNRMO ;PRINT OUT SHIT
; JSRP EXPSCRN
; SLEEP 60*5 ;5 SECONDS
; MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
; CLR A1
; NOT A1
; CALLA KILOBJ
RETP
;
;SY .LONG SY1,S2,S2,S3,S4,S2,S5,S6,S2,S8,S9,S10,S11,S2,S13,S14,S15,S16,S17
; .LONG S2,S2,S20,S21,S22,S23,S2,S24,S2,S24A,S2,S25,0
;SY2 .LONG FSY1,S2,FS3,FS4,S2,FS5,S2,FS5A,S2,FS6,FS8,S2,FS9,FS10,FS11,FS13,FS14,FS15,FS15A,FS16,FS17
; .LONG S2,FS21,FS22,S2,FS23,S2,FS24,S2,S25
; .LONG S2,S2,NM1,NM2,NM3,NM4,NM5,NM5A,NM6,NM7,NM7A,NM8,NM9,NM10,NM11
; .LONG NM12,NM12A,NM12B,NM12C,NM12E,NM12D,NM12F,NM12G,S2,S2,S2,NM13,S2,NM14,0
;
;SY1
; .STRING "The year is 1999"
; .BYTE 0
; .EVEN
;S2 .STRING " "
; .BYTE 0
; .EVEN
;;
;; ATTPLAY - ATTRACT MODE GAME PLAY
;; NOTE: CALL WITH JSRP
;;
;NATTWAVS .SET 3 ;# OF ATTRACT MODE WAVES
;
;ATTPLAY:
; MOVK 1,A0
; MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS OFF
; MOVE @AWAVE,A0,W
; INC A0
; CMPI 2,A0
; JRNE NOMUT
; MOVE A0,@AWAVE
; MOVI 10,A0
; JRUC MUT0
;NOMUT CMPI NATTWAVS,A0
; JRLS ATTWGO
;ATTWRST:
; MOVK 1,A0 ;RESET TO WAVE 1
;ATTWGO:
; MOVE A0,@AWAVE,W
;MUT0
; MOVE A0,@WAVE,W
; MOVK 1,A0
; MOVE A0,@PLAYPAGE,W ;MARK IT AS THE PLAY PAGE
;; MOVI DLSTZ,A1
;; CALLA UNGET
;; MOVI DLST,A1
;; CALLA UNGET
; CALLA CLNPAL
; JSRP AMODWAVE ;START WAVE #1-3
; MOVI P1DATA,A11 ;MARK PLAYER 1 FOR DEMO
;; MOVE @AWAVE,A9,W
;; DEC A9
;; SLL 5,A9
;; ADDI AMOVETAB,A9 ;SCRIPTED PLAYER MOVEMENT
; ;BASED ON WAVE WE ARE ON
;; MOVE *A9,A9,L ;GET THIS WAVES MOVEMENT TABLE
; MOVI AWAV1MOV,A9
;ATTNEXT:
; MOVE *A9+,A0,W ;GET SOME JOYSTICK BITS
; CMPI 0FFFFFFFFH,A0
; JREQ ATTWXXX
; MOVE A0,@P1CTRL,W
; MOVE *A9+,A10,W
; JSRP ATTSLP ;PROCESS SLEEP TIME
; JRUC ATTNEXT
;ATTWXXX:
; CLR A1
; NOT A1
; MOVI PCPID,A0
; CALLA KILALL
;
; JSRP WNDWON
;
; MOVI ICONPID,A0
; CLR A1
; NOT A1
; CALLA KILALL
;
; CALLA CLR_ALL
;
;;GLITCH HERE?
; SLEEP 2
;
;
; CLR A0
; MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON
; CALLA DELWNDW
; RETP
;;
;; SCRIPTPLAY - PLAYER MOVEMENT FOR IN/OUT OF WAVES
;; PARMS
;; SCRIPT NUMBER IN FROMDR
;; SENT WITH EITHER P1CTRL OR P2CTRL IN A8
;;IF A9=1 THEN PLY1 START, 2=PLYR2 START 0=REG MOVEMENT PLAYER TABLE
;SCRIPTPLAY:
; MOVE A9,A9
; JREQ REG
;;PLAYERS ABOUT TO BEGIN A GAME
; CMPI 1,A9
; JRNE SX
; MOVB @KP_LS,A0
; CMPI 0FFFFFFFFH,A0
; JREQ ZA
; MOVI 1,A0
; MOVI 10,A1
; CALLA SET_GATE_2
;;TURN ON RINGS AROUND THIS PLAYER
;;MAKE SURE IMAGE IS STARTED BEFORE THIS
;ZA
; CALLR C_SHO2
;; MOVI 1,A9
;;ALREADY A 9!
; MOVI 190,A10 ;TIME RINGS ARE ON
; CREATE RNGPID,RINGS
; MOVI LDRS,A9
; MOVB @BOSSON,A0
; JRZ NEXTMOV
; MOVI LDRS2,A9
; JRUC NEXTMOV
;SX
; MOVB @KP_RS,A0
; CMPI 0FFFFFFFFH,A0
; JREQ ZA1
; MOVI 2,A0
; MOVI 10,A1
; CALLA SET_GATE_2
;ZA1
; CALLR C_SHO1
;; MOVI 2,A9
;;ALREADY A9=2
; MOVI 190,A10 ;TIME RINGS ARE ON
; CREATE RNGPID,RINGS
; MOVI RDRS,A9
; MOVB @BOSSON,A0
; JRZ NEXTMOV
; MOVI RDRS2,A9
; JRUC NEXTMOV
;C_SHO1 CLR A0
; MOVE @PLYRPRCS+32,A1,L
; JRZ RETOUT
; MOVE *A1,A1,L
; MOVE *A1(LEG_PRC),A1,L
; MOVE A0,*A1(SHOECNT)
; RETS
;C_SHO2
; CLR A0
; MOVE @PLYRPRCS,A1,L
; JRZ RETOUT
; MOVE *A1,A1,L
; MOVE *A1(LEG_PRC),A1,L
; MOVE A0,*A1(SHOECNT)
;RETOUT RETS
;REG
; CALLR C_SHO1
; CALLR C_SHO2
; MOVE @FROMDR,A0,W
; JRNZ REG3
;;TV SET RUN IN
; CMPI P1CTRL,A8
; JRZ REG4
; MOVI TVMOV2,A9
; JRUC NEXTMOV
;REG4 MOVI TVMOV,A9
; JRUC NEXTMOV
;REG3 SLL 5,A0
; ADDI GMOVTAB,A0 ;SCRIPTED PLAYER MOVEMENT
; MOVE @CIRCUIT,A9
; CMPI 2,A9
; JRNZ REGCONT
; MOVE @WAVE,A9
; CMPI 7,A9
; JRNZ REGCONT
; MOVI SNAKELST,A9
; JRUC NEXTMOV
;REGCONT MOVE *A0,A9,L ;GET MOVEMENT TABLE DATA
;NEXTMOV:
; MOVE @HALT,A0
; JRZ NXM
; SLEEP 1
; JRUC NEXTMOV
;NXM
; MOVE *A9+,A0,W ;GET SOME JOYSTICK BITS
; CMPI 0FFFFFFFFH,A0
; JREQ MOVEXIT
; MOVE A0,*A8,W ;P1/P2CTRL
; MOVE *A9+,A10,W
; JSRP ATTSLP ;PROCESS SLEEP TIME
; JRUC NEXTMOV
;MOVEXIT:
; DIE
;;
;; ATTSLP - PROCESS ATTRACT MODE PLAYER SLEEP
;; A10 = # TICKS TO SLEEP
;; RETURNS:
;; CARRY CLEAR = SLEEP COMPLETED
;; CARRY SET = STILL SNOZZIN'
;;
;; NOTE: CALL WITH JSRP
;;
;ATTSLP:
; PUSHP A10
;ATTSLPL:
; SLEEP 1
; SETC
; DSJS A10,ATTSLPL ;PROCESS SLEEP LOOP
; CLRC
; PULLP A10
; RETP
;;
;; AMODWAVE - INITIALIZE AN ATTRACT MODE WAVE:
;; CURRENT ATTRACT WAVE MUST BE INDICATED IN VARIABLE, AWAVE.
;; NOTE: CALL AS JSRP!
;;
;AMODWAVE:
; CALLA INIT_DEMO
; RETP
;
;AMOVETAB:
; .LONG AWAV1MOV,AWAV2MOV,AWAV3MOV,AWAV4MOV,AWAV5MOV,AWAV6MOV
;GMOVTAB:
; .LONG TVMOV,LFTDOOR,RGTDOOR,TOPDOOR,BOTDOOR
;
;ATTRACT MODE PLAYER MOVEMENT TABLES
; .WORD STICK_BITS,SLEEP_TIME
; .
; .
; .WORD 0FFFFH
;
;AWAV1MOV:
;PLACE SCRIPT FOR WAVE 2 HERE!
; .WORD 0,60*4
; .WORD PFRYTE|PUP,20H
; .WORD PFRYTE|PDOWN,40H
; .WORD PFRYTE,20H
; .WORD 0,5H
; .WORD PFRYTE,20H
; .WORD PLEFT,20H
; .WORD PFRYTE|PUP,50H
; .WORD PFRYTE|PDOWN,20H
; .WORD PFRYTE|PUP,20H
; .WORD PFRYTE|PDOWN,40H
; .WORD PUP,26H
; .WORD 0,20H
; .WORD PRYTE,25H
; .WORD PUP,10H
; .WORD PRYTE|PFDOWN,55H
; .WORD PFUP|PDOWN,20H
; .WORD PFRYTE|PLEFT,20H
; .WORD PFRYTE|PUP,20H
; .WORD PFRYTE|PDOWN,30H
; .WORD PFRYTE,20H
; .WORD PLEFT,20H
; .WORD PFDOWN|PRYTE,15H
; .WORD PUP,26H
; .WORD PRYTE|PFDOWN,22H
; .WORD PFUP|PDOWN,20H
;; .WORD 0FFFFH
;
; .WORD PFRYTE|PLEFT,30H
; .WORD PFRYTE|PUP,20H
; .WORD PFRYTE|PDOWN,35H
; .WORD PFLEFT|PUP,20H
; .WORD PFLEFT|PDOWN,35H
; .WORD PFRYTE|PDOWN,30H
; .WORD PFRYTE,20H
; .WORD PRYTE|PUP|PFDOWN,30H
; .WORD PLEFT,20H
; .WORD PFDOWN|PRYTE,15H
; .WORD PUP,26H
; .WORD PRYTE|PFDOWN,22H
; .WORD PFUP|PDOWN,20H
; .WORD PFRYTE|PLEFT,30H
; .WORD PFRYTE|PUP,20H
; .WORD PFRYTE|PDOWN,35H
; .WORD PFLEFT|PUP,20H
; .WORD PFLEFT|PDOWN,35H
; .WORD 0FFFFH
;
;SNAKELST
;;EXIT FROM RIGHT DOOR WITH SNAKES
; .WORD PRYTE,06FH
; .WORD PDOWN|PRYTE,2H
; .WORD PDOWN,30H
; .WORD PDOWN|PRYTE,2H
; .WORD PRYTE,0FAH
; .WORD 0,1H
; .WORD 0FFFFH
;
;TVMOV:
;;TELEVISION INTRO SCREEN PLAYER MOVEMENT/ANIMATION SCRIPT
; .WORD PUP,2
; .WORD PUP|PRYTE,3H
; .WORD PRYTE,044H
; .WORD PDOWN|PRYTE,2H
; .WORD PDOWN,30H
; .WORD PDOWN|PRYTE,2H
; .WORD PRYTE,014AH
; .WORD 0,1H
; .WORD 0FFFFH


1208
BACKUP/LAYER.ASM Normal file

File diff suppressed because it is too large Load Diff

376
BACKUP/LINK.EQU Normal file
View File

@ -0,0 +1,376 @@
*
.INCLUDE "AUDIT.EQU" ;AUDIT NAMES!
*
CHUTES EQU 4 ;MAXIMUM COIN CHUTES IN GAME.
*
*MISC BUTTON EQUATES
.IF YUNIT
UP_BITS EQU 1111H
DOWN_BITS EQU 2222H
BUTTONS EQU 640000H
.ELSE
UP_BITS EQU 101H
DOWN_BITS EQU 202H
BUTTONS EQU 0F0F0H
.ENDIF
*
*****************************
***************************** GET OFFICIAL PID FROM GEORGE ******************
MENU_PID EQU 0AC1H ;GET_MENU SLAVE
MDUN_PID EQU 0AC2H ;MENU SLAVE CHANGES TO THIS WHEN DONE
OPMES_PID EQU 0AC3H ;OPERATOR ENTER INITIALS
***************************** GET OFFICIAL PID FROM GEORGE ******************
*****************************
LONG_SIZE EQU 32
WORD_SIZE EQU 16
BYTE_SIZE EQU 8
C_LONG_SIZE EQU 64
C_WORD_SIZE EQU 32
C_BYTE_SIZE EQU 16
BYTE_MASK EQU 0FFH
WORD_MASK EQU 0FFFFH
SX_MASK EQU 0FFFFH
SY_MASK EQU 0FFFF0000H
**************************************************************************
* *
* ASCII STUFF *
* *
**************************************************************************
SPACE EQU 20H
EX_PT EQU 21H
LET_0 EQU 30H
LET_A EQU 41H
LET_Z EQU 5AH
UNDERSCORE EQU 5FH
FONT_SPACE EQU 7EH
FONT_RUB EQU FONT_SPACE+1
FONT_END EQU FONT_RUB+1
FONT_RQUOTE EQU FONT_END+1
FONT_EPOUND equ FONT_RQUOTE+1
FONT_CR equ FONT_EPOUND+1
ASCII_COMMA EQU 2CH
RIGHT_PAREN EQU 29H
ASCII_DQ EQU 22H
**************************************************************************
* *
* SCREEN STUFF *
* *
**************************************************************************
*
SCREEN_X_UNIT EQU 8 ;THESE ARE FOR PACKED LINEAR ADDRESS
SCREEN_Y_UNIT EQU 1000H ;FORMAT
*
STRUCT_X_UNIT EQU 1000H ;X UNIT IN SPR DATA STRUCTURE
STRUCT_Y_UNIT EQU 1000H ;Y UNIT IN SPR DATA STRUCTURE
*
TABLE_UNIT EQU 10000H ;16 BIT FRACTION IN HSTD COORDINATES
*
EVEN_X_MASK EQU 0FF8H ;X MASK TO EVEN PIXEL
X_MASK EQU 0FF8H ;MASK TO HOLD JUST X
Y_MASK EQU 1FF000H ;MASK TO HOLD JUST Y
*
Y_MAX EQU 256
SCREEN_PITCH EQU 400
**************************************************************************
* *
* COLOR STUFF *
* *
**************************************************************************
ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223]
ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223]
ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223]
ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223]
ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223]
ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223]
ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223]
ROBO_LF EQU 03E3EH
ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223]
ROBO_DECAY EQU 03F3FH
ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223]
ROBO_LASER EQU 03E3EH
ROBO_LASER2 EQU 03F3FH
ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223]
ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223]
ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR
ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE
ROBO_BLACK EQU 1414H ;BLACK AS COAL
LOG_PAL_SIZE EQU 12 ;SHIFT 12 BITS TO TURN NUMBER INTO OFFSET
* ;IN PALETTE MEMORY
*
MAX_PAL_MASK EQU 3FH ;THIS IS MASK FOR NUMBER OF PALETTES.
*
*
ALL_BLUE equ 1fh
ALL_GREEN equ 3e0h
ALL_RED equ 7c00h
ALL_PURPLE EQU ALL_RED+ALL_BLUE
LIGHT_PURPLE EQU 701CH
*
ONE_BLUE EQU 1
ONE_GREEN EQU 20H
ONE_RED EQU 400H
*
THIRD_GREEN EQU 140H ;1/3TH GREEN ON
THIRD_RED EQU 2800H ;1/3 RED ON
**************************************************************************
* *
* AUDIT STRUCTURE *
* *
**************************************************************************
AUD_DATA EQU 0 ;THE COUNTER IS 4 BYTES STARTING AT ZERO
AUD_CKSUM EQU AUD_DATA+(4*C_BYTE_SIZE) ;CHECKSUM = 2 BYTES
AUD_SIZE EQU AUD_CKSUM+C_WORD_SIZE
AUD_BYTES_TO_CHECK EQU (AUD_SIZE/C_BYTE_SIZE)-2 ;# TO ADD FOR CHECKSUM
N_AUDITS EQU 45
.IF (LAST_AUDIT+1)>N_AUDITS
XXX NOT ENOUGH RAM ALLOCATED FOR AUDITS!
.ENDIF
**************************************************************************
* *
* ADJUSTMENTS *
* *
**************************************************************************
ADJ_SIZE EQU C_LONG_SIZE
N_ADJUSTS EQU 24 ;# OF ADJUSTS
.IF (LAST_ADJUST+1)>N_ADJUSTS
XXX NOT ENOUGH RAM ALLOCATED FOR ADJUSTMENTS!
.ENDIF
**************************************************************************
* *
* *
* CMOS STUFF FOR HSTD..........MOVE THIS TO SPECIAL EQUATE FILE *
* SOME DAY *
* *
* *
**************************************************************************
*
* High Score table (CMOS) entry data structure
*
NUM_INITS EQU 3 ;INITIALS IN EACH ENTRY..THIS MUST BE ODD
*
HS_SCORE EQU 0 ;LONG WORD.....8 DIGIT SCORE
HS_INITS EQU HS_SCORE+C_LONG_SIZE ;BYTE FOR FIRST INITIAL
HS_CKBYTE EQU HS_INITS+(NUM_INITS*C_BYTE_SIZE) ;BYTE FOR CHECKSUM
HS_SIZE EQU HS_CKBYTE+C_BYTE_SIZE ;SIZE OF STRUCTURE
HS_BYTES_TO_CHECK EQU (HS_SIZE/C_BYTE_SIZE)-1 ;# TO ADD FOR CHECKSUM
HS_SIZE_IN_WORDS EQU HS_SIZE/C_WORD_SIZE ;SIZE OF ENTRY IN WORDS
HS_SIZE_IN_BYTES EQU HS_SIZE/C_BYTE_SIZE ;SIZE OF ENTRY IN BYTES
HS_ROM_SIZE equ HS_SIZE/2 ;address size of rom entry
*
**************************************************************************
* *
* A HIGH SCORE TABLE IS DEFINED IN ROM BY THE FOLLOWING *
* STRUCTURE (THERE ARE AT LEAST 2 TABLES....ALL TIME *
* AND "TODAYS") *
* *
**************************************************************************
TB_POINTER EQU 0 ;LONG-POINTER TO BEGINNING OF TABLE
TB_COUNT EQU TB_POINTER+LONG_SIZE ;WORD....# IN THE TABLE.
TB_VISIBLE EQU TB_COUNT+WORD_SIZE ;WORD....NUMBER DISPLAYED
TB_PAGE_BITS EQU TB_VISIBLE+WORD_SIZE ;WORD....STATUS WORD FOR CMOS PAGE
TB_FACTORY EQU TB_PAGE_BITS+WORD_SIZE ;LONG....ROM STARTUP TABLE
TB_ERROR_COUNT EQU TB_FACTORY+LONG_SIZE ;WORD....NUM ERRORS TO RE-INIT
*
CMOS EQU 1400000H ;BASE OF CMOS
WPCMOS EQU 1404000H ;WRITE PROTECTED CMOS
WP_READ EQU 1C00010H ;PLACE TO READ WRITE PROTECT STATUS
SND_TALK EQU 1C00020H ;SOUND BOARD TALK BACK.
WP_BIT EQU 800H ;BIT WHERE WRITE ENABLE LIVES 0=NO WRITES
CMOS_PAGE_SELECT_BITS EQU 0C0H ;BITS 6 AND 7 OF SYSCTRL SELECT CMOS PAGE
CMOS_PAGE_SELECT_UNIT EQU 040H ;4 PAGES USE MULTIPLES OF THIS
*
**************************************************************************
* *
* CMOS ALLOCATION *
* *
**************************************************************************
*
* 4 PAGES OF 2K
*
* EACH PAGE....LOW 1K = READ/WRITE
* HIGH 1K = WRITE PROTECTED Z-UNIT ONLY
* PROTECTION ON ALL 2K Y-UNIT
*
* PAGE 0 LOW HALF = HSTD TODAY
*
TODAYS_ORIGIN EQU CMOS
TODAYS_SELECT EQU CMOS_PAGE_SELECT_UNIT*0
TODAYS_VISIBLE EQU 10
*
* PAGE 1 LOW HALF = AUDITS
* HIGH HALF = ADJUSTMENTS
AUDIT_SELECT EQU CMOS_PAGE_SELECT_UNIT*1
HSR_SELECT EQU AUDIT_SELECT ;HIGH SCORE RESET COUNTER
COIN_SELECT EQU AUDIT_SELECT ;COINS AND CREDITS
*
ADJUST_SELECT EQU CMOS_PAGE_SELECT_UNIT*1
*
*
* PAGE 2 LOW HALF = HSTD ALL TIME
*
ALL_TIME_ORIGIN EQU CMOS
ALL_TIME_SELECT EQU CMOS_PAGE_SELECT_UNIT*2
ALL_TIME_VISIBLE EQU 10
*
* PAGE 3 DUMPS
*
DUMP_SELECT EQU CMOS_PAGE_SELECT_UNIT*3
DUMP_ORG EQU CMOS
DUMP_PTR EQU DUMP_ORG ;WORD....NUMBER OF ENTRIES!
DUMP_DATA EQU DUMP_PTR+C_WORD_SIZE ;DUMPS GO HERE!
*
* AUDIT PAGE AUDIT DATA AND CREDITS
*
AUDITORG EQU CMOS ;AUDITS LIVE HERE
CREDITS EQU AUDITORG+(N_AUDITS*AUD_SIZE) ;BYTE FOR CREDITS
CUNITS EQU CREDITS+C_BYTE_SIZE ;WORD
BUNITS EQU CUNITS+C_WORD_SIZE ;WORD
MINUNITS EQU BUNITS+C_WORD_SIZE ;WORD
COIN_CKSUM EQU MINUNITS+C_WORD_SIZE ;BYTE
HSR_C EQU COIN_CKSUM+C_BYTE_SIZE ;LONG = HIGH SCORE RESET COUNTER
*
* NEXT TWO ARE ASSUMED TO BE BACK TO BACK
*
HRESET_COUNTER EQU HSR_C+C_LONG_SIZE ;LONG = HIGH SCORE RESET COUNTER
HRESET_VERIFY EQU HRESET_COUNTER+C_LONG_SIZE ;LONG = 2ND COPY INVERTED.
COIN_CKSUM_START EQU CREDITS
COIN_CKSUM_SIZE EQU COIN_CKSUM-COIN_CKSUM_START ;SIZE OF REGION TO CHECK
COIN_CKSUM_BYTES EQU COIN_CKSUM_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES TO ADD
CMESS_CHARS EQU 25 ;25 CHARS/LINE OF CUSTOM MESSAGE
CMESS_LINES EQU 3 ;3 LINES
CMESS_LINE_SIZE EQU CMESS_CHARS*C_BYTE_SIZE
CMESS_SIZE EQU CMESS_LINES*CMESS_LINE_SIZE
VALID_VALUE EQU 0EABCH ;STORED AT "VALID_CUSTOM" IF OK!
NAME_REV_SIZE EQU 30 ;NAME AND REV DATA
ADJUSTORG EQU WPCMOS ;FIRST ADJUSTMENT HERE
CUSTOM_MESSAGE EQU ADJUSTORG+(N_ADJUSTS*ADJ_SIZE)
VALID_CUSTOM EQU CUSTOM_MESSAGE+CMESS_SIZE ;WORD = EABC IF OK.
END_CK_REGION EQU VALID_CUSTOM+C_WORD_SIZE
ADJ_AREA_SIZE EQU END_CK_REGION-ADJUSTORG ;ADJUSTS+CUSTOM MESSAGE
ADJ_CKSUM EQU END_CK_REGION ;WORD CHECK FOR ADJUSTS
ADJ_BYTES_TO_CHECK EQU ADJ_AREA_SIZE/C_BYTE_SIZE ;NUMBER OF BYTES IN CHECKSUM.
NAME_REV EQU ADJ_CKSUM+C_WORD_SIZE
END_ADJ EQU NAME_REV+(NAME_REV_SIZE*C_BYTE_SIZE)
*
PSYCHO_BOX_NUMBER EQU ALL_TIME_VISIBLE-3 ;ON THE WAY TO 17 IF NO BOXES IS TIME FOR BACKGROUND
PSYCHO_FRACTION EQU 11 ;NUMBER OF SCROLLS BETWEEN NUMBERS FOR BACKGROUND
**************************************************************************
* *
* ENTER YOUR INITIALS PROCESS OFFSETS *
* *
**************************************************************************
*
* Y COORDINATE FOR ENTER YOUR INITIALS BLOCK:
*
;PLYR_Y EQU 308*TABLE_UNIT
;OP_Y EQU 307*TABLE_UNIT ;THIS IS FLAG TO INDICATE OPERATOR!
;*
;BUTTON_BITS EQU 0F0H ;4 "FIRE" BUTTONS
;*
;ENT_X_COR EQU PDATA ;LONG-X COORDINATE OF UPPER LEFT
;ENT_Y_COR EQU ENT_X_COR+LONG_SIZE ;LONG-Y COORDINATE OF UPPER LEFT
;ENT_INIT_SIZE EQU ENT_Y_COR+LONG_SIZE ;WORD-DISTANCE BETWEEN INITIALS
;ENT_COUNT EQU ENT_INIT_SIZE+WORD_SIZE ;WORD-NUMBER TO GET
;ENT_COUNTDOWN EQU ENT_COUNT+WORD_SIZE ;WORD-NUMBER LEFT TO GET
;ENT_CONST EQU ENT_COUNTDOWN+WORD_SIZE ;WORD-CONSTANT FOR COLOR
;ENT_FONT EQU ENT_CONST+WORD_SIZE ;LONG CHARACTER FONT SET
;ENT_STICK EQU ENT_FONT+LONG_SIZE ;WORD SHIFT COUNT FOR JOYSTICK
;ENT_STRUCT_END EQU ENT_STICK+WORD_SIZE ;END OF PARAMETER AREA
;*
;ENT_STRUCT_SIZE EQU ENT_STRUCT_END-PDATA ;SIZE OF STRUCTURE
;ENT_STRUCT_IN_WORDS EQU ENT_STRUCT_SIZE/WORD_SIZE
;*
;ENT_OLIST EQU ENT_STRUCT_END ;LONG.....MY OBJECTS
;ENT_INIT_PTR EQU ENT_OLIST+LONG_SIZE ;LONG-PLACE TO PUT NEXT INITIAL
;ENT_FROB_OBJ EQU ENT_INIT_PTR+LONG_SIZE ;LONG-OBJECT OF FROB LETTER
;ENT_FROB_ASCII EQU ENT_FROB_OBJ+LONG_SIZE ;WORD-ASCII FOR WHERE FROB IS
;ENT_HAND_OBJ EQU ENT_FROB_ASCII+WORD_SIZE ;LONG-PART 2 OF HAND
;ENT_SPRAY_PROC EQU ENT_HAND_OBJ+LONG_SIZE ;LONG-OUR SPRAYER PROCESS
;ENT_LAST_BUTTON EQU ENT_SPRAY_PROC+LONG_SIZE ;WORD-IMAGE OF LAST BUTTON
;ENT_Y_OFFSET EQU ENT_LAST_BUTTON+WORD_SIZE ;LONG-Y-OFFSET FOR HAND ANIMATION
;ENT_ANI_TIMER EQU ENT_Y_OFFSET+LONG_SIZE ;WORD - ANIMATION TIMER
;ENT_PRESSED EQU ENT_ANI_TIMER+WORD_SIZE ;WORD - BIT OF BUTTON HE'S HOLDING
;ENT_TIMEOUT EQU ENT_PRESSED+WORD_SIZE ;WORD - PASSED TO US AT TIMEOUT
;ENT_DATA EQU ENT_TIMEOUT+WORD_SIZE ;LONG - POINTER TO ROM DATA
*
*
* THE FOLLOWING VARIABLES ARE DEFINED AT THE
* END OF THE ROM IMAGE FOR THE 2 ROUTINES. THESE
* ARE NOT COPIED INTO THE PROCESS AREA.
*
;LET_PID EQU ENT_STRUCT_END-PDATA ;WORD-THIS IS IN ROM STRUCTURE
;* ;BUT *NOT* STORED IN PROCESS
;LET_HAND_PTR EQU LET_PID+WORD_SIZE ;LONG-POINTER TO STFOBJ FOR HAND
;LET_SCRIPT EQU LET_HAND_PTR+LONG_SIZE ;LONG - SPRAY SCRIPT FOR SETUP
;LET_ERASE EQU LET_SCRIPT+LONG_SIZE ;LONG - SCRIPT TO SET ERASE BRUSH
;LET_WIDTH EQU LET_ERASE+LONG_SIZE ;LONG - X DISTANCE FOR EACH SPRAY
;LET_MESS EQU LET_WIDTH+LONG_SIZE ;LONG - MESSAGE STRING FOR PLAYER
*
* FOR COIN PAGE MESSAGES.....WE HAVE UP TO 3 LINES ABOVE
* THE CREDITS MESSAGE.
*
CP_13 EQU 118-35 ;LINE 1 OF 3
CP_23 EQU 135-35 ;LINE 2 OF 3
CP_33 EQU 151-35 ;LINE 3 OF 3
CP_DELTA3 EQU CP_23-CP_13 ;AMOUNT TO STEP FROM LINE TO LINE
CP_12 EQU 130-35 ;LINE 1 OF 2
CP_22 EQU 146-30 ;LINE 2 OF 2
CP_11 EQU 139-35 ;SINGLE HELP LINE
CP_CX EQU 200 ;CENTER X FOR CREDITS SCREEN STUFF!
**************************************************************************
* *
* MESS_MAC *
* *
* THIS MACRO IS USED TO SETUP AN "L_MESS" MESSAGE. *
* THE MESSAGE FOLLOWS THE MACRO. *
* ZERO TERMINATES THE MESSAGE. *
* ANOTHER ZERO TERMINATES L_MESS. *
* *
* A "1" AFTER THE TERMINATING "0" WILL CAUSE *
* L_MESS TO PRINT OUT ANOTHER MESSAGE. *
* *
**************************************************************************
MESS_MAC $MACRO FONT,SPACING,X,Y,COLOR,ROUTINE,SLEEP
.LONG :FONT:
.LONG :SPACING:
.LONG (:Y:*10000H)+:X:
.LONG :COLOR:
.LONG :ROUTINE:
* .LONG :SLEEP:
$END
SPACING20 EQU 00000002H
SPACING07 EQU 1
*


48
BACKUP/MAC2.ASM Normal file
View File

@ -0,0 +1,48 @@
*CLICK AN AUDIT COUNTER
*DESTROYS A0
AUDIT $MACRO P1
MOVI :P1:,A0
CALLA AUD1
$END
*
*AUDIT A WORD LONG RAM LOCATION
*P1 = AUDIT
*P2 = RAM LOCATION
*DESTROYS A0,A1
AUDITCNT $MACRO P1,P2
MOVE @:P2:,A1,W
MOVI :P1:,A0
CALLA AUD
$END
*
*GET A GAME ADJUSTMENT VALUE
*RETURNS ADJUSTMENT VALUE IN A0
ADJUST $MACRO P1
MOVI :P1:,A0
CALLA GET_ADJ
$END
*CLICK AN AUDIT COUNTER
*DESTROYS A0
AUDIT $MACRO P1
MOVI :P1:,A0
CALLA AUD1
$END
*
*AUDIT A WORD LONG RAM LOCATION
*P1 = AUDIT
*P2 = RAM LOCATION
*DESTROYS A0,A1
AUDITCNT $MACRO P1,P2
MOVE @:P2:,A1,W
MOVI :P1:,A0
CALLA AUD
$END
*
*GET A GAME ADJUSTMENT VALUE
*RETURNS ADJUSTMENT VALUE IN A0
ADJUST $MACRO P1
MOVI :P1:,A0
CALLA GET_ADJ
$END


547
BACKUP/MAIN.ASM Normal file
View File

@ -0,0 +1,547 @@
**************************************************************
*
* Software: ?
* Initiated: ?
*
* Modified: Shawn Liptak, 8/?/91 -Clean up
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 9/6/91 13:28
**************************************************************
.FILE 'MAIN.ASM'
.TITLE 'INITIALIZATION AND INTERRUPTS'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROCESSOR EQUATES
.INCLUDE "\VIDEO\SYS\GSP.INC" ;GSP ASSEMBLER EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;ZUNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS, YEAH!
.INCLUDE "GAME.EQU"
*UTILITY SUBROUTINE EQUATES
.GLOBAL MYOINIT,SETPPROC,WDOGDIS,WDISTAB,INTIO
*PAL EQUATES
.GLOBL DELPAL,GETFPAL,INITBPAL,FINDPAL,INITPAL,PALTRANS,AUTOEON
*RAM EQUATES
.GLOBL INTSYNC0,INTSYNC1,NOAUTOE,SYSCOPY
.GLOBAL IRQSKYE,WDOGRAM
.GLOBAL GAMSTATE,GAMERASE
;EXTERNAL
.REF INIT_PROG,COLRTEMP,SWSTACK,SWTEMP1,SWTEMP2,PLYRPRCS
.REF DRAW_SCORE,SCORE_FLAG
.REF SWSTMN,C_FRAC,C_FLAGS,COINCNTR
.DEF INIT_ALL,CLSCRACH
;UNINITIALIZED RAM DEFINITIONS
.BSS EOSCRN,8,1
.BSS IRQLED,16
.BSS WDOGRAM,32 ;INITIALIZED LONG FOR WATCH DOG DETECT
.TEXT
INIT_ALL
CALLA INIT_SYS ;GENERAL SYSTEM INITIALIZATION
CALLA PINIT ;INIT PROCESS LIST
CALLA MYOINIT ;INITIALIZE THE OBJECT LIST
CALLA AUTOEON
EINT ;ENABLE INTERRUPTS AND WE'RE OFF
MOVK 1,A0
MOVE A0,@DISPLAYON
RETS ;RETURN TO FIRST GAME FILE
**************************************************************************
* *
* SYSTEM ROUTINES AND PROCESSES *
* *
**************************************************************************
;SCAN FOR PROCESS ACTIVATION ONLY
swscan
; MOVE @SWITCH,A0,L
MOVE @COINS,A0
MOVE @SWTEMP1,A1 ;PREVIOUS STATE T=N-1
MOVE @SWTEMP2,A2 ;PREVIOUS PREVIOUS T=N-2
MOVE A1,@SWTEMP2 ;NEW PREVIOUS PREVIOUS
MOVE A0,@SWTEMP1 ;NEW PREVIOUS
AND A1,A2
ANDN A0,A2 ;LOOK FOR 110
sll 16,a2
JREQ SWSCX ;NO SWITCHES
MOVE @SWSTACK,A3,L ;SWITCH ACTIVATION STACK
SWSCLP ;FIND BIT SET
CMPI SWSTMN,A3 ;SWITCH STACK OVERFLOW?
JREQ SWSCX1 ;YEP, QUIT
LMO A2,A0 ;1'S COMP LEFTMOST BIT
RL A0,A2 ;GET RID OF BIT
SLL 1,A2
MOVK 31,A1 ;CALC TRUE BIT #
SUB A0,A1
MOVE A1,-*A3 ;PUSH SWITCH NUMBER ON STACK (0-31)
RL A1,A2 ;RESTORE SWITCH WORD WITHOUT BIT
JRNE SWSCLP
SWSCX1 MOVE A3,@SWSTACK,L ;RESTORE SWITCH STACK
SWSCX RETS
********************************
INIT_SYS
CALLA PINIT
MOVI INAMODE,A0
MOVE A0,@GAMSTATE,W
MOVI WDOGNUM,A0
MOVE A0,@WDOGRAM,L ;MARK SYSTEM AS INITIALIZED
CALLA SNDRES ;SOUND BOARD INIT (MAKES SOUND!)
CALLR INITIO ;INITIALIZE THE I/O REGS
;SET UP TI PIXEL PROCESSING REGS
CALLA SETPPROC ;ONLY NEEDED FOR GSP ROUTINES?
CLR A0
MOVE A0,@DMACTRL ;OFF DMA
MOVE A0,@CMAPSEL ;CLEAR COLOR MAP SELECT
MOVI 81261A8CH,A0 ;INITIALIZE RANDOM SEED
MOVE A0,@RAND,L
MOVI DIE+X2E,A0
MOVE A0,@INTENB ;ENABLE DISPLAY INTERRUPTS
MOVI SYSCINIT,A0 ;INITIALIZE SYSTEM CONTROL REGISTER
MOVE A0,@SYSCTRL,W
MOVE A0,@SYSCOPY,W ;KEEP A COPY IN RAM
RETS
**************************************************************************
* *
* WDOGDIS - WATCH DOG DISABLE *
* NOTE: CALL WHILE INTERRUPTS ARE TURNED OFF. *
* *
**************************************************************************
WDOGDIS
MMTM SP,A0,A1,A2,A3
MOVI WDISTAB,A1
MOVK 1,A3
MOVE @SYSCOPY,A2,W
MOVE *A1+,A0,W
WDOGSL
OR A2,A0
MOVE A0,@SYSCTRL,W
XOR A3,A0
MOVE A0,@SYSCTRL,W
MOVE *A1+,A0,W
JRNN WDOGSL
MOVE A2,@SYSCTRL,W
MMFM SP,A0,A1,A2,A3
RETS
*
*WATCH DOG DISABLE TABLE
WDISTAB
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 2
.WORD 0
.WORD 2
.WORD 0
.WORD 0FFFFH
**************************************************************************
* *
* CLSCRACH - CLEAR SCRATCH PAD
* NOTE: DESTROYS A0,A1,A2,A3 *
* *
**************************************************************************
CLSCRACH
PULL A3
CLR A0
MOVI SCRATCH,A1,L
MOVI >8000,A2,L ;CLEAR TWO AT A TIME
SCTLP MOVE A0,*A1+,L
DSJS A2,SCTLP
JUMP A3
**************************************************************************
* *
* DIRQ - DISPLAY IRQ, USES THE VALUE STORE @DPYINT TO DETERMINE *
* WHICH INTERRUPT THIS IS, HALF OR FULL SCREEN. @DPYINT IS *
* COMPARED AGAINST THE CONSTANT HSINT. *
* *
**************************************************************************
DIRQ
MMTM SP,B0,B1,B2,B3,B4,B5
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14
SETF 16,1,0 ;WORD SIGN EXTEND
MOVE @INTPEND,A1 ;CLEAR STUPID INTERRUPT PENDING
ANDNI DIE,A1
MOVE A1,@INTPEND
MOVE @INTENB,A1 ;DISABLE DISPLAY INTERRUPT
ANDNI DIE,A1
MOVE A1,@INTENB
EINT ;ENABLE OTHER INTERRUPTS
MOVE @DPYINT,A2 ;CHECK WHAT SCREEN HALF
CMPI HSINT,A2
JRNE DIRQ1 ;BR = END OF SCREEN INTERRUPT
**************************************************************************
* *
* DIRQ0 - HALF SCREEN INTERRUPT. TOP HALF OBJECTS ARE UPDATED, *
* OBJECT VELOCITIES ARE ADDED, SWITCHES FOR PLAYER MOVEMENT ARE *
* SCANNED, AND PLAYERS ARE UPDATED. *
* *
**************************************************************************
DIRQ0
MOVI EOSINT,A1 ;SET FOR EOSCRN INTERRUPT
MOVE A1,@DPYINT
MOVE @TIMER,A1 ;HIT PROCESS TIMER
INC A1
MOVE A1,@TIMER
MOVE @INTSYNC0,A0
INC A0
MOVE A0,@INTSYNC0 ;SYNC AT HALF SCREEN
CALLA DISPQT
callr swscan ;Scan misc switches for processes
MOVE @PLYRPRCS,A0,L ;Count down players delay detection
JRZ PL2
MOVE *A0(DELYDET),A1
JRZ PL2
DEC A1
MOVE A1,*A0(DELYDET)
PL2 MOVE @PLYRPRCS+32,A0,L
JRZ PL3
MOVE *A0(DELYDET),A1
JRZ PL3
DEC A1
MOVE A1,*A0(DELYDET)
PL3 MOVE @SCORE_FLAG,A0
JRZ NOSCORE
CALLA DRAW_SCORE ;DRAW WHOLE AREA
NOSCORE CALLA DISPLAY ;GOT TO MAKE THE DONUTS
JRUC DIRQX
**************************************************************************
* *
* DIRQ1 - END OF SCREEN INTERRUPT ROUTINE. BOTTOM HALF OF SCREEN UPDATED *
* COLOR RAM IS CYCLED, AND SWITCHES ARE SCANNED. *
* *
**************************************************************************
DIRQ1
move @SYSCOPY,a0
andni AUTOERAS,a0 ;Set AE on (0)
move @GAMERASE,a1
jrz dirq10 ;AUTO-ERASE disabled?
move @NOAUTOE,a1
jrz dirq12
dirq10 addk AUTOERAS,a0 ;Disable AUTO ERASE
dirq12 move a0,@SYSCOPY ;Store new value
move a0,@SYSCTRL
MOVE @IRQSKYE,@ERASELOC ;MOVE IN THE CORRECT COLOR
MOVI HSINT,A0
MOVE A0,@DPYINT ;RESET FOR HALF SCREEN INTERRUPT
MOVE @DPYCTL,A0 ;SHIFT REGISTER READ TO RESTART DMA
ORI SRT,A0
MOVE A0,@DPYCTL ;ENABLE SHIFT REG TRANSFER TO STOP DMA HALT
*** CLR A1
MOVI 400*>1000,A1
PIXT *A1,A2
ANDNI SRT,A0
MOVE A0,@DPYCTL
CALLA DISPH ;CALL END OF SCREEN DISPLAY ROUTINE
;UPDATE CYCLING COLOR RAM
MOVI COLRTEMP,A0 ;GET NEW COLORS
MOVI CYCOLORS,A1 ;GET ADDRESS OF CYCLE COLORS
; MOVE *A0+,*A1+,W ;GET THE ODD MAN
; MOVK 1,A6 ;COLOR COUNT/2 (FINAL TWO COLORS IN PAL 0)
;WILL CYCLE
MOVE *A0+,*A1+,L
; DSJS A6,COLORUP
CALLA PALTRANS ;XFER NEW PALETTES IF NECESSARY
MOVE @INTSYNC1,A0
INC A0
MOVE A0,@INTSYNC1 ;SYNC UP AT END OF SCREEN
callr swscan ;Scan misc switches
dint
MOVE @INTENB,A0 ;ENABLE DISPLAY INTERRUPT
ORI DIE,A0
MOVE A0,@INTENB
MOVE @IRQLED,A0
INC A0
SLL 29,A0
SRL 29,A0
MOVE A0,@IRQLED
JRNE DIRQX
*
*DO EVERYTHING FROM HERE TO DIRQX EVERY 8 TICKS
*
.IF DEBUG
.ELSE
MOVE @TIMER,A0
CMPI 200,A0
JAHS INIT_PROG ;REST ON LOCKUP
.ENDIF
MOVE @C_FRAC,A0 ;COUNT DOWN COIN FRACTION TIMER
JRZ C_TIM0 ;NOTHING THERE
SLL 24,A0
SRL 24,A0 ;THIS IS 30 SECONDS.....IF LARGER BRING DOWN!
DEC A0
MOVE A0,@C_FRAC
*COIN TIMERS
C_TIM0
MOVE @C_FLAGS,A0,L
JRZ C_CNTR
MOVI C_FLAGS+24,A2
MOVK 4,A4
CTIMLP
MOVE A0,A1
SRL 24,A1
JRZ C_TIM1
DEC A1
MOVB A0,*A2
C_TIM1
SUBK 8,A2
SLL 8,A0
DSJS A4,CTIMLP
*COIN COUNTERS
C_CNTR
MOVE @COINCNTR,A0,L ;COUNTERS, TIMERS ACTIVE????
JREQ L_DOG ;NO
MOVK 2,A4 ;DO BOTH COUNTERS
MOVI COINCNTR,A5
CCNTR0L
MOVB *A5,A1 ;MORE COUNTS FOR COUNTER ?
JREQ C_CNTR0 ;NO
MOVB *A5(16),A2 ;PREVIOUS PULSE TIME OUT?
JRNE C_CNTR0 ;NO
MOVK 2,A2
MOVB A2,*A5(16) ;START NEW PULSE
DEC A1 ;DECREMENT COUNTS
MOVB A1,*A5
C_CNTR0
ADDK 8,A5
DSJS A4,CCNTR0L
CLR A2 ;COUNTER ON MASK
MOVI >100,A3
MOVK 2,A4
C_CNTR1L
MOVB *A5,A0 ;COUNTER TIMER ACTIVE?
JREQ C_CNTR1 ;NO
DEC A0 ;YES, DEC IT AND STORE
MOVB A0,*A5
JREQ C_CNTR1 ;DONE
ADD A3,A2 ;TURN COUNTER SOLENOID ON
C_CNTR1
SLL 1,A3
ADDK 8,A5
DSJS A4,C_CNTR1L
.IF YUNIT
CLR A1
MOVE A1,@SECCHIP,W
MOVE A2,@SECCHIP,W ;REFRESH COUNTERS IN HARDWARE
.ENDIF
L_DOG
MOVI WDOGBONE,A1 ;THROW ROVER A BONE
MOVK 1,A3
MOVE @SYSCOPY,A2,W
MOVE *A1+,A0,W
ROVERL
OR A2,A0
MOVE A0,@SYSCTRL,W
XOR A3,A0
MOVE A0,@SYSCTRL,W
MOVE *A1+,A0,W
JRNN ROVERL
MOVE A2,@SYSCTRL,W
DIRQX MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14
MMFM SP,B0,B1,B2,B3,B4,B5
RETI
*WATCHDOG FEED TABLE
WDOGBONE
.WORD 0
.WORD 2
.WORD 0
.WORD 2
.WORD 2
.WORD 0FFFFH
**************************************************************************
* *
* INITIO - INITIALIZE THE GSP I/O REGISTERS *
* *
**************************************************************************
INITIO
MMTM SP,B0,B2,B6,B10
MOVI INTIO,B6
EXGPC B6
MMFM SP,B0,B2,B6,B10
RETS
*INITIALIZE I/O
*USE REGISTER CALL FOR TEST MODE NON-RAM USE
INTIO
MOVI HESYNC,B2,L
MOVI INITDATA,B0,L
MOVI (IDATAEND-INITDATA)/16,B10
INITIOS MOVE *B0+,*B2+
DSJS B10,INITIOS
EXGPC B6
**************************************************************************
* *
* BADTRAP - COME HERE WHEN A TRAP IS HIT THAT IS NOT DEFINED AND LOG IT. *
* *
**************************************************************************
BADTRAP1 nop
BADTRAP2 nop
BADTRAP3 nop
BADTRAP4 nop
BADTRAP5 nop
BADTRAP6 nop
BADTRAP7 nop
BADTRAP8 nop
BADTRAP9 nop
BADTRAP10 nop
BADTRAP11 nop
BADTRAP12 nop
BADTRAP13 nop
BADTRAP14 nop
BADTRAP15 nop
BADTRAP16 nop
BADTRAP17 nop
BADTRAP18 nop
BADTRAP19 nop
BADTRAP20 nop
BADTRAP21 nop
BADTRAP22 nop
BADTRAP23 nop
BADTRAP24 nop
BADTRAP25 nop
BADTRAP26 nop
BADTRAP27 nop
BADTRAP28
JRUC BADTRAP
BADTRAP29
.IF DEBUG
LOCKUP ;THIS WILL BAG WRITES INTO ROM!
EINT
.ENDIF
BADTRAP
.IF DEBUG
LOCKUP
EINT
.ELSE
CALLERR 9,0
.ENDIF
RETI
* VIDEO CONTROL REGISTERS INITIAL VALUES
INITDATA:
.WORD 015H ;>C0000000 -- HESYNC
.WORD 032H ;>C0000010 -- HEBLNK ;WAS A 2DH!! 7/26/91
.WORD 0FAH ;>C0000020 -- HSBLNK ;F3
.WORD 0FCH ;>C0000030 -- HTOTAL
.WORD 03H ;>C0000040 -- VESYNC
.WORD 014H ;>C0000050 -- VEBLNK;1B
.WORD 0114H ;>C0000060 -- VSBLNK;11B
.WORD 0120H ;>C0000070 -- VTOTAL
.WORD 0F010H ;>C0000080 -- DPYCTL
.WORD 0FFFCH ;>C0000090 -- DPYSTRT
.WORD HSINT ;>C00000A0 -- DPYINT * INITIALLY HALF SCREEN
; .WORD INI_CTRL ;>C00000B0 -- CONTROL
; .WORD >20 ;>C00000B0 -- CONTROL
.WORD >28 ;>C00000B0 -- CONTROL
.WORD 00H ;>C00000C0 -- HSTDATA
.WORD 00H ;>C00000D0 -- HSTADRL
.WORD 00H ;>C00000E0 -- HSTADRH
.WORD 00H ;>C00000F0 -- HSTCTLL
.WORD 00H ;>C0000100 -- HSTCTLH
.WORD 00H ;>C0000110 -- INTENBL
.WORD 00H ;>C0000120 -- INTPEND
.WORD 00H ;>C0000130 -- CONVSP
.WORD 00H ;>C0000140 -- CONVDP
.WORD PXSIZE ;>C0000150 -- PSIZE
.WORD 00H ;>C0000160 -- PMASK
.WORD 00H ;>C0000170 -- RESERVED
.WORD 00H ;>C0000180 -- RESERVED
.WORD 00H ;>C0000190 -- RESERVED
.WORD 00H ;>C00001A0 -- RESERVED
.WORD 00H ;>C00001B0 -- DPYTAP
IDATAEND:
*
*INITIALIZE ALL 32 TRAP VECTORS
*
.SECT "VECTORS"
.LONG BADTRAP1 ;TRAP 31
.LONG BADTRAP2 ;TRAP 30 ILLOP --- ILLEGAL OPCODE
.LONG BADTRAP3 ;TRAP 29
.LONG BADTRAP4 ;TRAP 28
.LONG BADTRAP5 ;TRAP 27
.LONG BADTRAP6 ;TRAP 26
.LONG BADTRAP7 ;TRAP 25
.LONG BADTRAP8 ;TRAP 24
.LONG BADTRAP9 ;TRAP 23
.LONG BADTRAP10 ;TRAP 22
.LONG BADTRAP11 ;TRAP 21
.LONG BADTRAP12 ;TRAP 20
.LONG BADTRAP13 ;TRAP 19
.LONG BADTRAP14 ;TRAP 18
.LONG BADTRAP15 ;TRAP 17
.LONG BADTRAP16 ;TRAP 16
.LONG BADTRAP17 ;TRAP 15
.LONG BADTRAP18 ;TRAP 14
.LONG BADTRAP19 ;TRAP 13
.LONG BADTRAP20 ;TRAP 12
.LONG BADTRAP21 ;TRAP 11 WV --- WINDOW VIOLATION
.LONG DIRQ ;TRAP 10 DI --- DISPLAY INTERRUPT
.LONG BADTRAP22 ;TRAP 9 HI --- HOST INTERRUPT
.LONG BADTRAP23 ;TRAP 8 NMI -- NONMASKABLE INTERRUPT
.LONG BADTRAP24 ;TRAP 7
.LONG BADTRAP25 ;TRAP 6
.LONG BADTRAP26 ;TRAP 5
.LONG BADTRAP27 ;TRAP 4
.LONG BADTRAP28 ;TRAP 3
.LONG BADTRAP29 ;TRAP 2 INT2 --- EXTERNAL INTERRUPT 2
.LONG DMAINT ;TRAP 1 INT1 --- EXTERNAL INTERRUPT 1
.LONG INIT_PROG ;TRAP 0 RESET
.END


25
BACKUP/MAKE.INI Normal file
View File

@ -0,0 +1,25 @@
.SUFFIXES : .EXE .OBJ .LIN .DEC .C .ASM .FOR .RAW .OUT
# .SUFFIXES:
RAM = d:\
MAKE_TMP = ${RAM}
LINK = \SYS\LINK
CC = \SYS\MSC
CFLAGS = /G2 /ZI /OD # G2 CODE FOR 80286
# ZI FOR CODEVIEW
# OD OPTIMIZATION OFF
LFLAGS = /CO /NOI # CO FOR CODEVIEW
# NOI DISTINGUISH UC/LC LETTERS
DECLFLAGS = /W /ZG # ZG GENERERATE FUNCTION DECLS
# W SUPPRESS COMPILER WARNINGS
LINTFLAGS = /ZS /W2 /DLINT_ARGS
# ZS SYNTAX CHECK ONLY
# W2 FULL WARNINGS
.asm.obj:
@ ECHO *----assembling----$*.ASM(0)
d:\GSPA $* d:\$*.obj d:\$*.lst -h -l -v10
COPY d:\$*.OBJ
CRNCHLST d:\$*.LST
COPY d:\$*.LST



44
BACKUP/MAKEFILE Normal file
View File

@ -0,0 +1,44 @@
#
.SUFFIXES : .EXE .ASM .OBJ .C .MOT
#
OBJS = NDSP1.OBJ RAM.OBJ UTIL.OBJ PALL.OBJ MPROC.OBJ BAKGND.OBJ\
BGNDTBL.OBJ BGNDPAL.OBJ IMGPAL.OBJ IMGTBL.OBJ MAIN.OBJ\
CARN.OBJ WAVES.OBJ SCORE.OBJ SHOTS.OBJ CHUNKS.OBJ T72.OBJ\
SOUNDS.OBJ PATCH.OBJ COLL2.OBJ MINE.OBJ ICONS.OBJ NEWHULK.OBJ\
DEMO.OBJ ATTRACT.OBJ ADJUST.OBJ FIEND.OBJ TRIG.OBJ HELPER.OBJ\
AUDIT.OBJ MENU.OBJ TEST.OBJ FBSTUFF.OBJ ARAB.OBJ LAYER.OBJ\
PALSTUFF.OBJ TEXT.OBJ HSTD.OBJ\
DIAG.OBJ RACKUP.OBJ SHAWN.OBJ
d:CARN.OUT: $(OBJS)
GLNK CARN
COPY d:CARN.OUT C:\VIDEO\CARNAGE
COPY d:CARN.MAP C:\VIDEO\CARNAGE
TV CARN /v
$(OBJS): $*.ASM
NEWHULK.OBJ: FINGRNT.TBL
TEXT.OBJ: TEXT.TBL
NDSP1.OBJ: DISP.EQU
MPROC.OBJ: MPROC.EQU
MENU.OBJ: LINK.EQU MENU.EQU
TEST.OBJ: LINK.EQU
AUDIT.OBJ: LINK.EQU
HSTD.OBJ: LINK.EQU
ADJUST.OBJ: MENU.EQU


4267
BACKUP/MENU.ASM Normal file

File diff suppressed because it is too large Load Diff

187
BACKUP/MENU.EQU Normal file
View File

@ -0,0 +1,187 @@
**********************************MENU EQUATES****************************
;
; FOR EACH ENTRY IN THE MENU
;
MENU_TEXT_PTR EQU 0 ;OFFSET OF TEXT POINTER
MENU_ROUTINE EQU LONG_SIZE ;OFFSET OF ROUTINE
MENU_HELP EQU MENU_ROUTINE+LONG_SIZE
MENU_ENTRY_SIZE EQU 3*LONG_SIZE
*
BLNK_HELP EQU 0 ;NO HELP BOX FOR THIS ENTRY
NO_HELP EQU 00000001H ;NO HELP AREA IN THIS MENU
ADJ_HELP EQU 00000002H ;PASS STRUCTURE POINTER TO ADJUSTMENT HELP ROUT
SND_HELP EQU 00000003H ;CALLED ON SOUND TEST MENU
SND_PLAY EQU 00000004H ;CALLED FROM SOUND "PLAY" SELECTIONS
*
SND_MESS_Y EQU 196
SND_BOX_H EQU 57
*
* SPACING BETWEEN BOXES ON SCREEN
*
BOX_YGAP EQU 3
BOX_XGAP EQU 2
*
*
* A CENTERED BOX NEEDS TO BE MOVED LEFT THIS AMOUNT
* (PIXELS) TO CORRECTLY FRAME CENTERED TEXT AT
* THE SAME POSITION
*
C_KLUDGE EQU 1
*
* THESE DETERMINE THE THICKNESS OF THE BOX LINES
*
MB_XWID EQU 3
MB_YWID EQU 3
*
* GAP BETWEEN A MENU BORDER BOX AND
* THE SELECTION BAR
*
GAP EQU 2 ;GAP BETWEEN BORDER AND SELECTION BAR
*
* CONSTANT TO PASS TO "DO_BORDER" FOR OUR
* BOX SIZE
*
BORDER_SIZE EQU (MB_YWID*10000H)+MB_XWID
*******************************TEST TITLE CONSTANTS****************************
*
* THESE ARE USED TO SET TOP BOX AND MAIN TITLE.
* THE MENUS AND HELP SCREENS WILL SQUARE OFF
* TO THE NUMBERS SET HERE.
*
TM_X EQU 200 ;USED TO POSITION TITLE AND BOX TOGETHER
TM_Y EQU 14
TIT_ULX EQU TM_X-0BEH
TIT_LRX EQU TM_X+0B8H
TIT_ULY EQU TM_Y-05H
TIT_LRY EQU TM_Y+1EH
********************************MAIN MENU CONSTANTS***************************
INST_ULY EQU TIT_LRY+BOX_YGAP ;Y RANGE FOR INSTRUCTION BOX
INST_LRY EQU INST_ULY+28
BAR_DY EQU -7
BAR_WID EQU 165
MENU_X EQU TIT_ULX+GAP+MB_XWID+(BAR_WID/2)+C_KLUDGE
MENU_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-BAR_DY
MENU_DY EQU 25
BAR_HITE EQU 30
BAR_DX EQU 6
*
* HELP DRAWER CONSTANTS
*
HELP_X_MARGIN EQU 7 ;MARGIN FOR LEFT JUSTIFIED HELP TEXT
HELP_Y_MARGIN EQU 3 ;TOP OF BOX TO 1ST ENTRY
HELP_YLO_MARGIN EQU HELP_Y_MARGIN-2 ;BOTTOM MARGIN IS A TOUCH LESS DUE
* ;TO SPACING
HELP_DY EQU 10 ;SCREEN UNITS PER ITEM.
*
*
* ADJUSTMENT MENU CONSTANTS
*
* "CURRENT SETTING" BOX
*
CUR_ULY EQU 127
CUR_LRX EQU TIT_LRX
CUR_LRY EQU CUR_ULY+(INST_LRY-INST_ULY) ;SAME HEIGHT AS TOP BOX
*
ADJ_ULY EQU CUR_LRY+BOX_YGAP ;USE OUR "FIXED" SPACING.
*
COIN_HEAD_Y EQU CUR_ULY+61 ;1ST OF TOP COIN INFO LINES
MESS_CTS EQU COIN_HEAD_Y+25 ;START/CONTINUE PLACE
**************************************************************************
* *
* COIN SELECT TABLE OFFSETS *
* *
**************************************************************************
*
* IF "CHUTES" VALUE CHANGES.....EXTRA WORDS MUST BE PUT HERE
*
CS_LMULT EQU 0
CS_RMULT EQU CS_LMULT+WORD_SIZE
CS_CMULT EQU CS_RMULT+WORD_SIZE
CS_XMULT EQU CS_CMULT+WORD_SIZE
CS_UCRED EQU CS_XMULT+WORD_SIZE
CS_UBON EQU CS_UCRED+WORD_SIZE
CS_UMIN EQU CS_UBON+WORD_SIZE
CS_CDIV EQU CS_UMIN+WORD_SIZE
CS_FRAC EQU CS_CDIV+WORD_SIZE
CS_COPY EQU CS_FRAC+WORD_SIZE ;UP TO HERE IS COPIED AS ADJUSTMENTS
CS_LVAL EQU CS_COPY
CS_RVAL EQU CS_LVAL+WORD_SIZE
CS_CVAL EQU CS_RVAL+WORD_SIZE
CS_XVAL EQU CS_CVAL+WORD_SIZE
CS_LMES EQU CS_XVAL+WORD_SIZE
CS_RMES EQU CS_LMES+LONG_SIZE
CS_PROMPT EQU CS_RMES+LONG_SIZE
CS_TITLE EQU CS_PROMPT+LONG_SIZE
CS_LIST EQU CS_TITLE+LONG_SIZE
CS_PICK EQU CS_LIST+LONG_SIZE ;WHICH LINE TO ADD TO 2 TO START...1 TO
CS_SLOTS EQU CS_PICK+WORD_SIZE ;TEXT DESCRIBING COIN SLOTS
CS_SIZE EQU CS_SLOTS+LONG_SIZE
*
*
* ADJUSTMENT STRUCTURE. THIS STRUCTURE IS
* POINTED TO BY THE 2ND MENU LONG WORD (WHERE NORMALLY
* THE ROUTINE LIVES).
*
AD_ROUT EQU 0 ;LONG...ROUTINE TO RUN WHEN SELECTED.
AD_TITLE EQU AD_ROUT+LONG_SIZE ;LONG...POINTER TO TITLE FOR RIGHT COLUMN
AD_HELP EQU AD_TITLE+LONG_SIZE ;LONG...POINT TO HELP STRUCT FOR EXPLANATION
AD_CMOS EQU AD_HELP+LONG_SIZE ;WORD...GET_ADJ / PUT_ADJ NUMBER.
AD_MIN EQU AD_CMOS+WORD_SIZE ;LONG...MINIMUM VALUE FOR ADJ.
AD_MAX EQU AD_MIN+LONG_SIZE ;LONG...MAXIMUM VALUE FOR ADJ.
AD_DELTA EQU AD_MAX+LONG_SIZE ;LONG...UNITS BETWEEN VALUES.
AD_ZEQU EQU AD_DELTA+LONG_SIZE ;LONG...NUMBER TO STORE AS A ZERO.
AD_NAMEIT EQU AD_ZEQU+LONG_SIZE ;LONG...ROUTINE TO PRINT VALUES.
AD_FLAGS EQU AD_NAMEIT+LONG_SIZE ;WORD...bit zero non zero says wrap
* ; bit one non zero says BCD
; bit two says flag "1st 8 coinage changed" (ADJVIRGIN)
; bit three says flag 1st 6 changed (ADJ1st6)
; bit four says its hsr counter
AD_NAMPTR EQU AD_FLAGS+WORD_SIZE ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE
AD_MAIN EQU AD_NAMPTR+LONG_SIZE ;LONG...MAIN MENU STRING
WRAP_BIT EQU 0
BCD_BIT EQU 1
VIRG_BIT EQU 2
SIX_BIT EQU 3
HSR_BIT EQU 4
WRAP_VAL EQU 1
BCD_VAL EQU 2
VIRG_VAL EQU 4
SIX_VAL EQU 8
HSR_VAL EQU 16
*
* FOR CSELECT TABLE......
*
* A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS
* CENTERED APPROPRIATELY
*
* A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG
* WITH THE 2 CREDITS TO START...1 TO CONTINUE
*
* A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG
* WITH THE 2 CREDITS TO START...1 TO CONTINUE
*
CSM_LIST EQU 1
CSM_1W_21 EQU 2
CSM_2W_21 EQU 3
CSM_3W_21 EQU 4
CSM_LAST EQU 4
*
* FOR CS_PICK:
*
SHOW_NONE EQU 0 ;JUST USE 2/1 BY ITSELF
SHOW_1 EQU 2 ;SHOW 1ST LINE
SHOW_2 EQU 3 ;SHOW 2ND LINE
SHOW_3 EQU 4 ;SHOW 3RD LINE


4423
BACKUP/MINE.ASM Normal file

File diff suppressed because it is too large Load Diff

447
BACKUP/MPROC.ASM Normal file
View File

@ -0,0 +1,447 @@
**************************************************************
* GSP MULTI-PROCESSING SYSTEM
*
* Software: Eugene P Jarvis
* Initiated: 1988?
*
* Modified: Shawn Liptak, 7/?/91 -New KILL stuff
* Shawn Liptak, 8/12/91 -KOP code
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 8/12/91 17:39
**************************************************************
.FILE 'MPROC.ASM'
.TITLE "GSP MULTI-PROCESSING SYSTEM"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
* FILES REQUIRED FOR ASSEMBLY
.INCLUDE \VIDEO\SYS\GSP.INC ;GSP ASSEMBLER EQUATES
.INCLUDE \VIDEO\SYS\SYS.INC ;ZUNIT SYSTEM EQUATES
.INCLUDE \VIDEO\SYS\MACROS.HDR ;MACROS
.INCLUDE MPROC.EQU
.INCLUDE DISP.EQU
* SET UP FIXED PARAMETERS AT THE BEGINNING OF SCRATCHPAD
.REF L_TIMER ;AUDIT
.SECT "FIXED"
ACTIVE .LONG 0
FREE .LONG 0
*GLOBAL PROCESS VARIABLES
.BSS TIMER,16 ;IRQ TIMER 16 MSEC.
.BSS TIMETEMP,16 ;LAST TIMER VALUE
.BSS OVERLOAD,16 ;OVERLOAD CHECKER
.BSS PRCSTR,NPROC*PRCSIZ ;PROCESS STORE ALLOCATION
*MULTI-PROCESSING PROGRAM
.TEXT ;STORE IN PROGRAM ROM
********************************
*PROCESS DISPATCH
PRCDSP
MOVI ACTIVE,A13,L ;LONG WORD INIT SCAN PROCESS LIST
PRCWTSRT
CALLA YZSORT ;SORT DISPLAY LIST
MOVE @TIMER,A0
JREQ PRCWTSRT ;BR = WAIT FOR TIMING FROM INTERRUPT, SORT
MOVE A0,@TIMETEMP ;SAVE
SLL 1,A0
MOVE @OVERLOAD,A1,W
ADD A0,A1
SRL 1,A1
MOVE A1,@OVERLOAD,W
CALLA L_TIMER ;linky timer
CLR A0
MOVE A0,@TIMER
JRUC PRCD1
********************************
*PROCESS SLEEP
*TOS IS WAKEUP ADDR ,A0 = SLEEP TIME
PRCSLP
move *SP+,A7,L ;CALLING PC->A7
PRCLSP move A13,A1
addi PDATA,A1
mmtm A1,A7,A8,A9,A10,A11,A12 ;wakeup, regs, stack ptr
move A0,-*A1 ;sleep
.if DEBUG ;this is for DEBUG only
MOVE A13,A0
ADDI PSDATA,A0
CMP A0,A12
JRLT $ ;Stick on Stack overflow
ADDI PRCSIZ-PSDATA,A0
CMP A0,A12
JRGT $ ;Stick on Stack underflow
.endif
PRCD1
************************************
* MOVE @TIMETEMP,A1,W ;GET THE LAST TIMER VALUE
************************************
PRCD1A
MOVE *A13,A13,L
JREQ PRCDX ;NULL LIST, EXIT
MOVE *A13(PTIME),A0 ;GET COUNT
**************************************************************************
* SUB A1,A0
**************************************************************************
DEC A0 ;DECREMENT COUNT
MOVE A0,*A13(PTIME) ;PUT IT BACK
JRGT PRCD1A ;NOT READY, LOOP FOR NEXT
*PROCESS IS READY FOR DISPATCH
PRCD2 move A13,A1
addi >40,A1
mmfm A1,A7,A8,A9,A10,A11,A12 ;wake, regs, stack ptr
jump A7 ;fire off proc
*DONE WITH THE SCAN
PRCDX RETS
********************************
*PROCESS SUICIDE
SUCIDE
MOVI ACTIVE,A1,L
SUCLP MOVE A1,A2 ;SAVE PREVIOUS
MOVE *A1,A1,L
jrz sucerr
CMP A1,A13 ;CHECK FOR MATCH TO CURRENT PROCESS
JRNE SUCLP ;NOT FOUND KEEP LOOKING
MOVE *A1,*A2,L ;LINK AROUND IN ACTIVE LIST
MOVE @FREE,A0,L ;GET FREE POINTER
MOVE A0,*A1,L ;LINK INTO FREE LIST AT START
MOVE A1,@FREE,L
MOVE A2,A13 ;SET CURRENT PROCESS TO PREVIOUS
JRUC PRCD1 ;CONTINUE WITH DISPATCH
sucerr .if DEBUG ;this is for DEBUG only
LOCKUP
EINT
.ELSE
CALLERR 5,0
.endif
JRUC PRCDSP ;RESOLVE?
********************************
*PROCESS LIST INITIALIZE
*A13 RETURNED POINTING TO ACTIVE LIST (CRPROC)
PINIT
MMTM SP,A0,A1,A2,A3 ;SAVE REG
MOVI NPROC,A3,W ;# OF PROCESSES TO INIT
CLR A0
MOVE A0,@ACTIVE,L ;NULL ACTIVE LIST
MOVI PRCSTR,A1,L
MOVE A1,@FREE,L ;SETUP FREE LIST
PINITL
MOVE A1,A2
ADDI PRCSIZ,A1,W
MOVE A1,*A2,L ;LINK EM UP
DSJS A3,PINITL ;CONTINUE FOR NPROC
MOVE A0,*A2,L ;ZERO LAST LINK
MOVI ACTIVE,A13,L ;INIT CURRENT PROCESS
MMFM SP,A0,A1,A2,A3 ;RESTORE REGS
RETS
********************************
*KILL PROCESS
*A0 POINTS TO PROCESS TO KILL
*IF PROCESS NOT PRESENT, CAUSES ERROR
*TO KILL YOURSELF SUCIDE MUST BE USED,
*IF YOU ATTEMPT TO KILL YOURSELF IT WILL JUST RETURN
KILL
CMP A0,A13 ;KILLING YOURSELF?
JREQ KILLXXX ;BR = YES, JUST ESCAPE
MMTM SP,A1,A2
.IF DEBUG
HULKPID .EQU 142
MOVE *A0(PROCID),A1
CMPI HULKPID,A1
JRNZ KL2
LOCKUP
EINT
KL2
.ENDIF
MOVI ACTIVE,A1,L
KILLP MOVE A1,A2 ;SAVE PREVIOUS
MOVE *A1,A1,L
JRZ killerr
CMP A1,A0
JRNE KILLP ;NOT FOUND KEEP LOOKING
MOVE *A0,*A2,L ;LINK AROUND IN ACTIVE LIST
MOVE @FREE,A1,L ;LINK INTO FREE LIST AT START
MOVE A1,*A0,L
MOVE A0,@FREE,L
KILLX MMFM SP,A1,A2
KILLXXX RETS
killerr .IF DEBUG
LOCKUP
EINT
.ELSE
CALLERR 6,2
.ENDIF
JRUC KILLX
********************************
*CREATE A PROCESS
*A1=ID,A7=PC,A8,A9,A10,A11 PASSED PARAMETERS
*A13=CURRENT PROCESS
*A0 IS RETURNED POINTING TO CREATED PROCESS
GETPRC
MMTM SP,A2,A12
MOVE @FREE,A0,L
JREQ NONELFT ;NONE AVAILABLE
MOVE *A0,A2,L
MOVE A2,@FREE,L ;REMOVE FROM FREE LIST
MOVE *A13,*A0,L ;LINK INTO ACTIVE LIST AFTER CURRENT PROCESS
MOVE A0,*A13,L ;CRPROC>>NEW PROC
JRUC XFERPRC0
********************************
* XFERPROC - TRANSFER CONTROL OF AN EXISTING PROCESS
* A0= PTR OF PROCESS TO BE XFER'D
* A1= NEW I.D.
* A7= WAKE UP
* A8-A11= PASSED TO THE XFER'D PROC
XFERPROC
mmtm SP,A2,A12
XFERPRC0
.IF DEBUG
CMPI 0FFC00000H,A7 ;FFE
.ELSE
CMPI 0FFE00000H,A7 ;FFE
.ENDIF
JRHS OK
.IF DEBUG
LOCKUP
EINT
.ELSE
CALLERR 7,2
.ENDIF
JRUC GETPX
OK
MOVE A0,A2
ADDI PDATA,A2
move A0,A12 ;RESET PROCESS STACK POINTER
addi PRCSIZ,A12
MMTM A2,A7,A8,A9,A10,A11,A12 ;STUFF wake, regs, p stack ptr
movk 1,A12
move A12,-*A2,W ;WAKE UP AS SOON AS POSSIBLE
move A1,-*A2,W ;ID
GETPX
mmfm SP,A2,A12
RETS
NONELFT
.IF DEBUG
LOCKUP
EINT
.ELSE
CALLERR 4,2
.ENDIF
JRUC GETPX
********************************
* KILL A CLASS OF PROCESSES (Old, for compatibility)
* A0=PROCID (16 BITS) ,A1=MASK (16 BITS, bits to keep)
* WILL NOT KILL CALLING PROCESS (A13)
KILALL mmtm sp,a0,a1,a2,a3,a4
not a1
jruc kilan
********************************
* Kill one class of processes
KIL1C ;A0=PROCID, A1=Trashed
clr a1
********************************
* Kill a class of processes
KILALLN ;A0=PROCID, A1=!Mask (Bits to remove)
mmtm sp,a0,a1,a2,a3,a4
kilan andn a1,a0 ;Form match
MOVI ACTIVE,A2,L
KILALP MOVE A2,A3 ;SAVE PREVIOUS
MOVE *A2,A2,L ;GET NEXT
JREQ KILALX ;ALL DONE
MOVE *A2(PROCID),A4
andn a1,a4 ;Can dont care bits
CMP A0,A4 ;MATCH?
JRNE KILALP ;NO
CMP A2,A13 ;CURRENT PROCESS?
JREQ KILALP ;YES DONT KILL
MOVE *A2,*A3,L ;LINK AROUND IN ACTIVE LIST
MOVE @FREE,A4,L ;LINK INTO FREE LIST AT START
MOVE A4,*A2,L
MOVE A2,@FREE,L ;POINT FREE TO CELL
MOVE A3,A2
JRUC KILALP ;KILL THE REST
KILALX MMFM SP,A0,A1,A2,A3,A4
RETS
********************************
* Knock out one class of processes
KOP_1C ;A0=PROCID, A2=Time to add
clr a1
********************************
* Knock out a class of processes
KOP_ALL ;A0=PROCID, A1=!Mask (Bits to remove), A2=Time to add
mmtm sp,a3,a4
andn a1,a0 ;Form match
movi ACTIVE,a3,L
koplp move *a3,a3,L ;Get next
jrz kopx ;End?
move *a3(PROCID),a4
andn a1,a4 ;Mask
cmp a0,a4
jrnz koplp ;No match?
move *a3(PTIME),a4 ;Add sleep
add a2,a4
move a4,*a3(PTIME)
jruc koplp
kopx mmfm sp,a3,a4
rets
********************************
*CHECK TO SEE IF PROCESS IN A0 EXISTS
*RETURNS:
* Z BIT SET = NO MATCH, A0 = 0
* Z BIT CLR = MATCH, A0 = PTR TO PROCESS
PEXIST
MMTM SP,A2
MOVI ACTIVE,A2,L
ISOBP MOVE *A2,A2,L ;GET NEXT
JREQ ISOBX ;ALL DONE
CMP A0,A2 ;PROC?
JRNE ISOBP ;NO
MOVE A0,A0 ;CLR Z BIT
ISOBX MMFM SP,A2
RETS
********************************
*FIND IF AT LEAST ONE PROCESS, OTHER THAN CALLING PROCESS,
*EXISTS.
*A0=PROCID (16 BITS) ,A1=MASK (16 BITS)
*MASK BITS OF ZERO ARE DONT CARES
*RETURNS:
* Z BIT SET = NO MATCH, A0 = 0
* Z BIT CLR = MATCH, A0 = PTR TO PROCESS
EXISTP
MMTM SP,A1,A2,A4
SEXT A0,W
AND A1,A0 ;FORM MATCH
MOVI ACTIVE,A2,L
EXNXT
MOVE *A2,A2,L ;GET NEXT
JREQ EXSC ;ALL DONE
MOVE *A2(PROCID),A4
AND A1,A4 ;CAN DONT CARE BITS
CMP A0,A4 ;MATCH?
JRNE EXNXT ;NO
CMP A2,A13 ;CURRENT PROCESS?
JREQ EXNXT ;YES, THEN WE DON'T CARE
EXSC
MOVE A2,A0
MMFM SP,A1,A2,A4
RETS
********************************
* GET A PRESERVED REGISTER FROM A SLEEPING PROCESS
* A0=*SLEEPER
GETA11 move *A0(PA11),A11,L
RETS
GETA10 move *A0(PA10),A10,L
RETS
GETA9 move *A0(PA9),A9,L
RETS
GETREGS
move *A0(PA11),A11,L
move *A0(PA10),A10,L
move *A0(PA9),A9,L
GETA8 move *A0(PA8),A8,L
RETS
GETWAKE move *A0(PWAKE),A7,L
RETS
PUTA11 move A11,*A0(PA11),L
RETS
PUTA10 move A10,*A0(PA10),L
RETS
PUTA9 move A9,*A0(PA9),L
RETS
PUTREGS
move A11,*A0(PA11),L
move A10,*A0(PA10),L
move A9,*A0(PA9),L
PUTA8 move A8,*A0(PA8),L
RETS
PUTA7
PUTWAKE move A7,*A0(PWAKE),L
RETS
.END


415
BACKUP/MPROC.EQU Normal file
View File

@ -0,0 +1,415 @@
*******************
*MASTER EQUATE FILE
*.Last mod - 9/23/91 16:20
*******************
* GLOBAL VARIABLES
.GLOBL KILALL,GETPRC,KILL,PINIT,SUCIDE,PRCSLP,PRCDSP,PRCLSP,EXISTP
.GLOBL RAND,TIMER,OVERLOAD,ACTIVE,FREE,PRCSTR,PEXIST
.GLOBL SNDRES,SNDRESP,ONESND,SNDLD,SNDSND,CKSNDPRI,QSNDRST
.GLOBL GETA11,GETA10,GETA9,GETA8,XFERPROC
.GLOBL PUTA11,PUTA10,PUTA9,PUTA8,PUTA7
.globl KIL1C,KILALLN,KOP_1C,KOP_ALL
* PROCESS DATA STRUCTURE
* NOTE: MAKE SURE THIS IS EVENLY DIVISIBLE BY 32
*STRUCT PROC
PLINK .SET 0 ;LINK TO NEXT 32 BITS
PROCID .SET 20H ;UHW PROCESS ID 16 BITS
PTIME .SET 30H ;UHW SLEEP TIME X 16MSEC 16 BITS
PSPTR .SET 40H ;UHL PROCESS STACK POINTER 32 BITS
PA11 .SET 60H ;UHL REGISTERS SAVED
PA10 .SET 80H ;UHL
PA9 .SET 0A0H ;UHL
PA8 .SET 0C0H ;UHL
PWAKE .SET 0E0H ;UHL
PDATA .SET 100H ;PROCESS DATA STORE
;PSDATA .SET 2A0H ;PROCESS STACK DATA (PC, A8-A11)
PSDATA .SET 3D0H ;PROCESS STACK DATA (PC, A8-A11)
PRCSIZ .SET 5A0H ;END OF DATA STRUCTURE
*ENDSTRUCT
NPROC .SET 240 ;NUMBER OF PROCESSES ;240 FOR SMASH
*GSP MACROS
*SUBTRACT REGISTER FROM MEMORY
* SUBRM REG,ADDR,FIELD SIZE
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
*
SUBRM $MACRO P1,P2,P3
MOVE :P2:,A14,:P3:
SUB :P1:,A14
MOVE A14,:P2:,:P3:
$END
*ADD REGISTER TO MEMORY
* ADDRM REG,ADDR,FIELD SIZE
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
*
ADDRM $MACRO P1,P2,P3
MOVE :P2:,A14,:P3:
ADD :P1:,A14
MOVE A14,:P2:,:P3:
$END
*INCREMENT LOCATION
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
**
INCW $MACRO P1
MOVE :P1:,A14
INC A14
MOVE A14,:P1:
$END
*DECREMENT WORD
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
DECW $MACRO P1
MOVE :P1:,A14
DEC A14
MOVE A14,:P1:
$END
*INCREMENT MEMORY
* INCM ADDR,FIELD SIZE
*A14 DESTROYED
INCM $MACRO P1,P2
MOVE :P1:,A14,:P2:
INC A14
MOVE A14,:P1:,:P2:
$END
*DECREMENT MEMORY
* DECM ADDR,FIELD SIZE
*A14 DESTROYED
DECM $MACRO P1,P2
MOVE :P1:,A14,:P2:
DEC A14
MOVE A14,:P1:,:P2:
$END
*SUBTRACT MEMORY
* SUBM ADDR,REG,FIELD SIZE
*SUBTRACTS ADDRESS FROM REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SUBM $MACRO P1,P2,P3
MOVE :P1:,A14,:P3:
SUB A14,:P2:
$END
*ADD MEMORY
* ADDM ADDR,REG,FIELD SIZE
*ADDS ADDRESS FROM REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
ADDM $MACRO P1,P2,P3
MOVE :P1:,A14,:P3:
ADD A14,:P2:
$END
*NEGATE MEMORY
* NEGM ADDR,FIELD SIZE
*NEGATES ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
NEGM $MACRO P1,P2
MOVE :P1:,A14,:P2:
NEG A14
MOVE A14,:P1:,:P2:
$END
*COMPARE MEMORY
* CMPM ADDR,REG,FIELD SIZE
*COMPARES ADDRESS TO REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
CMPM $MACRO P1,P2,P3
MOVE :P1:,A14,:P3:
CMP A14,:P2:
$END
*CLEAR MEMORY
* CLRM ADDR,FIELD SIZE
*CLEARS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
CLRM $MACRO P1,P2
CLR A14
MOVE A14,:P1:,:P2:
$END
*COMPLEMENT MEMORY
* COMM ADDR,FIELD SIZE
*COMPLEMENTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
COMM $MACRO P1,P2
MOVE :P1:,A14,:P2:
NOT A14
MOVE A14,:P1:,:P2:
$END
*SHIFT LEFT MEMORY
* SLLM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SLLM $MACRO P1,P2,P3
MOVE :P2:,A14,:P3:
SLL :P1:,A14
MOVE A14,:P2:,:P3:
$END
*SHIFT RIGHT ARITHMETIC MEMORY
* SRAM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SRAM $MACRO P1,P2,P3
MOVE :P2:,A14,:P3:
SEXT A14,:P3:
SRA :P1:,A14
MOVE A14,:P2:,:P3:
$END
*SHIFT RIGHT LOGICAL MEMORY
* SRLM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SRLM $MACRO P1,P2,P3
MOVE :P2:,A14,:P3:
ZEXT A14,:P3:
SRL :P1:,A14
MOVE A14,:P2:,:P3:
$END
*BIT SET
* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN
* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY
BSET $MACRO P1,R1
MOVK 1,A14
SLL :P1:,A14
OR A14,:R1:
$END
*BIT CLR
* BCLR BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO CLR BIT IN
* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY
BCLR $MACRO P1,R1
MOVK 1,A14
SLL :P1:,A14
ANDN A14,:R1:
$END
*SET THE Z BIT
* SETZ
* STATUS BITS:
* N Unaffected
* C Unaffected
* Z 1
* V Unaffected
* NOTE: A14 IS CLEARED
SETZ $MACRO
CLR A14
$END
*CLR THE Z BIT
* CLRZ
* STATUS BITS:
* N Unaffected
* C Unaffected
* Z 0
* V Unaffected
* NOTE: A14 IS SET TO 1
CLRZ $MACRO
CLR A14
NOT A14
$END
*PROCESS SLEEP CONSTANT
*A=SLEEP TIME CONSTANT 1-FFFF LOADED INTO A0
*RET ADDR ON STACK
SLEEP $macro A
movi :A:,a0
calla PRCSLP
$end
SLEEPK $macro A
movk :A:,a0
calla PRCSLP
$end
*PROCESS SLEEP REGISTER
*REG1=REGISTER THAT CONTAINS SLEEP TIME 1-FFFF LOADED INTO A0
*RET ADDR ON STACK
SLEEPR $MACRO REG1
MOVE :REG1:,A0
CALLA PRCSLP
$END
*PROCESS LOOP SLEEP
*P1=SLEEP TIME -->A0, P2=WAKEUP ADDR-->A7
SLOOP $MACRO P1,P2
$IF P1 < 33
MOVK :P1:,A0
$ELSE
MOVI :P1:,A0
$ENDIF
MOVI :P2:,A7,L
JAUC PRCLSP
$END
*PROCESS LOOP SLEEP REGISTER
*P1=REGISTER CONTAINING SLEEP TIME 1-FFFF, P2 =WAKEUP ADDR-->A7
SLOOPR $MACRO P1,P2
MOVE :P1:,A0
MOVI :P2:,A7,L
JAUC PRCLSP
$END
*PROCESS CREATION MACRO
*P1=ID-->A1, P2=PC-->A7
CREATE $macro p1,p2
movi :p1:,a1
movi :p2:,a7,L
calla GETPRC
$end
*PROCESS CREATION MACRO
*A=PC-->A7
CREATE0 $macro A
clr a1
movi :A:,a7,L
calla GETPRC
$end
*KILL PROCESS(ES)
*P1=ID-->A0,P2=MASK-->A1
KILLIT $MACRO P1,P2
MOVI :P1:,A0
MOVI :P2:,A1
CALLA KILALL
$END
*CALL IT QUITS
DIE $MACRO
JAUC SUCIDE
$END
*PROCESS JUMP SUBROUTINE
*P1=ADDRESS OF SLEEPING PROCESS
*A7 IS USED FOR PC STORAGE
JSRP $MACRO P1
GETPC A7
ADDI 060h,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JAUC :P1:
$END
*PROCESS JUMP SUBROUTINE ON REGISTER
*R1=REGISTER CONTAINING ADDRESS OF SLEEPING PROCESS
*A7 IS USED FOR PC STORAGE
JSRPR $MACRO R1
GETPC A7
ADDI 040h,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JUMP :R1:
$END
*RETURN FROM SLEEPING SUBROUTINE
*A7 IS USED FOR PC STORAGE
*STATUS REGISTER IS NOT AFFECTED
RETP $MACRO
MMFM A12,A7 ;PULL RETURN ADDR, W/O ZAPPING STAT
EXGPC A7
$END
*FIND MATCHING PROCESS(ES), BRANCH IF ONE WAS FOUND
*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL
MATCHP $MACRO P1,P2,P3
MOVI :P1:,A0
MOVI :P2:,A1
CALLA EXISTP
JANZ :P3:
$END
*FIND MATCHING PROCESS(ES), BRANCH IF NONE WERE FOUND
*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL
NOMATCHP $MACRO P1,P2,P3
MOVI :P1:,A0
MOVI :P2:,A1
CALLA EXISTP
JAZ :P3:
$END
*PUSH REGISTER(S) ONTO THE STACK
*USAGE: ONE OPERAND -> PUSH OP 2 OR MORE OPS -> PUSH (OP1,OP2,...,OPN)
PUSH $MACRO REG
MOVE :REG:,-*SP,1
$END
*PULL REGISTER(S) OFF OF THE STACK
*USAGE: ONE REGISTER -> PULL REG 2 OR MORE REGS -> PULL (REG1,REG2,...,REGN)
PULL $MACRO REG
MMFM SP,:REG:
$END
*PUSH REGISTER ONTO THE PROCESS STACK
*USAGE: ONE OPERAND -> PUSH REG
PUSHP $MACRO REG
MOVE :REG:,-*A12,L
$END
*PULL REGISTER(S) OFF OF THE PROCESS STACK
*USAGE: ONE REGISTER -> PULL REG
PULLP $MACRO REG
MMFM A12,:REG:
$END
*PUSH LOW WORD OF REGISTER ON TO STACK
*ONE REGISTER ONLY!
*USAGE: PUSHW REG
PUSHW $MACRO REG
MOVE :REG:,-*SP,0
$END
*PULL LOW WORD OF REGISTER OFF OF STACK
*ONE REGISTER ONLY!
*USAGE: PULLW REG
PULLW $MACRO REG
MOVE *SP+,:REG:,0
$END
*NULL LONG WORD
LONGNULL:$MACRO
.LONG 0
$END
*LOCKUP MACRO
LOCKUP $MACRO
DINT
JRUC $
$END


1691
BACKUP/NDSP1.ASM Normal file

File diff suppressed because it is too large Load Diff

6279
BACKUP/NEWHULK.ASM Normal file

File diff suppressed because it is too large Load Diff

1205
BACKUP/PALL.ASM Normal file

File diff suppressed because it is too large Load Diff

565
BACKUP/PALSTUFF.ASM Normal file
View File

@ -0,0 +1,565 @@
**************************************************************
*
* INITIATED: APRIL 13,1989
* SOFTWARE: MARK TURMELL
*
* MODIFIED: Shawn Liptak, 7/23/91 -New FADEIN/OUT
* Shawn Liptak, 7/28/91 -Merged with fbstuff
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.TITLE 'PALSTUFF.ASM'
.FILE 'PALETTE FADER CONTROL'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "BGNDTBL.GLO"
.INCLUDE "IMGTBL.GLO"
.INCLUDE "GAME.EQU"
.include "shawn.hdr" ;Macros
;SYMBOLS EXTERNALLY DEFINED
.REF GETFPAL,PALSET,UNGETPAL,DELPAL,FINDPAL,RANGRAND
.REF IRQSKYE,REACTR,RANDPER
.REF PALSET,PALRAM,EXP2
;SYMBOLS DEFINED IN THIS FILE
.DEF PUMP_RED,COUNT,PUMP_CLDS
.DEF BLAKOUT
.DEF FB_FADEOUT,FB_FADEIN
;EQUATES FIRST ORIGINATED IN THIS FILE
FPALNUM .equ 8
FPALSZ .equ 65*16
;UNINITIALIZED RAM DEFINITIONS
.BSS FADERAM ,FPALSZ*FPALNUM ;Fade mem for palettes
.BSS COUNT ,16
.BSS KPBASE ,32
.bss irqskyeo,16 ;Orignal autoerase color
********************************
* BLAKOUT - BLACK OUT SELECTED PALETTE
* A0=NAME OF PALETTE TO BLACK OUT
BLAKOUT
CALLA FINDPAL
SLL 8,A0
MOVE A0,A1
JRZ NOTALLOC
MOVI FADERAM,A0
MOVI 128,A3
CLR A2
CLRBLP MOVE A2,*A0+,L
DSJS A3,CLRBLP
MOVI FADERAM,A0 ;NOW BLACK OUT PALETTE
MOVI 256,A2
CALLA PALSET ;ERASE PALETTE SLOT
NOTALLOC
RETS
********************************
* CLOUDS BEHIND REPORTER
* PUMP_RED PROCESS
* CYCLE NUCLEAR REACTORS
PUMP_CLDS
SLEEP 3
MOVI EXP2,A0
CALLA ONESND
MOVI CLDSZ,A0
MOVE A0,@KPBASE,L
CALLA FINDPAL
JRZ CREDOUT
SLL 8,A0
MOVE A0,A11 ;NEEDED LATER FOR PALSET
MOVK 7,A10 ;PUMP RED A10 TIMES
MOVI 128,A8
CEDLOOP MOVI FADERAM,A0
ADDK 20H,A8
CALLR DO_MULT
SLEEP 1
DSJ A10,CEDLOOP
CREDOUT
MOVK 7,A10 ;PUMP RED A10 TIMES
CRED2 MOVI FADERAM,A0
SUBI 20H,A8
CALLR DO_MULT
SLEEP 1
DSJ A10,CRED2
MOVI 700,A0
CALLA RANDPER
JRNC PUMP_CLDS
MOVK 10,B0
MOVI 3*60,B1
CALLA RANGRAND
CALLA PRCSLP
JRUC PUMP_CLDS
********************************
* PUMP_RED PROCESS, CYCLE NUCLEAR REACTORS
PUMP_RED
SLEEP 18H
MOVI REACTR,A0
MOVE A0,@KPBASE,L
CALLA FINDPAL
JRZ REDOUT
SLL 8,A0
MOVE A0,A11 ;NEEDED LATER FOR PALSET
MOVI 25,A10 ;PUMP RED A10 TIMES
MOVI 128,A8
REDLOOP MOVI FADERAM,A0
ADDK 10H,A8
CALLR DO_MULT
SLEEP 1
DSJ A10,REDLOOP
REDOUT
MOVK 25,A10 ;PUMP RED A10 TIMES
RED2 MOVI FADERAM,A0
SUBI 10H,A8
CALLR DO_MULT
SLEEP 1
DSJ A10,RED2
JRUC PUMP_RED
DO_MULT
MOVE A8,A2
MMTM SP,A8,A10,A11
; ADDI 32,A0 ;GET TO FIRST COLOR PAST 0
; MOVI 63,A9
;NEXCLR MOVE *A0,A1,W
; ZEXT A1,W
; SRL 10,A1 ;GET RED BITS
MOVE @KPBASE,A1,L ;REACTR,A1
;PARAMS
; A0 - DEST RAM FOR PAL
; A1 - SRC FOR PAL
; A2 - COLOR MULTIPLIER
; EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN DIVIDED BY 128
; MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14
MOVE *A1+,A14,W
MOVE A14,*A0+,W
SLL 23,A14 ;TOP BITS OF FIELD ARE FLAGS
SRL 23,A14 ;ONLY 9 BITS NEEDED FOR # COLORS
MOVI >7C00,A4 ;A4 - PRE MULT MASK FOR 5 BITS OF RED
; MOVI >03E0,A6 ;A6 - PRE MULT MASK FOR 5 BITS OF GREEN
; MOVI >001F,A8 ;A8 - PRE MULT MASK FOR 5 BITS OF BLUE
MOVE A4,A9
; MOVE A6,A10
; MOVE A8,A11
SLL 7,A9 ; A9 - POST MULT MAX FOR 5 BITS OF RED
; SLL 7,A10 ;A10 - POST MULT MAX FOR 5 BITS OF GREEN
; SLL 7,A11 ;A11 - POST MULT MAX FOR 5 BITS OF BLUE
FADELPR:
MOVE *A1+,A3,W ;A3 - RED
MOVE A3,A5
ANDI 03FFH,A5
; MOVE A3,A5 ;A5 - GREEN
; MOVE A3,A7 ;A7 - BLUE
AND A4,A3
CMPI 1001H,A3
JRC REDOKR
; AND A6,A5
; AND A8,A7
MPYU A2,A3
; MPYU A2,A5
; MPYU A2,A7
CMP A9,A3
JRLE REDOKR
MOVE A9,A3
REDOKR:
; CMP A10,A5
; JRLE GREENOK
; MOVE A10,A5
;GREENOK:
; CMP A11,A7
; JRLE BLUEOK
; MOVE A11,A7
;BLUEOK:
AND A9,A3
SRL 7,A3
; AND A10,A5
OR A5,A3
; OR A7,A3
; SRL 7,A3
MOVE A3,*A0+,W
DSJS A14,FADELPR
; MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14
; RETS
; CMPI 31,A1
; JRZ ROUT
; CMPI 6,A1
; JRC ROUT
; INC A1
; SLL 10,A1
; MOVE *A0,A2,W
; ANDI 03FFH,A2
; OR A1,A2
; MOVE A2,*A0,W
;ROUT ADDI 16,A0
; DSJS A9,NEXCLR
*SETUP PALETTE TRANSFER
*CALLING PARAMETERS:
*A0= PALSRC = 32 BIT SOURCE ADDRESS OF PALETTE COLOR DATA
*A1= PALDEST = BIT 8-15 DESTINATION PALETTE | BIT 0-7 START COLOR
*A2= PLDCNT = 16 BIT COLOR COUNT
*RETURNS: EQ IF UNABLE TO SETUP TRANSFER, NE IF TRANSFER O.K.
MMFM SP,A8,A10,A11
MOVI FADERAM,A0
MOVE A11,A1
MOVE *A0+,A2
CALLA PALSET
RETS
********************************
* FADEIN - Fade in all selected palettes from black
*
* A0=*Palette list to fade in (autoerase + 0-8 pals)
* A1=Fade delay in ticks
* If 1st entry not neg then it enables autoerase fading
SUBR FADEIN
move a0,a9 ;A9=*Palette list
move a1,a10 ;A10=Fade delay
CREATE 0,fadein
rets
fadein
move a13,a6
addi PDATA,a6
movk FPALNUM,a7
move a9,a11
move *a11+,a0,L ;!-=Autoerase color
jrn fi30
move a0,@irqskyeo ;Save color
fi20 move *a11+,a0,L ;Get * palette
jrz fi70 ;0=End
fi30 calla FINDPAL
jrz fi60
not a0 ;Make neg
fi60 sll 8,a0
move a0,*a6+ ;Save palette #
dsj a7,fi20
fi70 clr a8 ;A8=Brightness
fi100 addk 8,a8
movi FADERAM,a5
move a13,a6
addi PDATA,a6
movk FPALNUM,a7
move a9,a11
move *a11,a1,L
jrn fi200
addk 32,a11
move a8,a2
callr FADEPALAE
fi200 move *a11+,a1,L
jrz fi400
move a5,a0
move a8,a2
callr FADEPAL
move a5,a0 ;*Palette colors
move *a6+,a1 ;Palette #
cmpi -256,a1 ;FF00
jrz fi230
move *a0+,a2 ;#Colors
calla PALSET
fi230 addi FPALSZ,a5
dsj a7,fi200
fi400 move a10,a0
calla PRCSLP
cmpi 128,a8
jrlo fi100
fi800 DIE
********************************
* FADEOUT - Fade out all selected palettes to black
*
* A0=*Palette list to fade out (autoerase + 0-8 pals)
* A1=Fade delay in ticks
* If 1st entry not neg then it enables autoerase fading
SUBR FADEOUT
clr a10
move a10,@COUNT
SUBR FADEOUT2
move a0,a9 ;A9=*Palette list
move a1,a10 ;A10=Fade delay
CREATE 0,fadeout
rets
fadeout
move a13,a6
addi PDATA,a6
movk FPALNUM,a7
move a9,a11
move *a11+,a0,L ;!-=Autoerase color
jrn fo30
move @IRQSKYE,a0 ;Save color
move a0,@irqskyeo
fo20 move *a11+,a0,L ;Get * palette
jrz fo70 ;0=End
fo30 calla FINDPAL
jrnz fo60
not a0 ;Make neg
fo60 sll 8,a0
move a0,*a6+ ;Save palette #
dsj a7,fo20
fo70 movi 128,a8 ;A8=Brightness
fo100 subk 8,a8
movi FADERAM,a5
move a13,a6
addi PDATA,a6
movk FPALNUM,a7
move a9,a11
move *a11,a1,L
jrn fo200
addk 32,a11
move a8,a2
callr FADEPALAE
fo200 move *a11+,a1,L
jrz fo400
move a5,a0
move a8,a2
callr FADEPAL
move a5,a0 ;*Palette colors
move *a6+,a1 ;Palette #
cmpi -256,a1 ;FF00
jrz fo230
move *a0+,a2 ;#Colors
calla PALSET
fo230 addi FPALSZ,a5
dsj a7,fo200
fo400 move a10,a0
calla PRCSLP
move @COUNT,a0
cmp a0,a8
jrgt fo100
fo800 DIE
********************************
* Fade autoerase color
SUBRP FADEPALAE ;A2=Brightness (0-128)
PUSH a3,a4,a5,a6,a7,a8,a9,a10,a11
movi IRQSKYE,a0
movi irqskyeo,a1
movk 1,a14
jruc fp20
********************************
* Fade a palette
* Each color in palette will be multiplied by a2 then divided by 128
* A0=*Ram for pal, A1=*Palette, A2=Brightness (0-128)
SUBRP FADEPAL
PUSH a3,a4,a5,a6,a7,a8,a9,a10,a11
move *a1+,a14 ;# Colors
move a14,*a0+
fp20 sll 23,a14 ;Remove any flags
srl 23,a14 ;9 bits needed for # colors
movi >7c00,a4 ;A4=Mask for 5 bits of red
movi >03e0,a6 ;A6=Mask for 5 bits of green
movk >1f,a8 ;A8=Mask for 5 bits of blue
move a4,a9
move a6,a10
move a8,a11
sll 7,a9 ;A9=post mult max for 5 bits of red
sll 7,a10 ;A10=post mult max for 5 bits of green
sll 7,a11 ;A11=post mult max for 5 bits of blue
fp100 move *a1+,a3
move a3,a5 ;A3=Red
move a3,a7 ;A5=Green
and a4,a3 ;A7=Blue
and a6,a5
and a8,a7
mpyu a2,a3
mpyu a2,a5
mpyu a2,a7
cmp a9,a3
jrle redok
move a9,a3
redok cmp a10,a5
jrle greenok
move a10,a5
greenok cmp a11,a7
jrle blueok
move a11,a7
blueok and a9,a3
and a10,a5
or a5,a3
or a7,a3
srl 7,a3
move a3,*a0+ ;Save color
dsj a14,fp100
PULL a3,a4,a5,a6,a7,a8,a9,a10,a11
rets
**************************************************************************
* FADEIN - Fade a list of palettes from black to their current colors
* A0=*List NOT to fade or 0
FB_FADEIN
mmtm sp,a0,a1,a2,a6,a7,a8,a9,a10
movk 8,a10
jruc fbf10
**************************************************************************
* FADEOUT - Fade a list of palettes down to black
* A0=*List NOT to fade or 0
FB_FADEOUT
mmtm sp,a0,a1,a2,a6,a7,a8,a9,a10
movi -8,a10
fbf10 move a0,a6
;Start proc to fade each palette
clr a9 ;palette slot
movi PALRAM,A2 ;A2=*Palette table
fbf20 move *A2(PALCNT),A1 ;Is palette allocated?
jrz fbf70
move *A2(PALID),A8,L ;Ptr to palette
move A6,A7 ;A6=*List of palettes to skip
jrz fbf60
fbf50 move *A7+,A1,L
jrz fbf60
cmp A1,A8
jreq fbf70 ;Skip pal?
jruc fbf50
fbf60 CREATE 0,fadeonep
fbf70 addi PALRSIZ,A2
addk 1,a9
cmpi NUMPAL,A9
jrlt fbf20
fbfx mmfm sp,a0,a1,a2,a6,a7,a8,a9,a10
rets
**************************************************************************
* fadeonep - Fade one palette (Process)
*
* A8=*Palette to be faded
* A9=Palette slot #
* A10=Add value per fade (!0)
fadeonep
sll 24,a9 ;B8-15 dest pal | B0-7 start color
srl 16,a9
.if YUNIT
move a9,a2
srl 12,a2
sll 14,a2
sll 20,a9
srl 20,a9
add a2,a9
.endif
clr a11 ;For up fade
move a10,a10
jrgt fop20
movi 128,a11 ;For dn fade
fop20
;Set up faded pal in process data space
foplp add a10,a11
cmpi 128,a11
jrhi fopx
move a11,a2 ;A2=Color Multiplier
move a13,a0
addi PDATA,a0 ;A0=Dest Ram for Pal
move a0,a5
move a8,a1 ;A1=Src for Pal
callr FADEPAL
move a5,a0 ;>Move faded palette to palram
move a9,a1
move *a0+,a2 ;Get # colors in palette
calla PALSET ;Set transfer
SLEEP 2
jruc foplp
fopx SLEEP 1 ;give last xfer a chance to go
DIE
.end


168
BACKUP/PATCH.ASM Normal file
View File

@ -0,0 +1,168 @@
.INCLUDE "\VIDEO\sys\gsp.inc"
.globl TVPATCH,TVPATCHX
.globl TVBP,TVBPX
.globl SAVESCR
; .BSS OLDAUTOE,16,1
; .BSS OLDDSPON,16,1
.ref SYNCHALF,AUTOEOFF,DMAQWAIT
.ref NOAUTOE,DISPLAYON
.text
.even
OLDAUTOE: .word 0
OLDDSPON: .word 1
OLDINTEN: .word 0
SAVESCR: .word 0
TVBP:
mmtm SP,A0
MOVE @INTENB,A0,0 ;DISABLE ROM PROTECT INTERRUPT (ext2)
move A0,@OLDINTEN,0
ANDNI X2E,A0
ORI DIE,A0
MOVE A0,@INTENB,0
MOVE @SAVESCR,A0,0
jrz SkSave
PUSHST
EINT
CALLA SYNCHALF
MOVE @NOAUTOE,@OLDAUTOE,0
MOVK 1,A0
MOVE A0,@NOAUTOE,0
CALLA AUTOEOFF ;SHUT OFF AUTO-ERASE
MOVE @DISPLAYON,@OLDDSPON,0
CLR A0
MOVE A0,@DISPLAYON,0
CALLA DMAQWAIT ;BLOW OUT THE QUEUE'D IMAGES
POPST
SkSave:
mmfm SP,A0
rets
TVBPX:
mmtm SP,A0
MOVE @SAVESCR,A0,0
jrz SkUnSave
MOVE @OLDAUTOE,@NOAUTOE,0
MOVE @OLDDSPON,@DISPLAYON,0
SkUnSave:
; MOVE @INTENB,A0,0 ;ENABLE ROM PROTECT INTERRUPT (ext2)
move @OLDINTEN,A0,0
ORI X2E,A0
MOVE A0,@INTENB,0
MOVE @INTPEND,A0,0 ;Clear any pending X2E
ANDNI X2E,A0
ANDNI DIE,A0
MOVE A0,@INTPEND,0
mmfm SP,A0
rets
TVPATCH:
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
TVPATCHX:


5562
BACKUP/RACK2.ASM Normal file

File diff suppressed because it is too large Load Diff

58
BACKUP/RACKSCOR.ASM Normal file
View File

@ -0,0 +1,58 @@
;
;
;
CREATE DG1PID,BCDASC ;DRAW NEW TOTAL SCORE
LR_SIDE:
.LONG [01F8H,0FE8EH],[01F8H,0FF54H] ;FOR TOTAL SCORE STRING
BCDASC
;A10=0 OR 1
;TAKE PLAYER SCORES, CONVERT TO ASC STRING FOR OUTPUT TO SCREEN
MOVI P2DATA,A9
CMPI 1,A10
JRZ AP1
MOVI P1DATA,A9
AP1
CLR A2 ;RUNNING SCORE IN HEX
CLR A3 ;INDEX INTO DEC VALUE FOR ADD
MOVK 8,A5
MOVE *A9(PSCORE),A0,L
CALLA BCDBIN
MOVE A0,A8
PUSH A10
ADDI 40H,A10 ;A10 NOW = 40 OR 41
MOVE A10,A0
CLR A1
NOT A1
CALLA KILOBJ ;KILL SCORE DIGITS FOR THIS PLAYER
PULL A10 ;A10= 0 OR 1 NOW
CALLA HEXTOASC ;CREATE STRING FOR BONUS SCORE
MOVE @WORLDTL,A9,L ;[Y,X] PACKED WORLD COOR
MOVE A10,A0
SLL 5,A0
ADDI LR_SIDE,A0 ;GET LEFT/RIGHT POSITION FOR PLYR 1/2
MOVE *A0,A1,L
ADD A1,A9
MOVI 02525H,A6 ;COLOR CYCLE DIGITS
;A8 GOTTEN FROM HEXTOASC
MOVI RD15FONT,A11 ;FONT TABLE
MOVK 1,A0 ;ADJUST FOR WORLD
MOVE A0,@WRLD
ADDI 40H,A10 ;TELL DIGITS TO USE 40 OR 41 OID
MOVB A10,@MYID ;FOR PLYR 1 OR 2
CLR A0
MOVI [0,2],A10 ;Y,X SPACING BETWEEN CHARCTERS
JSRP STRCNRMO ;PRINT STRING, NO OBJECTS
CLR A0
MOVB A0,@MYID ;RESET TEXT OID VALUE
DIE


5605
BACKUP/RACKUP.ASM Normal file

File diff suppressed because it is too large Load Diff

81
BACKUP/RAM.ASM Normal file
View File

@ -0,0 +1,81 @@
.FILE 'RAM.ASM'
.TITLE "RAM DEFINITIONS"
**************************************************************************
* *
* COPYRIGHT (C) 1988 WILLIAMS ELECTRONICS GAMES, INC. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
.OPTION B,D,L,T
*
*GLOBALS IN THIS FILE
*RAM EQUATES
.GLOBAL BBACTIVE,BBFREE,BACKSLST,NOAUTOE,RAND,SWSTACK,SWTEMP1
.GLOBAL SWTEMP2,SWSTMN,SWSTST,SYSCOPY,INTSYNC0,INTSYNC1
.GLOBAL PALRAM,FPALRAM,BPALRAM,PTRRAM,CURPAL,COLRTEMP
.GLOBAL COLRTEND,IRQSKYE,P1DATA,P2DATA,PCNT
.GLOBAL GAMSTATE,SOUNDSUP,GAMERASE,WAVE
.GLOBAL P1CTRL,P2CTRL
; EXTERNAL
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "GAME.EQU"
.SECT "NFIXED" ;MISC. LIST FIXED AREA
BBACTIVE .LONG 0
BBFREE .LONG 0
*SUPPLEMENTAL LIST HEADERS (MAKE SURE YOU ZERO THESE IN MYOINIT)
BACKSLST .LONG 0
.LONG 0
.LONG 0
.LONG 0
.LONG 0
.LONG 0
.LONG 0
.LONG 0
.EVEN
.BSS PCNT,16 ;FRAME COUNTER
.BSS NOAUTOE,16 ;TURN AUTO ERASE OFF FOR DEBUG
.BSS RAND,32
.BSS SWSTACK,32 ;STACKED SWITCHES
.BSS SWTEMP1,32
.BSS SWTEMP2,32
.BSS SWSTMN,256 ;BOTTOM OF STACK
.BSS SWSTST,0 ;START SWITCH STACK
.BSS SYSCOPY,16 ;RAM COPY OF SYSCTRL LATCH
.BSS INTSYNC0,16 ;HALF SCREEN INTERRUPT SYNCHRO.\ __ KEEP THESE
.BSS INTSYNC1,16 ;FULL SCREEN INTERRUPT SYNCHRO./ TOGETHER.
.BSS PALRAM,0 ;PALETTE ALLOCATOR RAM
.BSS FPALRAM,PALRSIZ*NMFPAL
.BSS BPALRAM,PALRSIZ*NMBPAL
.BSS PTRRAM,PTRSIZ*NUMPTR
.BSS CURPAL,16 ;CURRENT PALETTE FOR STUFOBJ TO USE
.BSS SKYCOLOR,16 ;CURRENT FULL BRIGHTNESS SKY COLOR VALUE
.BSS IRQSKYE,16 ;ACTUAL SKY COLOR (AUTOERASE)
.BSS P1DATA,PDSIZE ;PLAYER ONE DATA
.BSS P2DATA,PDSIZE ;PLAYER TWO DATA
.BSS GAMSTATE,16 ;GAME STATE VARIABLE : 10 = INGAME
; 18 = ININTRO
; 20 = INPLAY
; 30 = INAMODE
; 40 = INDIAG
.BSS P1CTRL,16 ;PLAYER 1 CONTROL BITS
.BSS P2CTRL,16 ;PLAYER 2 CONTROL BITS
.BSS WAVE,16 ;WAVE CURRENTLY BEING PLAYED
.BSS SOUNDSUP,16 ;IF<>1 THEN NO SOUNDS SHALL BE MADE
.BSS GAMERASE,16 ;0 = NO GAME AUTOERASE SCHEME
;1 = GAME AUTOERASE, OFF AT SCREEN END.
;2 = GAME AUTOERASE, OFF AT MID-SCREEN.
.END


3833
BACKUP/RBOSS.ASM Normal file

File diff suppressed because it is too large Load Diff

2335
BACKUP/ROBOATT.ASM Normal file

File diff suppressed because it is too large Load Diff

881
BACKUP/SCORE.ASM Normal file
View File

@ -0,0 +1,881 @@
.FILE 'SCORE.ASM'
.TITLE 'SCORE STUFF'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
;
; INITIATED: JULY 17,1990
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROCESSOR EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;ZUNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS, YEAH!
.INCLUDE "IMGTBL.GLO"
.INCLUDE "GAME.EQU"
.INCLUDE "LINK.EQU"
;
;SOUNDS
;
.REF FREEMAN,CNTDOWN,CNTDWN2
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF P1DATA,P2DATA,DMAQCUR,STATUS,QDMAFLG,DMAQ,CCCC,GET_CREDITS
.REF AUD1,GETFPAL
.REF AUTOEOFF,DMAWAIT,GAMERASE,CYCSPECT
.REF FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157
.REF FON158,FON159
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF DRAW_SCORE,SCORE_FLAG,INIT_SCORE,BCDADD,SCORETYP,DMA_SCORE
.DEF SCRADD2,CNTDIG1,CNTDIG2,MSG_PROC2,STUFF_LVADDR,ONARRW,ARWOFF
.DEF DO_EXTRA
;
;UNINITIALIZED RAM DEFINITIONS
;
.BSS SCORETYP,16
.BSS SCORE_FLAG,16
.BSS CNTDIG1,16
.BSS CNTDIG2,16
.BSS ARWOFF,16 ;CNT DWN TO KILL ARROW OFF
;
;EQUATES FIRST ORIGINATED IN THIS FILE
;
SCRSPC .EQU 8 ;SPACER FOR DIGITS (INCLUDING DIGIT)
BPDMA1 .EQU 01
BPDMA2 .EQU 02
MSGSLP .EQU 0CH ;TIME FOR SCORE
MSGSLP2 .EQU 20H ;TIME FOR TEXT ON SCORE BOARD
**************************************************************************
.TEXT
DO_EXTRA:
;EXTRA MAN
;A2 = P1DATA OR P2DATA
MMTM SP,A11
MOVE A2,A11
MOVE *A2(TEARNED),A4 ;BUMP STATISTIC OF MEN EARNED
INC A4
MOVE A4,*A2(TEARNED)
MOVE *A2(PLIVES),A4
INC A4
MOVE A4,*A2(PLIVES)
CALLR STUFF_LVADDR
MOVI FREEMAN,A0 ;SPEECH CALL
CALLA ONESND
MOVI AUDEXTRA,A0
CALLA AUD1
MMFM SP,A11
RETS
LVS_TBL .LONG LV0,LV1,LV2,LV3,LV4,LV5,LV6,LV7,LV8,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
.LONG LV9,LV9,LV9,LV9,LV9
MSG_PROC2:
;BOTH PLAYERS ARE PLAYING!
;CHANGE MESSAGE ON HIS SCOREBOARD/PLUS STILL SHOW PLAYER SCORE!
;COLOR CYCLE IT
SLEEP 90
CREATE 0,CNTDWN
JRUC DO_TXT
;
; MSG_PROC - ALTERNATE BETWEEN PRESS START OR INSERT COIN AND OLD SCORE
; A11 = PTR TO PLAYER DATA STRUCTURE
;
MSG_PROC:
PRESSLP:
CMPI P2DATA,A11
JRZ PMSG2
;PLAYER 1 MESSAGE
;PUT P1 SCORE AND LIVES ON SCRN
MOVE @SCORETYP,A0,W ;TURN ON PLAYER 1 SCORE
ORI 1,A0
MOVE A0,@SCORETYP,W
JRUC DOSCRE1
PMSG2:
;PUT P1 STUFF UP
MOVE @SCORETYP,A0,W ;TURN ON PLAYER 2 SCORE
ORI 2,A0
MOVE A0,@SCORETYP,W
DOSCRE1:
;LEAVE SCORE UP FOR THIS LONG
MOVI MSGSLP,A9
WLUP1:
SLEEP 4
DSJS A9,WLUP1
DO_TXT:
MOVI MSGSLP2,A9
CMPI P2DATA,A11
JRZ P2OFF
;P1
MOVE @SCORETYP,A0,W ;TURN OFF PLAYER 1 SCORE
ANDI 0FFFEH,A0
MOVE A0,@SCORETYP,W
JRUC WLUP2
P2OFF
;P2
MOVE @SCORETYP,A0,W ;TURN OFF PLAYER 1 SCORE
ANDI 0FFFDH,A0
MOVE A0,@SCORETYP,W
;LEAVE TEXT MESSAGE UP FOR THIS LONG
WLUP2:
CALLA CCCC ;MAKE SURE THINGS ARE INTACT
CALLA GET_CREDITS ;GET CURRENT CREDITS
JRNZ YES ;YES CREDITS EXIST
;NO CREDITS, STUFF INSERT COIN MESSAGE INTO P1/P2DATA AREAS
MOVI INSERT,A0
MOVE A0,@P1DATA+MESSAGE,L
MOVE A0,@P2DATA+MESSAGE,L
JRUC OUT
YES
MOVI PRESS,A0
MOVE A0,@P1DATA+MESSAGE,L
MOVE A0,@P2DATA+MESSAGE,L
OUT
SLEEP 4
DSJ A9,WLUP2
JRUC MSG_PROC
INIT_SCORE:
;TURN ON SCORE IMAGES
MOVI P1DATA,A11
MOVI [1AH,36H],A3 ;[1FH,38H],A3
MOVE A3,*A11(PSCRAD),L ;Y,X LOCATION OF SCORE 1
CALLR STUFF_LVADDR
MOVI P2DATA,A11
MOVI [1AH,14EH],A3 ;[1FH,150H],A3
MOVE A3,*A11(PSCRAD),L ;Y,X LOCATION OF SCORE 2
CALLR STUFF_LVADDR
CALLA FSCORE
MOVI PHD1,A2
MOVI 0120000H,A0
MOVI 0A0000H,A1
CALLR ONIT
;DRAW PLYR TWO SCORE PLATE
MOVI PHD2,A2
MOVI 012A0000H,A0
MOVI 0A0000H,A1
CALLR ONIT
;PLYR 1 LIVES
MOVE @P1DATA+PLIVES,A0
SLL 5,A0
ADDI LVS_TBL,A0
MOVE *A0,A2,L
MOVI 0360000H,A0
MOVI 0260000H,A1
CALLR ONIT
;PLYR 2 LIVES
MOVE @P2DATA+PLIVES,A0
SLL 5,A0
ADDI LVS_TBL,A0
MOVE *A0,A2,L
MOVI 14E0000H,A0
MOVI 0260000H,A1
CALLR ONIT
;PLYR 1 BOMBS
MOVE @P1DATA+BMB_CNT,A0
SLL 5,A0
ADDI BLST,A0
MOVE *A0,A2,L
MOVI 03F0000H,A0
MOVI 00E0000H,A1
CALLR ONIT
;PLYR 2 BOMBS
MOVE @P2DATA+BMB_CNT,A0
SLL 5,A0
ADDI BLST,A0
MOVE *A0,A2,L
MOVI 1570000H,A0
MOVI 00E0000H,A1
CALLR ONIT
;
;PLYR 1 THSTGS
MOVE @P1DATA+THSTGS,A6
SLL 4,A6
ADDI DECLST,A6
MOVE *A6,A2
MOVK 0FH,A1
AND A1,A2
SLL 7,A2
ADDI RRD0,A2
MOVI 5A0000H,A0
MOVI 260000H,A1
PUSH A6
CALLR EONIT
PULL A6
MOVE *A6,A2
MOVI 0F0H,A1
AND A1,A2
SLL 3,A2
ADDI RRD0,A2
MOVI 520000H,A0
MOVI 260000H,A1
PUSH A6
CALLR EONIT
PULL A6
MOVE *A6,A2
SRL 8,A2
JRZ SKP0
SLL 7,A2
ADDI RRD0,A2
MOVI 4A0000H,A0
MOVI 260000H,A1
CALLR EONIT
SKP0
;PLYR 2 THSTGS
MOVE @P2DATA+THSTGS,A6
SLL 4,A6
ADDI DECLST,A6
MOVE *A6,A2
MOVK 0FH,A1
AND A1,A2
SLL 7,A2
ADDI RRD0,A2
MOVI 1720000H,A0
MOVI 260000H,A1
PUSH A6
CALLR EONIT
PULL A6
MOVE *A6,A2
MOVI 0F0H,A1
AND A1,A2
SLL 3,A2
ADDI RRD0,A2
MOVI 16A0000H,A0
MOVI 260000H,A1
PUSH A6
CALLR EONIT
PULL A6
MOVE *A6,A2
SRL 8,A2
JRZ SKP1
SLL 7,A2
ADDI RRD0,A2
MOVI 1620000H,A0
MOVI 260000H,A1
CALLR EONIT
SKP1 RETS
STUFF_LVADDR
;STUFF ADDR OF LIVES LEFT IMAGE TO BE BLOWN OUT
;A11=P1/P2DATA
MOVE *A11(PLIVES),A4
CMPI 10,A4 ;NEVER 10 TO BE DISPLAYED!
JRGE EX1
SLL 5,A4
ADDI LVS_TBL,A4
MOVE *A4,A4,L
MOVE A4,*A11(LVADDR),L ;ADDRESS OF LIVES
EX1 RETS
ONIT:
MOVI 0120H,A3 ;241,A3 ;Z POS.
MOVI DMAWNZ|M_NOCOLL,A4 ;FLAGS
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A5 ;OBJ. ID
CLR A6 ;X VEL
CLR A7 ;Y VEL
CALLA BEGINOBJ ;CREATE OBJECT, WORLD ADJUSTED
RETS
EONIT:
MOVI 0120H,A3 ;241,A3 ;Z POS.
MOVI DMACNZ|M_NOCOLL,A4 ;FLAGS
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A5 ;OBJ. ID
CLR A6 ;X VEL
CLR A7 ;Y VEL
CALLA BEGINOBJ ;CREATE OBJECT, WORLD ADJUSTED
MOVI 3B3BH,A1
MOVE A1,*A8(OCONST),W
RETS
DMA_SCORE:
;START SCORE DIRECT DMA
MOVE @STATUS,A0
SRL 1,A0
JRC NOMSG1
MOVI P1PID,A0
CLR A1
NOT A1
CALLA KILALL
MOVI P1DATA,A11
CREATE P1PID,MSG_PROC
NOMSG1:
MOVE @STATUS,A0
SRL 2,A0
JRC NOMSG2
MOVI P2PID,A0
CLR A1
NOT A1
CALLA KILALL
MOVI P2DATA,A11
CREATE P2PID,MSG_PROC ;ALWAYS DISPLAY START STUFF IN ATTRACT
NOMSG2:
MOVK 1,A0
MOVE A0,@SCORE_FLAG ;1=SHOW DMA SCORE AREA ON SCREEN
CREATE 0,KILL_IMAGES
RETS
KILL_IMAGES
SLEEP 3
;KILL SCOREBOARD IMAGES
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A0
CLR A1
NOT A1
CALLA KILOBJ
DIE
ONARRW:
;TURN ON AN ARROW AND BLINK IT FOREVER UNTIL SOMEBODY ELSE KILLS IT
;A9=0 FOR UP ARROW, 1=RGT ARROW, 2=LFT ARROW
SLEEP 50
CLR A0
MOVE A0,@ARWOFF ;STUFF 1 INTO FLAG TO KILL OFF
MOVI STUFFP,A0
CALLA GETFPAL
MOVE A0,A8
SLL 5,A9
ADDI ARWLST,A9
;TURN ON PROPER ARROW
AON0 MOVI 01AH,A10
AON1 MOVE A8,A1
MOVE *A9,A14,L
MOVI 0600148H,A3
MOVE A13,-*SP,L
; CMPI ARWLST+64,A9
; JRNZ ANO2
; CALLR ABLOWP2
; JRUC ANO3
;ANO2
CALLR ABLOWP
;ANO3
MOVE *SP+,A13,L
SLEEP 1
DSJS A10,AON1
SLEEP 0FH
MOVE @ARWOFF,A0
JRZ AON0
DEC A0
MOVE A0,@ARWOFF
CMPI 1,A0
JRNZ AON0
DIE
ARWLST .LONG UPARRW,RGTARRW,LFTARRW
;
;DRAW_SCORE-UPDATE PLAYER 1 & 2 SCORE AREA
;
DRAW_SCORE:
;
;DRAW BOTH FACE PLATES
;
;DRAW PLYR ONE SCORE PLATE
MOVI PHD1,A14
MOVE @CNTDIG1,A6
JRZ NO_CNT
MOVI PHD2A,A14
MOVI 0A0012H,A3
CALLR BLOWOUT
;NOW BLOW OUT CNTDIG1 FOR THIS PLAYER
SLL 5,A6
ADDI NUMBS,A6
MOVE *A6,A14,L ;GET IMAGE
MOVI 017001FH,A3
MOVI 3F3F0000H,A1 ;COLOR/PAL FOR CONSTANT COLOR
MOVI DMACNZ,A5
CALLR BLOWOUT2
JRUC DO_2
NO_CNT MOVI 0A0012H,A3
CALLR BLOWOUT
;DRAW PLYR TWO SCORE PLATE
DO_2 MOVI PHD2,A14
MOVE @CNTDIG2,A6
JRZ NO_CNT1
MOVI PHD2A,A14
MOVI 0A012AH,A3
CALLR BLOWOUT
SLL 5,A6
ADDI NUMBS,A6
MOVE *A6,A14,L ;GET IMAGE
MOVI 0170137H,A3
MOVI 3F3F0000H,A1 ;COLOR/PAL FOR CONSTANT COLOR
MOVI DMACNZ,A5
CALLR BLOWOUT2
JRUC DO_3
NO_CNT1 MOVI 0A012AH,A3
CALLR BLOWOUT
DO_3
MOVE @SCORETYP,A0
BTST 0,A0
JRNZ DO_P1
;DISPLAY CORRECT COIN IN MESSAGE (PRESS OR INSERT) FOR P1
MOVE @P1DATA+MESSAGE,A14,L
MOVI 16003BH,A3
CALLR BLOWOUT
JRUC NEXT
DO_P1
;PLAYER 1 IS IN GAME
;DRAW PLYR 1 LIVES
MOVE @P1DATA+LVADDR,A14,L
MOVI 260036H,A3 ;140038H,A3
CALLR BLOWOUT
MOVE @P1DATA+BMB_CNT,A14
SLL 5,A14
ADDI BLST,A14
MOVE *A14,A14,L
MOVI 0E003FH,A3 ;130048H,A3
CALLR BLOWOUT
;NOW BLOW OUT # OF HOSTAGES COLLECTED FOR PLAYER 1
MOVE @P1DATA+THSTGS,A6
SLL 4,A6
ADDI DECLST,A6
MOVE *A6,A14
MOVK 0FH,A1
AND A1,A14
SLL 7,A14
ADDI RRD0,A14
MOVI 26005AH,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
MOVE *A6,A14
MOVI 0F0H,A1
AND A1,A14
SLL 3,A14
ADDI RRD0,A14
MOVI 260052H,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
MOVE *A6,A14
SRL 8,A14
JRZ NEXT
SLL 7,A14
ADDI RRD0,A14
MOVI 26004AH,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
NEXT
BTST 1,A0
JRNZ DO_P2
;DISPLAY CORRECT COIN IN MESSAGE (PRESS OR INSERT) FOR P2
MOVE @P2DATA+MESSAGE,A14,L
MOVI 160153H,A3
CALLR BLOWOUT
JRUC NEXT1
DO_P2
;PLAYER 2 IS IN GAME
;DRAW PLYR 2 LIVES
MOVE @P2DATA+LVADDR,A14,L
MOVI 26014EH,A3 ;140150H,A3
CALLR BLOWOUT
MOVE @P2DATA+BMB_CNT,A14
SLL 5,A14
ADDI BLST,A14
MOVE *A14,A14,L
MOVI 0E0157H,A3 ;130160H,A3
CALLR BLOWOUT
;NOW BLOW OUT # OF HOSTAGES COLLECTED FOR PLAYER 2
MOVE @P2DATA+THSTGS,A6
SLL 4,A6
ADDI DECLST,A6
MOVE *A6,A14
MOVK 0FH,A1
AND A1,A14
SLL 7,A14
ADDI RRD0,A14
MOVI 260172H,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
MOVE *A6,A14
MOVI 0F0H,A1
AND A1,A14
SLL 3,A14
ADDI RRD0,A14
MOVI 26016AH,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
MOVE *A6,A14
SRL 8,A14
JRZ NEXT1
SLL 7,A14
ADDI RRD0,A14
MOVI 260162H,A3
MOVI 3B3B0000H,A1
MOVI DMACNZ,A5
CALLR BLOWOUT2
NEXT1
CLR A1
MOVI DMAWNZ,A5 ;ENTER WITH PAL SET ALREADY
;NOW DO SCORE DIGITS FOR PLAYER 1
MOVI RRD0,A12
MOVI SCRSPC,A8 ;SPACING BETWEEN DIGITS
MOVI P1DATA,A9
CMPI 1,A0
JRZ OUTSCR
CMPI 2,A0
JRZ UPDSLP2
CMPI 3,A0
JRNZ OUTSCRX
;BOTH PLAYERS
CALLR OUTSCR
UPDSLP2:
MOVI P2DATA,A9 ;BASE TABLE PLAYER 2
;
;OUTPUT SCORE TO SCREEN
;A0=CURRENT PLAYER SCORE
;A9=PLINDX=PLAYER DATA AREA
;
OUTSCR:
MOVK 6,A6 ;5 ;DIGIT COUNT
MOVE *A9(PSCRAD),A3,L ;PLAYER SCORE ADDRESS
MOVE *A9(PSCORE),A0,L ;PLAYER SCORE IN BCD FORM
SLL 8,A0 ;12
OUTSCL:
MOVE A0,A14
SRL 28,A14 ;NEXT DIGIT VALUE INTO LOWEST 4 BITS
SLL 7,A14 ;*128 (NEXT HEADER PLEASE!!)
ADD A12,A14 ;BASE ADDRESS OF IMAGE HEADER
*A1: CONSTANT COLOR:PALETTE
*A3: DESTINATION Y:X
*A5: OFFSET:CONTROL
*A14: ADDRESS OF IMAGE HEADER
*GETS: A2=H/W; A4=SAG
MOVE *A14,A2,L ;GET VSIZE:HSIZE
MOVE *A14(ISAG),A4,L ;GET SAG
MOVE @QDMAFLG,A13,W ;IS Q BEING MODIFIED?
JRNZ OUTSCRX
MOVK 1,A13
MOVE A13,@QDMAFLG,W ;Q BEING MODIFIED
MOVE @DMAQCUR,A13,L
CMPI DMAQ,A13
JRLS OUTSCRX ;Q OVERLOAD, CAN IT
MMTM A13,A1,A2,A3,A4,A5
MOVE A13,@DMAQCUR,L
CLR A13
MOVE A13,@QDMAFLG,W
ADDXY A8,A3 ;ADD SPACE AFTER DIGIT
SLL 4,A0 ;NEXT DIGIT PLEASE!
DSJ A6,OUTSCL
OUTSCRX:
RETS
DECLST .WORD >00,>01,>02,>03,>04,>05,>06,>07,>08,>09
.WORD >10,>11,>12,>13,>14,>15,>16,>17,>18,>19
.WORD >20,>21,>22,>23,>24,>25,>26,>27,>28,>29
.WORD >30,>31,>32,>33,>34,>35,>36,>37,>38,>39
.WORD >40,>41,>42,>43,>44,>45,>46,>47,>48,>49
.WORD >50,>51,>52,>53,>54,>55,>56,>57,>58,>59
.WORD >60,>61,>62,>63,>64,>65,>66,>67,>68,>69
.WORD >70,>71,>72,>73,>74,>75,>76,>77,>78,>79
.WORD >80,>81,>82,>83,>84,>85,>86,>87,>88,>89
.WORD >90,>91,>92,>93,>94,>95,>96,>97,>98,>99
.WORD >100,>101,>102,>103,>104,>105,>106,>107,>108,>109
.WORD >110,>111,>112,>113,>114,>115,>116,>117,>118,>119
.WORD >120,>121,>122,>123,>124,>125,>126,>127,>128,>129
.WORD >130,>131,>132,>133,>134,>135,>136,>137,>138,>139
.WORD >140,>141,>142,>143,>144,>145,>146,>147,>148,>149
.WORD >150,>151,>152,>153,>154,>155,>156,>157,>158,>159
.WORD >160,>161,>162,>163,>164,>165,>166,>167,>168,>169
.WORD >170,>171,>172,>173,>174,>175,>176,>177,>178,>179
.WORD >180,>181,>182,>183,>184,>185,>186,>187,>188,>189
.WORD >190,>191,>192,>193,>194,>195,>196,>197,>198,>199
.WORD >200,>201,>202,>203,>204,>205,>206,>207,>208,>209
.WORD >210,>211,>212,>213,>214,>215,>216,>217,>218,>219
.WORD >220,>221,>222,>223,>224,>225,>226,>227,>228,>229
.WORD >230,>231,>232,>233,>234,>235,>236,>237,>238,>239
.WORD >240,>241,>242,>243,>244,>245,>246,>247,>248,>249
.WORD >250,>251,>252,>253,>254,>255,>256,>257,>258,>259
.WORD >260,>261,>262,>263,>264,>265,>266,>267,>268,>269
.WORD >270,>271,>272,>273,>274,>275,>276,>277,>278,>279
.WORD >280,>281,>282,>283,>284,>285,>286,>287,>288,>289
.WORD >290,>291,>292,>293,>294,>295,>296,>297,>298,>299
BLST .LONG BMB0,BMB1,BMB2,BMB3,BMB4,BMB5,BMB6,BMB7
.LONG BMB8,BMB9,BMB9,BMB9,BMB9,BMB9,BMB9
.LONG BMB9,BMB9,BMB9,BMB9,BMB9,BMB9,BMB9
.LONG BMB9,BMB9
ABLOWP2 MOVI DMAWNZ|M_FLIPH,A5 ;ENTER WITH PAL SET ALREADY
JRUC BLOWOUT2
BLOWOUT:
CLR A1
ABLOWP MOVI DMAWNZ,A5 ;ENTER WITH PAL SET ALREADY
BLOWOUT2:
*A1: CONSTANT COLOR:PALETTE
*A3: DESTINATION Y:X
*A5: OFFSET:CONTROL
*A14: ADDRESS OF IMAGE HEADER
*GETS: A2=H/W; A4=SAG
MOVE *A14,A2,L ;GET VSIZE:HSIZE
MOVE *A14(ISAG),A4,L ;GET SAG
MOVE @QDMAFLG,A13,W ;IS Q BEING MODIFIED?
JRNZ BLOWX
MOVK 1,A13
MOVE A13,@QDMAFLG,W ;Q BEING MODIFIED
MOVE @DMAQCUR,A13,L
CMPI DMAQ,A13
JRLS BLOWX ;Q OVERLOAD, CAN IT
MMTM A13,A1,A2,A3,A4,A5
MOVE A13,@DMAQCUR,L
CLR A13
MOVE A13,@QDMAFLG
BLOWX RETS
;
;SCRADD2-ADD BCD (8 DIGIT) AMOUNT TO PLAYERS SCORE
;A1=AMOUNT TO ADD (8 DIGIT BCD)
;A2=P1 OR P2DATA
;
SCRADD2:
MMTM SP,A4
; MOVE @GAMSTATE,A0
; CMPI INAMODE,A0
; JREQ RT
; CMPI P1DATA,A2
; JRNZ FUCK
; LOCKUP
;FUCK
MOVE *A2(PSCORE),A0,L ;GET SCORE
CALLR BCDADD ;ADD IN NEW VALUE
MOVE @STATUS,A4
;CHECK TO SEE IF WE WANT TO DOUBLE SCORES FOR TWO PLAYER GAME
SUBK 3,A4 ;CMPI 3,A4
JRNZ ONEPLYR
CALLR BCDADD ;ADD IN NEW VALUE
;TWO PLAYER GAME
ONEPLYR
MOVE A0,*A2(PSCORE),L ;STUFF IT
;FREE MAN BASED ON SCORE
; MOVE *A2(PNEXTREP),A1,L ;GET NEXT FREE MAN SCORE POINT
; CMP A1,A0
; JRLO RT
;;GIVE PLAYER EXTRA LIFE
; MOVE A1,A0
; MOVI >100000,A1 ;ADDITIONAL MEN
; CALLR BCDADD
; MOVE A0,*A2(PNEXTREP),L
; CALLR DO_EXTRA
;RT
MMFM SP,A4
RETS
;BCD ADD ROUTINE
;A0=SCORE (8 DIGIT BCD) 32 BITS
;A1=NUMBER TO ADD TO A0 (8 DIGIT BCD)
;PACKED BCD FORMAT 4-BITS/ DIGIT
;
BCDADD:
;NEED ALL THESE MMTM'S?
MMTM SP,A1,A3,A4,A5,A6
MOVK 8,A5 ;DO 8 DIGITS
CLRC ;CLEAR THE CARRY
MOVK >0A,A6
BCDLP:
MOVK >0F,A3
MOVK >0F,A4
AND A1,A3 ;MASK GARBAGE
AND A0,A4 ;TRANSFER
ADDC A3,A4
CMP A6,A4 ;NEED TO ADJUST? (PAST 9 DEC.)
JRLO BCDAD1 ;NO. THEN ADD
ADDK 6,A4 ;RETURN NUMBER TO 0
SRL 4,A0 ;
SLL 28,A4
ADD A4,A0
SRL 4,A1
SETC ;SET CARRY
DSJS A5,BCDLP ;DO ALL 8 DIGITS
JRUC BCDADX ;UNSTACK REGISTERS
BCDAD1:
SRL 4,A0
SLL 28,A4
ADD A4,A0
SRL 4,A1
CLRC
DSJS A5,BCDLP
BCDADX:
MMFM SP,A1,A3,A4,A5,A6
RETS
CNTDWN:
;TAKE FACE AWAY, AND DISPLAY LARGE FONT DIGIT WITH COLOR CYCLE
;DISPLAY A COUNTDOWN
;A11=P1/P2DATA
MOVI COLRPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRNZ SKIPCYC
CREATE COLRPID,CYCSPECT ;START CYCLE FOR CNTDWN DIGIT
SKIPCYC SLEEP 40 ;15
MOVI 0FFF0H,A0
CMPI P1DATA,A11
JRNE V1
MOVK 10,A0
MOVE A0,@CNTDIG1
MOVE @STATUS,A0
ANDI 2,A0
MOVE A0,@STATUS
CREATE DG1PID,DIGIT1
DIE
V1
MOVK 10,A0
MOVE A0,@CNTDIG2
MOVE @STATUS,A0
ANDI 1,A0
MOVE A0,@STATUS
CREATE DG2PID,DIGIT2
DIE
DIGIT1
;DO DIGIT CNT
;TURN ON NEW CNTR OBJECT
MOVI CNTDOWN,A0
CALLA ONESND
SLEEPK 8
MOVI CNTDWN2,A0
CALLA ONESND
SLEEP 75
MOVE @CNTDIG1,A0
CMPI 10,A0
JRNZ DGL
JSRP DO_CLICK
DGL MOVE @CNTDIG1,A0
ANDI 0FH,A0
DEC A0
MOVE A0,@CNTDIG1
JRGT DIGIT1
MOVE @STATUS,A1
ANDI 2,A1
MOVE A1,@STATUS
DV8
CLR A0
MOVE A0,*A11(PLIVES)
MOVK 2,A0 ;INDICATE KILL OFF PLAYER PRC ETC
MOVE A0,*A11(CNTD)
CALLR KILDGCYC
DIE
KILDGCYC:
MOVE @CNTDIG1,A0
MOVE @CNTDIG2,A1
OR A0,A1
JRNZ DOUT
MOVI COLRPID,A0
CLR A1
NOT A1
CALLA KILALL
DOUT RETS
DIGIT2
;DO DIGIT CNT
;TURN ON NEW CNTR OBJECT
MOVI CNTDOWN,A0
CALLA ONESND
SLEEPK 8
MOVI CNTDWN2,A0
CALLA ONESND
SLEEP 75
MOVE @CNTDIG2,A0
CMPI 10,A0
JRNZ DGL2
JSRP DO_CLICK
DGL2
MOVE @CNTDIG2,A0
ANDI 0FH,A0
DEC A0
MOVE A0,@CNTDIG2
JRGT DIGIT2
MOVE @STATUS,A1
ANDI 1,A1
MOVE A1,@STATUS
JRUC DV8
DO_CLICK
MOVK 3,A10
GARP
MOVI CNTDOWN,A0
CALLA ONESND
SLEEPK 8
MOVI CNTDWN2,A0
CALLA ONESND
SLEEP 75
DSJ A10,GARP
RETP
NUMBS .LONG FON150,FON150,FON151,FON152,FON153,FON154,FON155,FON156
.LONG FON157,FON158,FON159
.LONG FON159,FON159,FON159,FON159,FON159,FON159,FON159,FON159
; FSCORE - TRANSFER BOTH PLAYERS SCORE TO FORGROUND OBJECTS AND DISPLAY THEM
; IN PLACE OF DIRECT-DMA OBJECTS
FSCORE:
MOVI P1DATA,A9 ;TRANSFER PLAYER 1 SCORE
CALLA VSCORE
MOVI P2DATA,A9 ;TRANSFER PLAYER 2 SCORE
VSCORE:
MOVK 6,A11 ;DIGIT COUNT
MOVE *A9(PSCRAD),A0,L ;PLAYER SCORE ADDRESS
MOVE *A9(PSCORE),A9,L ;PLAYER SCORE IN BCD FORM
SLL 8,A9 ;12
PUTSCL:
MMTM SP,A0
MOVE A9,A10
SRL 28,A10 ;NEXT VALUE INTO LOWEST 4 BITS
SLL 7,A10 ;*128 (NEXT HEADER PLEASE!!)
ADDI RRD0,A10 ;BASE ADDRESS OF IMAGE HEADER
CLR A1
MOVY A0,A1 ;Y VAL
SLL 16,A0 ;X VAL
MOVE A10,A2 ;IMG
CALLR ONIT
MMFM SP,A0
MOVI SCRSPC,A1 ;SPACE BETWEEN DIGITS
ADDXY A1,A0 ;ADD SPACE AFTER DIGIT
SLL 4,A9 ;NEXT DIGIT PLEASE!
DSJ A11,PUTSCL
RETS
.END


3417
BACKUP/SHAWN.ASM Normal file

File diff suppressed because it is too large Load Diff

517
BACKUP/SHAWN.HDR Normal file
View File

@ -0,0 +1,517 @@
********************************
* Macro defines, include after mproc.equ
* 11 June 91 SPL
*.Last mod - 10/5/91 17:25
SUBR $macro p1
.def :p1:
.even
:p1:
$end
SUBRP $macro p1
.even
:p1:
$end
WORD $macro n,o,a
$if :a:
:n: .set :o:*16+:a:
$else
:n: .set :o:*16
$endif
$end
LONG $macro n,o,a
$if :a:
:n: .set :o:*16+:a:
$else
:n: .set :o:*16
$endif
$end
APTR $macro n,o,a
$if :a:
:n: .set :o:*16+:a:
$else
:n: .set :o:*16
$endif
$end
WORDPD $macro n,o
:n: .set :o:*16+PDATA
$end
LONGPD $macro n,o
:n: .set :o:*16+PDATA
$end
APTRPD $macro n,o
:n: .set :o:*16+PDATA
$end
LW $macro l,w
.long :l:
.word :w:
$end
LWW $macro l,w,w2
.long :l:
.word :w:,:w2:
$end
LWWW $macro l,w,w2,w3
.long :l:
.word :w:,:w2:,:w3:
$end
LWWWW $macro l,w,w2,w3,w4
.long :l:
.word :w:,:w2:,:w3:,:w4:
$end
LWL $macro l,w,l2
.long :l:
.word :w:
.long :l2:
$end
LWLW $macro l,w,l2,w2
.long :l:
.word :w:
.long :l2:
.word :w2:
$end
LWL0 $macro l,w
.long :l:
.word :w:
.long 0
$end
COLORW $macro r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4
.word :r1:*32*32+:g1:*32+:b1:
$if :r2:
.word :r2:*32*32+:g2:*32+:b2:
$endif
$if :r3:
.word :r3:*32*32+:g3:*32+:b3:
$endif
$if :r4:
.word :r4:*32*32+:g4:*32+:b4:
$endif
$end
* Push 1-10 registers onto the stack, overrides mproc.equ version
PUSH $macro r1,r2,r3,r4,r5,r6,r7,r8,r9,r10
$if :r10:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:,:r9:,:r10:
$else
$if :r9:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:,:r9:
$else
$if :r8:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:
$else
$if :r7:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:
$else
$if :r6:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:
$else
$if :r5:
mmtm sp,:r1:,:r2:,:r3:,:r4:,:r5:
$else
$if :r4:
mmtm sp,:r1:,:r2:,:r3:,:r4:
$else
$if :r3:
mmtm sp,:r1:,:r2:,:r3:
$else
$if :r2:
move :r1:,-*sp,1
move :r2:,-*sp,1
$else
move :r1:,-*sp,1
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$end
* Pull registers off of the stack, ^
PULL $macro r1,r2,r3,r4,r5,r6,r7,r8,r9,r10
$if :r10:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:,:r9:,:r10:
$else
$if :r9:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:,:r9:
$else
$if :r8:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:,:r8:
$else
$if :r7:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:,:r7:
$else
$if :r6:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:,:r6:
$else
$if :r5:
mmfm sp,:r1:,:r2:,:r3:,:r4:,:r5:
$else
$if :r4:
mmfm sp,:r1:,:r2:,:r3:,:r4:
$else
$if :r3:
mmfm sp,:r1:,:r2:,:r3:
$else
$if :r2:
move *sp+,:r2:,1
move *sp+,:r1:,1
$else
move *sp+,:r1:,1
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$endif
$end
* Push low word of register on to stack, ^
PUSHW $macro r1,r2,r3
$if :r3:
ERROR:PUSHW
$else
$if :r2:
move :r1:,-*sp,0
move :r2:,-*sp,0
$else
move :r1:,-*sp,0
$endif
$endif
$end
* Pull low word of register off of stack, ^
PULLW $macro r1,r2,r3
$if :r3:
ERROR:PULLW
$else
$if :r2:
move *sp+,:r2:,0
move *sp+,:r1:,0
$else
move *sp+,:r1:,0
$endif
$endif
$end
* Push 1-5 registers onto the process stack, overrides mproc.equ version
PUSHP $macro r1,r2,r3,r4,r5
$if :r5:
mmtm a12,:r1:,:r2:,:r3:,:r4:,:r5:
$else
$if :r4:
mmtm a12,:r1:,:r2:,:r3:,:r4:
$else
$if :r3:
mmtm a12,:r1:,:r2:,:r3:
$else
$if :r2:
move :r1:,-*a12,1
move :r2:,-*a12,1
$else
move :r1:,-*a12,1
$endif
$endif
$endif
$endif
$end
* Pull 1-5 registers off the process stack, overrides mproc.equ version
PULLP $macro r1,r2,r3,r4,r5
$if :r5:
mmfm a12,:r1:,:r2:,:r3:,:r4:,:r5:
$else
$if :r4:
mmfm a12,:r1:,:r2:,:r3:,:r4:
$else
$if :r3:
mmfm a12,:r1:,:r2:,:r3:
$else
$if :r2:
move *a12+,:r2:,1
move *a12+,:r1:,1
$else
move *a12+,:r1:,1
$endif
$endif
$endif
$endif
$end
* And 1-32 to register. Trashes A14
ANDK $macro r1,r2
movk :r1:,a14
and a14,:r2:
$end
* Or 1-32 to register. Trashes A14
ORK $macro r1,r2
movk :r1:,a14
or a14,:r2:
$end
XYTXT $macro f,x,y,c,s
.word :f:,:x:,:y:,:c:
.byte :s:,0
$end
XYNUM $macro f,x,y,c,p
.word :f:,:x:,:y:,:c:
.long :p:
$end
XYOBJ $macro f,x,y,z,i
.word :f:,:x:,:y:,:z:
.long :i:
$end
NOTINUSE $macro
.if 0
$end
;RINR $macro a,b
; $if (:b:-:a:)<33
; movk :b:-:a:,a0
; $else
; movi :b:-:a:,a0
; $endif
; callr rndrng0
; $end
********************************
* Animation script macros
ASITEMN $macro a,b,c,d,e,f
.long :c:
.word :a:,:b:,:d:,:e:,:f:
$end
ASNEW $macro a
.word AsNEW
.long :a:
$end
ASDEL $macro a
.word AsDEL,:a:
$end
ASDELM $macro a,b
.word AsDELM,:a:,:b:
$end
ASFRA $macro a,b,c
.word AsFRA
.long :a:
.word :b:,:c:
$end
ASANI $macro a,b
.word AsANI
.long :a:
.word :b:
$end
ASHIDE $macro a
.word AsHIDE,:a:
$end
ASSHOW $macro a
.word AsSHOW,:a:
$end
ASPAL $macro a
.word AsPAL,:a:
$end
ASXY $macro a,b,c,d
.word AsXY,:a:,:b:,:c:,:d:
$end
ASXYRNG $macro a,b,c,d,e,f
.word AsXYRNG,:c:,:d:,:e:,:f:,:a:,:b:
$end
ASXYV $macro a,b,c,d
.word AsXYV
.long :c:,:d:
.word :a:,:b:
$end
ASXYVA $macro a,b,c,d
.word AsXYVA
.long :c:,:d:
.word :a:,:b:
$end
ASXYV0 $macro
.word AsXYV0
$end
ASZ $macro a,b,c
.word AsZ,:a:,:b:,:c:
$end
ASBXY $macro a,b
.word AsBXY,:a:,:b:
$end
ASSLP $macro a
.word AsSLP,:a:
$end
ASSLPR $macro a,b
.word AsSLPR,:a:,:b:
$end
ASWAIT $macro
.word AsWAIT
$end
ASTXT $macro a
.word AsTXT
.long :a:
$end
ASTXTK $macro
.word AsTXTK
$end
ASLAB $macro a
.word AsLAB,:a:
$end
ASLABR $macro a,b
.word AsLABR,:a:,:b:
$end
ASDSJ $macro
.word AsDSJ
$end
ASJMP $macro a
.word AsJMP
.long :a:
$end
ASJMPR $macro a,b
.word AsJMPR
.long :b:
.word :a:
$end
ASJMPEQ $macro a,b,c
.word AsJMPEQ
.long :b:,:c:
.word :a:
$end
ASJMPNE $macro a,b,c
.word AsJMPNE
.long :b:,:c:
.word :a:
$end
ASRUN $macro a
.word AsRUN
.long :a:
$end
ASRUNI $macro a,b
.word AsRUNI
.long :a:
.word :b:
$end
ASCRE $macro a,b
.word AsCRE
.long :a:,:b:
$end
ASKIL $macro a,b
.word AsKIL,:a:,:b:
$end
ASASM $macro
.word AsASM
$end
ASENDASM $macro
exgpc a8
$end
ASSND $macro a
.word AsSND
.long :a:
$end
ASADDW $macro a,b
.word AsADDW
.long :b:
.word :a:
$end
ASADDWO $macro a,b
.word AsADDWO,:a:,:b:
$end
ASADDLO $macro a,b
.word AsADDLO
.long :a:
.word :b:
$end
ASADLVO $macro a
.word AsADLVO,:a:
$end
ASSVRL $macro a,b
.word AsSVRL
.long :a:,:b:
$end
ASSVRLT $macro a
.word AsSVRLT
.long :a:
$end
ASSVL $macro a
.word AsSVL
.long :a:
$end
ASEND $macro
.word -1
$end
********************************
* Non dupe macros from sys\macros.hdr
*Defs for symbols referenced from macros
.GLOBL ERRORLOG
* Swap contents of two registers that reside in same file
SWAP $MACRO R1,R2
XOR :R1.S:,:R2.S:
XOR :R2.S:,:R1.S:
XOR :R1.S:,:R2.S:
$END
* Test a register for zero
TEST $MACRO R1
MOVE :R1.S:,:R1.S:
$END
*EQUATES FOR XY COMPARES(MOTOLORA STYLE)
JRXEQ $MACRO P1
JRXZ P1.S
$END
JRXNE $MACRO P1
JRXNZ P1.S
$END
JRXGE $MACRO P1
JRXNN P1.S
$END
JRXLT $MACRO P1
JRXN P1.S
$END
JRYEQ $MACRO P1
JRYZ P1.S
$END
JRYNE $MACRO P1
JRYNZ P1.S
$END
JRYGE $MACRO P1
JRYNN P1.S
$END
JRYLT $MACRO P1
JRYN P1.S
$END
*MAKE A SINGLE SOUND USING THE GSP SOUND PROCESSOR
SOUND1 $MACRO SNDNUM
MOVI :SNDNUM:,A0
CALLA ONESND
$END
*CALLERR - CALL THE ERROR LOG MACRO
*REGS = # OF REGISTERS PUSHED ON THE STACK BY THIS SUBROUTINE
CALLERR $MACRO NUM,REGS
MMTM SP,A1,A2
MOVE *SP((:REGS:+2)*20H),A1,L
MOVI :NUM:,A2
CALLA ERRORLOG
MMFM SP,A1,A2
$END


2454
BACKUP/SHOTS.ASM Normal file

File diff suppressed because it is too large Load Diff

693
BACKUP/SOUNDS.ASM Normal file
View File

@ -0,0 +1,693 @@
**************************************************************
*
* Software: ?
* Initiated:
*
* Modified: Shawn Liptak, 9/30/91 -High speed version
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 9/30/91 20:34
**************************************************************
.FILE 'SOUNDS.ASM'
.TITLE "SOUND PROCESSOR"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "GAME.EQU" ;SOUND HEADER
.include "shawn.hdr" ;My macros
;SOUND DRIVER STUFF
.DEF SNDRES,ONESND,SNDLD,SNDSND,CKSNDPRI,QSNDRST
.DEF MUSICOFF,YAMOFF,FADE_DOWN,ALLOFF,SNDPRC,FADE_UP
;SOUND HEADERS USED IN GAME
.DEF UGH1,UGH2,UGH3,UGH4,MEUGH,HASND,NOWAY,BUYMSC,GUYDI,MTING
.DEF TRGTSND,KEYSND,CHUCK,HELP,HELP2,HELP3,HELP4,KEYSND2,WRPSND
.DEF ALTEXP5,EXP5,GULP,HORN2,TORCH,ALTEXP6,SCASH2,YEAHHH,CNTDWN2
.DEF SALTXP4,SEXP2HI,HORNSND,EXITSND,LOVEIT,CRSSND,CNTDOWN
.DEF TING2,TING3
.DEF ALTEXP1,ALTEXP3,EXP2HI,SETDWN,GRNTSHT,GETWPN,AIRSCRM,EXP1L
.DEF ALTXP1A,ALTEXP4,CANNON,EXP2HIB,TUNE3,TUNE3O,CRSSND2,SQUISH
.DEF SHOT,THUMP2,THUMP,EXP1,EXP2,EXP3,EXP4,TOTCARN,FIREDI,GETSND
.DEF ELECTRO,MECH1,GLSEXP,TUNE1,TUNE2,SENDIN,WOO1,WOO2,COINSND
.DEF FEET,FLAMSND,SHOT2,STATSND,JEEPSND,TURTSND,FNDSND
.DEF DIESCRM,SCREAM,SLIDEIN,PLYRONE,PLYRTWO,AGLSEXP
.DEF TING,GRNSND,BEEP1,THNKU,SCASH,FREEMAN,SCASH3
.DEF HIMUSC,BEEP2
.REF SOUNDSUP
.text
*SOUND PROCESSOR MAKES SOUNDS FOR N-CHANNELS (CURRENTLY 6):
*
* CHANNEL #0 OKI CHANNEL 3
* CHANNEL #1 OKI CHANNEL 4
* CHANNEL #2 YAMAHA SOUNDS
* CHANNEL #3 MUSIC
* CHANNEL #4 OKI CHANNEL 1 (PLAYER 1)
* CHANNEL #5 OKI CHANNEL 2 (PLAYER 2)
*
*THE ROUTINE "SNDRES" MUST BE CALLED TO INITAILIZE SOUND BOARD
*ALSO SCRATCHPAD RAM MUST BE INITIALIZED TO ZERO
*THE ROUTINE "SNDPRC" MUST BE CALLED EVERY 16MSEC. IN THE MAIN PROGRAM LOOP
*(THE SAME PLACE WHERE "PRCDSP" IS NORMALLY CALLED)
*MAKING A SOUND:
*
*SOUND TABLE FORMAT
*
*SOUND DESCRIPTION:
* .WORD PRIORITY, TIME, SOUND CODE, (PRIORITY), (TIME), (SOUND CODE), 0
*
*SOUND ENDS IN 0000.
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
*EXAMPLE 1:
*
* MOVI SND1,A0 ;LOAD ABSOLUTE ADDRESS OF SND1 IN A0
* CALLA ONESND ;MAKE ONE SND1
*
*SND1: .WORD >F0FF,>0100,>8088,0
*
*SND1 IS FOR CHANNEL=0, PRIORITY=FF (HIGHEST), TIME = 100H X 16MSEC.
*SOUND CODE = 88H
*SND1 WILL MAKE ONE SOUND 88H, AND NOT ALLOW IT TO BE INTERRUPTED
*FOR 100H X 16MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 0
*
* MOVI SND2,A0 ;LOAD SND2 ADDRESS
* MOVK 3,A1 ;REPEAT IT 3 TIMES
* CALLA SNDLD ;GO DO IT
*SND2: .WORD >F311,>0020,>8044,>8044,0
*
*SND2 IS ON CHANNEL 3, PRIORITY 11H. IT WILL MAKE ONE SOUND 44H, WAIT
*20H X 16 MSEC., THEN MAKE ANOTHER SOUND 44H, WHICH CANNOT BE INTERRUPTED
*FOR 20H X 16 MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 3
*
*SINCE A1 IS LOADED WITH A REPEAT COUNT OF 3, THIS PROCESS WILL BE REPEATED
*THREE TIMES. THE END RESULT WILL BE 6 SOUND 44H SEPERATED BY 20H X 16MSEC.
*
*NOTE: THE CHANNEL SPECIFIED BY "MUSICHAN" WILL CAUSE THE MUSIC SECTION OF
* THE SOUND BOARD TO BE STROBED.
*
SNDPRI .SET 0 ;PRIORITY (00=LOWEST, FF=HIGHEST)
SNDTMR .SET 010h ;TIMER COUNTDOWN
SNDPTR .SET 020h ;POINTER TO SOUND TABLE DATA
SNDREP .SET 040h ;REPEAT COUNT OF SOUND
;SNDTIM .SET 050h ;TIMER 000-7FFF
SNDST .SET 060h ;ADDRESS OF SOUND TABLE START
*NOTE: IF YOU CHANGE SNDSIZ, MAKE SURE ANY CODE THAT USES IT AS A DIVISOR
* PERFORMS THE CORRECT OP. CURRENTLY IT IS A POWER OF 2 SO SRL IS USED.
SNDSIZ .SET 080h
SL_CHANNEL .EQU 21 ;SHIFTS REQUIRED TO ISOLATE CHANNEL NUMBER
SR_CHANNEL .EQU 29
NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS
MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES
*THESE STROBE EQUATES ARE FOR THE HOT NEW WILLY VIDEO SOUND CARD tm
RESETBIT EQU 0FE00H ;THIS IS THE ^RESET BIT
SOUNDBIT EQU 0FD00H ;THIS IS THE SOUND SIDE STROBE
EXTENDED_CODE .EQU 7AH ;SEND THIS TO INDICATE EXTENDED SOUND CALL
*
*EQUATES FOR READING SOUND BOARD IRQ REQUEST LINE
*
TALKPORT .EQU SWITCH+10H ;PORT TO FIND THIS LINE
B_SIRQ .EQU 14 ;BIT TO READ FOR SOUND IRQ LINE
.BSS SNDSTR,NCHAN*SNDSIZ ;RESERVE STORAGE AREA
.BSS SNDEND,0 ;END OF SOUND PROCESSOR RAM
**************************************************************************
* *
* CLRSNDDB - CLEAR THE SOUND PROCESSOR DATA BASE *
* *
**************************************************************************
CLRSNDDB
MMTM SP,A0,A1
MOVI SNDSTR,A1
CLR A0
CLRSDBL
MOVE A0,*A1+
CMPI SNDEND,A1
JRLO CLRSDBL
MMFM SP,A0,A1
RETS
**************************************************************************
* Make one sound
* A0=* to sound data
* Rets: A0=Same
ONESND
PUSH a0,a1,a2,a3,a4
movk 1,a1
jruc sl20
********************************
* Sound loader
* A0=* to sound data, A1=REPEAT COUNT
*Sound format= PRI,TIME,SOUND CODE,(PRI),(TIME),(SOUND CODE),0=END
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
* NNN=CHANNEL #(0-7); PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
SNDLD
PUSH a0,a1,a2,a3,a4
sl20 move @SOUNDSUP,a2
jrnz sndldx ;Somebody says no?
move *a0,a2 ;Get priority word
move a2,a3
sll SL_CHANNEL,a2
srl SR_CHANNEL,a2 ;Extract channel bits
sll 7,a2 ;*SNDSIZ
addi SNDSTR,a2 ;+Base
move *a2,a4 ;Get current priority
btst 11,a4
jrnz sndldx ;Non-interruptable?
sll 32-8,a3 ;Mask priorities
sll 32-8,a4
cmp a4,a3
jrlo sndldx ;New pri < old pri?
move a0,*a2(SNDST),L ;Setup sound start pointer
move *a0+,*a2+,L ;Set PRI,TMR
move *a0+,a3 ;Snd code
move a0,*a2+,L ;Set PTR
move a1,*a2+ ;Set RPT (Repeat count)
callr SNDSND ;Send sound code
sndldx PULL a0,a1,a2,a3,a4
rets
********************************
* Sound processor called every main loop (16 MSEC)
SNDPRC
movi SNDSTR,a0
movk NCHAN,a1
splp move *a0(SNDTMR),a2 ;Check timer
jrz sp5 ;Inactive channel?
subk 1,a2
move a2,*a0(SNDTMR) ;New time
jrnz sp5 ;No timeout?
callr SNDUPD ;Update sound
sp5 addi SNDSIZ,a0
dsjs a1,splp
rets
********************************
* Update sound
* A0=* to sound channel ram
SNDUPD
move *a0(SNDPTR),a2,L ;Get * to rom table
sud2 move *a2+,a3 ;Get next rom table entry
jrnz sud8 ;Another snd?
move *a0(SNDREP),a3 ;Check repeat count
subk 1,a3
move a3,*a0(SNDREP)
jrle sud6 ;No repeats?
move *a0(SNDST),a2,L
jruc sud2 ;Start sound over
sud6 clr a2
move a2,*a0 ;Clear sound priority
move a2,*a0(SNDST),L ;Clear sound ptr
rets
sud8 move a3,*a0+ ;Set PRI
move *a2+,*a0+ ;Set TMR
move *a2+,a3 ;Get code
move a2,*a0,L ;Set PTR
subk 32,a0 ;Fix A0
jruc SNDSND ;Send sound code
**************************************************************************
* SNDSND - RAW HARDWARE SOUND CALL *
* A3=SOUND CODE B0-B7 *
* NOTE: TRASHES A14 *
**************************************************************************
SNDSND
PUSH a0,a3
SLL 20,A3
SRL 20,A3 ;STRIP OFF BITS
CMPI 100H,A3 ;IS THIS AN EXTENDED SOUND CALL?
JRLO SNDSND_BASE ;BR = NO
MOVE A3,A0
MOVI EXTENDED_CODE,A3 ;SEND THE EXTENDED FEATURE
CALLR SNDSND
MOVE A0,A3
SLL 32-8,A3
SRL 32-8,A3
SNDSND_BASE
ADDI SOUNDBIT,A3 ;PULL SOUND SECTION INTERRUPT
MOVE A3,@SOUND ;HIT SOUND
MOVK 8,A0
DSJS A0,$ ;SLOW IT DOWN A BIT
ORI 0FF00h,A3 ;PUT OUT 1'S
MOVE A3,@SOUND
MOVI 8,A0
DSJS A0,$ ;LET SOUND BOARD REACT
MOVB @TALKPORT+B_SIRQ-7,A0 ;ARE WE CONNECTED?
JRN SS_DEFAULT_WAIT ;BR = NO
**** MOVI 390,A0 ;MAX FIRQ DELAY ON SOUND BOARD IS 180 micros
**** DSJS A0,$
MOVI 390,A3 ;MAX IRQ DELAY FOR SOUND BOARD
SS_IRQ_WAIT
MOVB @TALKPORT+B_SIRQ-7,A0 ;DID SOUND BOARD SERVICE?
JRN SS_X ;BR = YES
DSJS A3,SS_IRQ_WAIT
SS_X
PULL a0,a3
RETS
*COME HERE BECAUSE SOUND BOARD IRQ REQUEST WAS NOT DETECTED
SS_DEFAULT_WAIT
MOVI 390,A0 ;MAX IRQ DELAY FOR SOUND BOARD
DSJS A0,$
PULL a0,a3
RETS
**************************************************************************
* *
* SNDRES - FULL SOUND BOARD RESET, SOUND CHECKSUMS ARE REPORTED. *
* *
* NOTE: TRASHES A14 *
* *
**************************************************************************
SNDRES
PUSH a0
MOVI RESETBIT,A0 ;HIT RESET BIT
MOVE A0,@SOUND
MOVI 100,A0 ;WAIT FOR IT TO CATCH
DSJS A0,$
movi -1,a0 ;Let it go
MOVE A0,@SOUND
PULL a0
RETS
**************************************************************************
* *
* IS_SOUND - CHECK SOUND DATA BASE TO SEE IF THE GIVEN SOUND SCRIPT *
* IS CURRENTLY BEING PROCESSED. (I.E. ANOTHER SOUND *
* HAS OR HAS NOT TAKEN OVER.) *
* A0 = PTR TO SOUND SCRIPT *
* RETURNS *
* Z = SAME SCRIPT *
* NZ = SCRIPT NO LONGER ACTIVE *
* *
**************************************************************************
IS_SOUND
PUSH A3
MOVE *A0,A14,W ;GET CHANNEL/PRIORITY WORD
MOVI SNDSIZ,A3
SLL SL_CHANNEL,A14
SRL SR_CHANNEL,A14 ;EXTRACT CHANNEL BITS
MPYU A14,A3
ADDI SNDSTR,A3 ;GET THE CORRECT RAM CHANNEL ADDRESS
MOVE *A3(SNDST),A14,L
CMP A0,A14 ;SAME SCRIPT ACTIVE?
PULL A3
RETS
**************************************************************************
* *
* CKSNDPRI - CHECK SOUND CHANNEL FOR EXISTANCE OF A GIVEN SOUND PRIORITY *
* A0 = CHANNEL # *
* A1 = SOUND PRIORITY *
* RETURNS: *
* CARRY CLEAR = PRIORITY NOT ACTIVE *
* CARRY SET = PRIORITY ACTIVE *
* *
**************************************************************************
CKSNDPRI
MMTM SP,A0,A2
MOVI SNDSTR,A2
SLL 7,A0 ;CHANNEL x 128
ADD A2,A0 ;OFFSET TO CORRECT CHANNEL AREA
MOVB *A0,A0
CMP A0,A1
JRNE CKSPRI1 ;BR = PRIORITY NOT ACTIVE
SETC
MMFM SP,A0,A2
RETS
CKSPRI1
CLRC
MMFM SP,A0,A2
RETS
**************************************************************************
* *
* QSNDRST - QUIET SOUND RESET, NO DIAGNOSTIC DONGERS *
* *
**************************************************************************
QSNDRST
MMTM SP,A3,A5
CALLR SNDRES ;RESET THE BOARD
MOVI 100,A0
DSJS A0,$ ;NEED 30 mics BEFORE SENDING CODE
CLR A3
CLR A5
CALLR SNDSND ;PEND ON DIG SIDE
MOVK MUSICHAN,A5
CALLR SNDSND ;PEND ON YAMAHA SIDE
MMFM SP,A3,A5
RETS
**************************************************************************
* *
* FADE_UP - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_UP:
MOVI FADE_UP_TAB,A8
JRUC FADER
**************************************************************************
* *
* FADE_DOWN - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_DOWN:
MOVI FADE_DOWN_TAB,A8
JRUC FADER
FADER:
MOVI FADEPID,A0
CLR A1
NOT A1
CALLA KILALL ;WASTE ANY OTHER FADERS
FADE_LP:
MOVE *A8+,A0,L
JRZ FADE_DONE
CALLR ONESND
SLOOPR A11,FADE_LP
FADE_DONE:
DIE
FADE_UP_TAB:
.LONG VOLUME0
.LONG VOLUME1
.LONG VOLUME2
.LONG VOLUME3
.LONG VOLUME4
.LONG VOLUME5
.LONG VOLUME6
.LONG VOLUME7
.LONG VOLUME8
.LONG VOLUME9
.LONG VOLUMEA
.LONG VOLUMEB
.LONG VOLUMEC
.LONG VOLUMED
.LONG VOLUMEE
.LONG VOLUMEF
.LONG 0
FADE_DOWN_TAB:
.LONG VOLUMEF
.LONG VOLUMEE
.LONG VOLUMED
.LONG VOLUMEC
.LONG VOLUMEB
.LONG VOLUMEA
.LONG VOLUME9
.LONG VOLUME8
.LONG VOLUME7
.LONG VOLUME6
.LONG VOLUME5
.LONG VOLUME4
.LONG VOLUME3
.LONG VOLUME2
.LONG VOLUME1
.LONG VOLUME0
.LONG 0
**************************************************************************
* *
* POPULAR SOUND CALLS *
* *
**************************************************************************
*
*HIGH PRIORITY OFF CODES, NOTHING SHOULD BEAT THESE
CVSDOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD BACKGROUND LOOP OFF
CVSDFOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD FOREGROUND LOOP OFF
SOUNDOFF .WORD >F0FF|>800,>01,>8000,0 ;TURN SOUND SIDE OFF
ALLOFF .WORD >F3FF|>800,>01,>8000,0 ;MUSIC AND EFFECTS OFF
MUSICOFF .WORD >F3FF|>800,>01,>807E,0 ;TURN JUST MUSIC OFF
MUSITOFF .WORD >F3FF|>800,>01,>8040,0 ;MUSIC TRANSITION OFF
YAMOFF .WORD >F2FF|>800,>01,>807F,0 ;YAMAHA EFFECT OFF
VOLUME0 .WORD >F3FE,>1,>802F,0
VOLUME1 .WORD >F3FE,>1,>802E,0
VOLUME2 .WORD >F3FE,>1,>802D,0
VOLUME3 .WORD >F3FE,>1,>802C,0
VOLUME4 .WORD >F3FE,>1,>802B,0
VOLUME5 .WORD >F3FE,>1,>802A,0
VOLUME6 .WORD >F3FE,>1,>8029,0
VOLUME7 .WORD >F3FE,>1,>8028,0
VOLUME8 .WORD >F3FE,>1,>8027,0
VOLUME9 .WORD >F3FE,>1,>8026,0
VOLUMEA .WORD >F3FE,>1,>8025,0
VOLUMEB .WORD >F3FE,>1,>8024,0
VOLUMEC .WORD >F3FE,>1,>8023,0
VOLUMED .WORD >F3FE,>1,>8022,0
VOLUMEE .WORD >F3FE,>1,>8021,0
VOLUMEF .WORD >F3FE,>1,>8020,0
*
*SOUND PROCESSOR MAKES SOUNDS FOR N-CHANNELS (CURRENTLY 6):
*
* CHANNEL #0 OKI CHANNEL 3 MISC. SAMPLES
* CHANNEL #1 OKI CHANNEL 4 SPEECH
* CHANNEL #2 YAMAHA SOUNDS FX
* CHANNEL #3 BACKGROUND MUSIC
* CHANNEL #4 OKI CHANNEL 1 EXPLOSIONS
* CHANNEL #5 OKI CHANNEL 2 GUN SHOTS
*
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
TUNE1 .WORD >F3FE,10,>8001,0 ;REPORTER TUNE AT INTRO
TUNE2 .WORD >F3FE,10,>8002,0 ;INTRO INTO DESERT
TUNE3 .WORD >F3F0,10,>8005,0 ;INTRO INTO TAUNTS/RACKUP
TUNE3O .WORD >F3F0,10,>8090,0 ;TUNE 3 OFF
HIMUSC .WORD >F3F0,10,>8001,0 ;HIGH SCORE MUSIC
BUYMSC .WORD >F3FE,10,>8006,0 ;BUYIN MUSIC
SHOT .WORD >F450,05,>8043,0 ;REGULAR SHOT LOWER VOLUME
THUMP .WORD >F460,08,>8046,0 ;NON STOP THUMPER SOUND
CANNON .WORD >F560,09,>80DE,0 ;T72 CANNON
THUMP2 .WORD >FC58,04,>8046,0 ;SPDBALL THUMPER SOUND #2
EXP1 .WORD >FC55,18,>8030,0 ;EXPLOSION
EXP1L .WORD >FC55,10,>8040,0 ;GRUNT EXP SND
EXP2 .WORD >FC55,10,>8032,0 ;EXPLOSION LARGE
EXP2HI .WORD >FC75,10,>8032,0 ;EXPLOSION LARGE HIGHER PRI
EXP2HIB .WORD >FC75,05,>8032,0 ;EXPLOSION LARGE HIGHER PRI
EXP3 .WORD >F455,06,>8034,0 ;EXPLOSION
EXP4 .WORD >FC5A,06,>803A,0 ;SMART BOMB SND
EXP5 .WORD >FC7A,06,>8038,0 ;
SEXP2HI .WORD >F4E5,35,>8032,0 ;EXPLOSION LARGE HIGHER PRI
SALTXP4 .WORD >F5E5,20,>80D8,0
ALTEXP1 .WORD >FD75,10,>80E0,0 ;GRUNT EXP SND
ALTXP1A .WORD >FD85,04,>80D4,0 ;ALT CHANNEL EXPLOSION
ALTEXP3 .WORD >F575,15,>80D9,0 ;ALT CHAN MINE LAYER EXP
ALTEXP4 .WORD >F575,>10,>80DF,0 ;ALT CHAN EXP - JEEPS
ALTEXP5 .WORD >F575,>10,>80DE,0 ;ALT CHAN EXP
ALTEXP6 .WORD >F577,>38,>80DE,0 ;ALT CHAN EXP
TORCH .WORD >FDB5,40,>80BC,0 ;AHMED FLAME THROWER
SETDWN .WORD >F8F4,05,>80D4,0 ;SET DOWN TIME BOMB
CNTDOWN .WORD >FBF5,05,>80A4,0 ;BUYIN CNTDWN CLANG
CNTDWN2 .WORD >FBF5,05,>80A5,0 ;BUYIN CNTDWN CLANG #2
FLAMSND .WORD >F460,05,>8044,0 ;FLAME THROWER
SHOT2 .WORD >FC61,05,>804E,0 ;SPRAY WEAPON
GRNTSHT .WORD >F54F,10,>80E7,0 ;GRUNT SHOOTS AT PLYR
TURTSND .WORD >F550,08,>805C,0 ;TURRET GUN FIRE SND
TOTCARN .WORD >F9F0,100,>80CF,0 ;"TOTAL CARNAGE"
SENDIN .WORD >F180,01,>80CE,0 ;"SEND IN SQUAD"
ELECTRO .WORD >F0F0,40,>80C9,0 ;SHOCK SND AT DEATH
MECH1 .WORD >F080,40,>80C5,0 ;MECHANICAL SND 1
AGLSEXP .WORD >FDE8,20,>80DB,0 ;ALT CHAN GLASS SHATTER
GLSEXP .WORD >FCE8,20,>8036,0 ;GLASS SHATTER
WOO1 .WORD >F97E,>24,>80CB,0 ;WHHOOO
WOO2 .WORD >F97E,>24,>80CC,0 ;"YEAH"
THNKU .WORD >F97E,>10,>80BE,0 ;"THANK YOU"
SCASH3 .WORD >F395,08,>8091,0 ;HOSTAGE PICKUP
HELP .WORD >F97E,>24,>80C1,0 ;"HELP"
HELP2 .WORD >F97F,>34,>80BF,0 ;"OVER HERE"
HELP3 .WORD >F97E,>24,>80F1,0 ;WHISTLE
HELP4 .WORD >F87E,>24,>80D6,0 ;WHISTLE
GUYDI .WORD >F9FD,>44,>80FF,0 ;BAD GUY DIE SCREAM
YEAHHH .WORD >F9F0,>64,>80FE,0 ;RACKUP YEAHHH
SCASH .WORD >F395,08,>808C,0 ;CASH PICKUP SND
SCASH2 .WORD >F395,08,>80A1,0 ;BMB PICKUP SND
SQUISH .WORD >FBA5,18,>80AD,0 ;SQUISH SND
WRPSND .WORD >FBFE,38,>80A9,0 ;WARP SND
GETWPN .WORD >F858,15,>80D5,0 ;GUN BEING COCKED
COINSND .WORD >FBFF,>10,>8098,0 ;COIN IN MELODY SND
NOWAY .WORD >F9F7,>40,>80E6,0 ;"NO WAY" AT GAME OVER
FREEMAN .WORD >F1EE,>18,>80CD,0 ;FREE MAN SPEECH
KEYSND .WORD >F3EE,>18,>80A8,0 ;KEY MELODY SND
KEYSND2 .WORD >FBEE,>18,>8098,0 ;KEY MELODY SND
GETSND .WORD >FBEE,>18,>80AB,0 ;GET HELPER
LOVEIT .WORD >F9F0,>78,>80CD,0 ;"I LOVE IT"
FEET .WORD >F06E,>18,>80CA,0 ;FAST FEET PICKUP
GRNSND .WORD >F365,>18,>8089,0 ;GRENADE LAUNCH SND
STATSND .WORD >F08E,>18,>80C0,0 ;STATIC
JEEPSND .WORD >F08F,>18,>80C3,0 ;JEEP DOWN SCRN
HORNSND .WORD >F38E,>18,>8087,0 ;JEEP HORN 1
HORN2 .WORD >F88E,>18,>80E9,0 ;JEEP HORN 2
EXITSND .WORD >F38E,>18,>808C,0 ;EXIT SND
FNDSND .WORD >F99E,>18,>80D2,0 ;FIEND DEATH
BEEP1 .WORD >F3F7,>8,>80AC,0 ;BEEP CLICK
BEEP2 .WORD >F3F7,>30,>8096,0 ;BEEP TONE 2 - NO BMB
TRGTSND .WORD >FBF0,>50,>8097,0 ;CRUISE MISSILE TARGETED
PLYRONE .WORD >F9FE,>58,>80D0,0 ;"PLAYER ONE"
PLYRTWO .WORD >F9FE,>58,>80D1,0 ;"PLAYER TWO"
DIESCRM .WORD >F18E,>8,>80D2,0 ;DIE SCREAM BEFORE SHOCK SND
FIREDI .WORD >F88E,>40,>80D7,0 ;BURNING FLAME FOR DEATH
AIRSCRM .WORD >F9FD,>58,>80D3,0 ;DIE SCREAM FOR UP INTO AIR
SCREAM .WORD >F1F2,>48,>80E8,0 ;DIE SCREAM FOR CANDY BLITZER
SLIDEIN .WORD >F3F7,>8,>808E,0 ;SLIDE IN SOUND
TING .WORD >F38B,>10,>809C,0 ;BULLET HITTING METAL
TING2 .WORD >F38B,>10,>809D,0 ;BULLET HITTING METAL
TING3 .WORD >F38B,>10,>809E,0 ;BULLET HITTING METAL
MTING .WORD >F3BB,>5,>80A3,0 ;LAND MINE BLOW UP
GULP .WORD >FB8B,>35,>809F,0 ;SHIELD ON
CRSSND .WORD >FCEB,>35,>80EA,0 ;CRUISE MISSILE COMING IN
CRSSND2 .WORD >F4EB,>35,>80EA,0 ;CRUISE MISSILE COMING IN
MEUGH .WORD >F9F0,15,>80FD,0 ;PLAYER DIE UGH
UGH1 .WORD >F1A0,8,>80F5,0 ;C0 ;UGH
UGH2 .WORD >F1A0,8,>80F8,0 ;UGH
UGH3 .WORD >F1A0,8,>80FA,0 ;UGH
UGH4 .WORD >F1A0,8,>80FC,0 ;UGH
HASND .WORD >F9F2,>30,>80F2,0 ;WICKED LAUGHTER
CHUCK .WORD >F0F3,>70,>80C7,0 ;UPCHUCK SND FOR FIENDS
;WOO3 .WORD >F1FE,>34,>80F0,0 ;GIRL YEAH
;VICMSC .WORD >F2F0,100,>80F0,0 ;MUTOID VICTORY MUSIC
;STRYMSC .WORD >F280,300,>80F0,0 ;MUSIC FOR STORY IN DEMO
;ENDTUNE .WORD >F280,300,>80F0,0 ;END OF GAME TUNE
;DOOR1 .WORD >F376,5,>80F0,0 ;DOOR SLIDING OPEN
;DOOR2 .WORD >F376,5,>80F0,0 ;DOOR SLIDING SHUT
;FSHOT .WORD >F7A0,>2E,>80F0,0 ;POD SIZZLE
;TUNE4 .WORD >F2FF,120,>80F0,0 ;3RD BKRND TUNE (SNAKES)
;BTUNE1 .WORD >F2FF,>120,>80F0,0 ;MUTOID BOSS TUNE
;BTUNE2 .WORD >F2FF,>120,>80F0,0 ;FACE BOSS TUNE
;BTUNE3 .WORD >F2FF,>120,>80F0,0 ;SNAKE BOSS TUNE
;ICON .WORD >F3AF,>1E,>80F0,0 ;WEAPON ICON PICKUP
;GDTH2 .WORD >F3AF,>1E,>80F0,0 ;GRUNT DEATH
;RIFL .WORD >F2E8,>08,>80F0,0 ;RIFLE SPRAY WEAPON
;HEXP .WORD >F3A0,>10,>80F0,0 ;OTHER HULK DEATH
;HEXP2 .WORD >F3A0,>1E,>80F0,0 ;OTHER HULK DEATH
;HEXP3 .WORD >F3A0,>1E,>80F0,0 ;OTHER HULK DEATH
;BUBL .WORD >FBFB,>1E,>80F0,0 ;BLOOD BUBBLE
;LOWSND .WORD >FBFD,120,>80F0,0 ;WEAPON LOW SND
;LAZSND .WORD >F3F7,>10,>80F0,0 ;LAZER BOLTS FROM EYES
;BONS1 .WORD >F3FF,>1,>80F0,0 ;BONUS BUILDUP
;BONS2 .WORD >F3FE,>1,>80F0,0 ;BONUS END
;SCRM .WORD >F3EF,>10,>80F0,0 ;SNAKE SCREAM DEATH
;BEEP3 .WORD >F3F7,>8,>80F0,0 ;BONUS PRIZE ERASE
;MONIN .WORD >F3F8,>10,>80F0,0 ;MONITOR SLIDE IN
;MISS .WORD >F2E8,>08,>80F0,0 ;MISSLES
;MISS2 .WORD >F0E7,>08,>80F0,0 ;MISSLES FROM BAD GUYS
;BLDS .WORD >F3DF,>1E,>80F0,0 ;BLADES
;TING2 .WORD >F3F3,>0F,>80F0,0 ;BULLET HITTING WALL
;GIFT .WORD >F3A0,50,>80F0,0 ;PRESENT PICKUP
;GDTH1 .WORD >F3E4,35,>80F0,0 ;GRUNT DEATH
;EXP1 .WORD >F0E8,>08,>80F0,0 ;EXPLOSION SMALL
;EXP3 .WORD >F0E8,>0F,>80F0,0 ;EXOLOSION LARGE
;EXP3HI .WORD >F2FE,15,>80F0,0 ;EXOLOSION LARGE FOR SMRT BMB
;EXP3HIA .WORD >F8FF,35,>80F0,0 ;EXOLOSION LARGE FOR MUTOID
;EXP3HIB .WORD >F0FF-08,35,>80F0,0 ;EXOLOSION LARGE FOR SMRTBMB
;UGH .WORD >F8FE,15,>80F0,0 ;PLAYER DIE SCREAM
;SHKSND .WORD >F8FE,120,>80F0,0 ;PLAYER ELECTRIC SHOCK
;CROWD1 .WORD >F8F8,>4E,>80F0,0 ;CROWD NOISE CHEERS
;CROWD1A .WORD >F0F8,>3E,>80F0,0 ;CROWD NOISE CHEERS TVMNTR
;CROWD2 .WORD >F8F8,>2E,>80F0,0 ;CROWD NOISE OOHS N AAHS
;ICSND .WORD >F3EF,>1E,>80F0,0 ;ICON PICKUP
;
;SPEECH TABLES
;
;PZLSND .LONG PZ1SND,PZ2SND,PZ3SND
;PZ1SND .LONG WOO3,WOO1,WOO1 ;STSTR,SCAR,SVCR
;PZ2SND .LONG WOO3,WOO1,WOO1 ;STELE,SLUGG,STRIP
;PZ3SND .LONG WOO3,WOO1,WOO1 ;SHGM,SMWR,SMEAT
;
;SPEECH
;
;GOGO .WORD >F2FE,>18,>80F0,0 ;GIRLS 'GO!'
;UGH2 .WORD >F2E8,>14,>80F0,0 ;UGH! / SNAKE GRUNT
;UGH3 .WORD >F2E8,>14,>80F0,0 ;OOF!
;
;OUCH .WORD >F2FE,>40,>80F0,0 ;OUCH GROWL
;AWWSND .WORD >F2FD,>3A,>80F0,0 ;BIG AWW SND
;AWWSND2 .WORD >F2FF,>3A,>80F0,0 ;BIG AWW SND FLAT FACE
;EESND .WORD >F2FD,>30,>80F0,0 ;EE-AAH SND
;ONOSND .WORD >F2FE,>30,>80F0,0 ;OH NO SND
;HA2SND .WORD >F2FE,>30,>80F0,0 ;HAHA SND
;WPWPSND .WORD >F2FF,>40,>80F0,0 ;WHOOP WHOOP SND
;WPSSND .WORD >F2FF,>40,>80F0,0 ;LOTS OF WHOOPS
;
;BINGO .WORD >F2FF-07,>30,>80F0,0 ;"BINGO"
;MCSPK2 .WORD >F2FE,>3F,>80F0,0 ;BIG MONEY
;MCSPK3 .WORD >F2FE,>3F,>80F0,0 ;BIG PRIZES
;MCSPK5 .WORD >F8FF-06,>5B,>80F0,0 ;CONTESTANT 1
;MCSPK6 .WORD >F8FF-06,>5B,>80F0,0 ;CONTESTANT 2
;MCSPK7 .WORD >F8FE,>53,>80F0,0 ;"TOTAL CARNAGE"
;LEGOSND .WORD >F8FE,>30,>80F0,0 ;LET'S GO
;MCSPK9 .WORD >F2FF-07,>53,>80F0,0 ;TEN SECONDS
;MCSPK10 .WORD >F8FE,>43,>80F0,0 ;"YOU'LL NEED IT"
;MCSPK11 .WORD >F8FE,>43,>80F0,0 ;"BUY FOR A DOLLAR:
;MCSPK4 .WORD >F2FE,>3F,>80F0,0 ;"GOOD LUCK"
.END


541
BACKUP/T2SND.ASM Normal file
View File

@ -0,0 +1,541 @@
.MLIB "T2MACS.LIB"
.FILE 'T2SND.ASM'
.TITLE "<<< TERMINATOR 2 ---- SOUND PROCESSOR >>>"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
**************************************************************************
* *
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
.INCLUDE "T2.H" ;Game equates
.TEXT
*
*SOUND PROCESSOR MAKES SOUNDS FOR N-CHANNELS (CURRENTLY 6):
*
* CHANNEL #0 OKI CHANNEL 3
* CHANNEL #1 OKI CHANNEL 4
* CHANNEL #2 YAMAHA SOUNDS
* CHANNEL #3 MUSIC
* CHANNEL #4 OKI CHANNEL 1 (PLAYER 1)
* CHANNEL #5 OKI CHANNEL 2 (PLAYER 2)
*
*THE ROUTINE "SNDRES" MUST BE CALLED TO INITAILIZE SOUND BOARD
*ALSO SCRATCHPAD RAM MUST BE INITIALIZED TO ZERO
*THE ROUTINE "SNDPRC" MUST BE CALLED EVERY 16MSEC. IN THE MAIN PROGRAM LOOP
*(THE SAME PLACE WHERE "PRCDSP" IS NORMALLY CALLED)
*MAKING A SOUND:
*
*SOUND TABLE FORMAT
*
*SOUND DESCRIPTION:
* .WORD PRIORITY, TIME, SOUND CODE, (PRIORITY), (TIME), (SOUND CODE), 0
*
*SOUND ENDS IN 0000.
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
*SOUND WORD =4SSS SSS=SOUND CODE (ZERO TIME SOUND CODE)
*EXAMPLE 1:
*
* MOVI SND1,A0 ;LOAD ABSOLUTE ADDRESS OF SND1 IN A0
* CALLA ONESND ;MAKE ONE SND1
*
*SND1: .WORD >F0FF,>0100,>8088,0
*
*SND1 IS FOR CHANNEL=0, PRIORITY=FF (HIGHEST), TIME = 100H X 16MSEC.
*SOUND CODE = 88H
*SND1 WILL MAKE ONE SOUND 88H, AND NOT ALLOW IT TO BE INTERRUPTED
*FOR 100H X 16MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 0
*
* MOVI SND2,A0 ;LOAD SND2 ADDRESS
* MOVK 3,A1 ;REPEAT IT 3 TIMES
* CALLA SNDLD ;GO DO IT
*SND2: .WORD >F311,>0020,>8044,>8044,0
*
*SND2 IS ON CHANNEL 3, PRIORITY 11H. IT WILL MAKE ONE SOUND 44H, WAIT
*20H X 16 MSEC., THEN MAKE ANOTHER SOUND 44H, WHICH CANNOT BE INTERRUPTED
*FOR 20H X 16 MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 3
*
*SINCE A1 IS LOADED WITH A REPEAT COUNT OF 3, THIS PROCESS WILL BE REPEATED
*THREE TIMES. THE END RESULT WILL BE 6 SOUND 44H SEPERATED BY 20H X 16MSEC.
*
*NOTE: THE CHANNEL SPECIFIED BY "MUSICHAN" WILL CAUSE THE MUSIC SECTION OF
* THE SOUND BOARD TO BE STROBED.
*
SNDPRI .SET 0 ;PRIORITY (00=LOWEST, FF=HIGHEST)
SNDTIM .SET 010h ;TIMER 000-7FFF
SNDTMR .SET 020h ;TIMER COUNTDOWN
SNDST .SET 030h ;ADDRESS OF SOUND TABLE START
SNDPTR .SET 050h ;POINTER TO SOUND TABLE DATA
SNDREP .SET 070h ;REPEAT COUNT OF SOUND
*NOTE: IF YOU CHANGE SNDSIZ, MAKE SURE ANY CODE THAT USES IT AS A DIVISOR
* PERFORMS THE CORRECT OP. CURRENTLY IT IS A POWER OF 2 SO SRL IS USED.
SNDSIZ .SET 080h
SL_CHANNEL .EQU 21 ;SHIFTS REQUIRED TO ISOLATE CHANNEL NUMBER
SR_CHANNEL .EQU 29
NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS
MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES
*THESE STROBE EQUATES ARE FOR THE PINBALL SOUND CARD
RESETBIT EQU 0100H ;THIS IS THE SOUND RESET BIT
SOUNDBIT EQU 0200H ;THIS IS THE SOUND BOARD STROBE
EXTENDED_CODE .EQU 7AH ;SEND THIS TO INDICATE EXTENDED SOUND CALL
.BSS SNDSTR,NCHAN*SNDSIZ ;RESERVE STORAGE AREA
.BSS SNDEND,0 ;END OF SOUND PROCESSOR RAM
**************************************************************************
* *
* A_SOUND - ANIM FUNC TO MAKE A SOUND CALL *
* A8 = PTR TO OBJECT *
* *A8(AnimFrm),L = PTR TO SOUND SCRIPT *
* NOTE: ANIM FUNCS DO NOT PUSH REGISTERS! *
* *
**************************************************************************
A_SOUND
CALLA GETAFARG_LONG
CALLR ONESND
RETS
**************************************************************************
* *
* CLRSNDDB - CLEAR THE SOUND PROCESSOR DATA BASE *
* *
**************************************************************************
CLRSNDDB
MMTM SP,A0,A1
MOVI SNDSTR,A1
CLR A0
CLRSDBL
MOVE A0,*A1+,W
CMPI SNDEND,A1
JRLO CLRSDBL
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* ONESND - MAKE ONE SOUND *
* A0 = PTR TO SOUND SCRIPT (0 = NO SOUND, JUST RETURN) *
* RETURNS: *
* A0 = SAME *
* *
**************************************************************************
ONESND:
PUSH A1
MOVE A0,A0 ;DID HE CALL WITH A NULL?
JRZ ONESND_X ;BR = YES
.IF DEBUG
MOVE A0,A1
SLL 28,A1
SRL 28,A1
JRNZ $
.ENDIF
MOVK 1,A1
CALLR SNDLD
ONESND_X:
PULLQ A1
RETS
*
*SOUND LOADER
*A0=SOUND ADDRESS, A1=REPEAT COUNT
*SOUND DESCRIPTION= PRIORITY,TIME,SOUND CODE,(PRIORITY),(TIME),(SOUND CODE),0
*SOUND ENDS IN ZERO
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
*SOUND WORD =4SSS SSS=SOUND CODE (ZERO TIME SOUND CODE)
SNDLD:
MMTM SP,A0,A1,A2,A3,A4,A5
MOVE @SOUNDSUP,A4,W
JRNZ SNDLDX ;SOMEBODY SAYS NO!
MOVE *A0,A5 ;GET PRIORITY BYTE
MOVE A5,A2
MOVI SNDSIZ,A3
SLL SL_CHANNEL,A5
SRL SR_CHANNEL,A5 ;EXTRACT CHANNEL BITS
MPYU A5,A3
ADDI SNDSTR,A3 ;CALC RAM CHANNEL ADDRESS
MOVE *A3(SNDPRI),A4 ;GET CURRENT PRIORITY
BTST 11,A4 ;CURRENT SOUND NON-INTERRUPTABLE ?
JRNE SNDLDX ;YES, CAN NEW SOUND
MOVE A2,A5 ;EXTRACT PRIORITY
SLL 24,A5
SRL 24,A5
SLL 24,A4
SRL 24,A4
CMP A5,A4 ;NEW ONE GREATER OR EQUAL?
JRHI SNDLDX ;OLD ONE IS GREATER, FORGET NEW SOUND
**** JRLO SNDLD1 ;NEW ONE IS GREATER, DO IT
**** MOVE *A3(SNDPRI),A4 ;INTERRUPTABLE BY EQUAL?
**** BTST 10,A4
**** JRNE SNDLDX ;NON-INTERRUPTABLE BY EQUAL, CAN NEW GUY
****SNDLD1:
MOVE A0,A4
MOVE A3,A0 ;CHANNEL RAM ADDRESS
MOVE A4,*A0(SNDPTR),L ;SETUP SOUND DATA POINTER (ROM)
MOVE A4,*A0(SNDST),L ;SETUP SOUND START POINTER
MOVE A1,*A0(SNDREP) ;REPEAT COUNT
CALLR SNDUPD ;START SOUND GOING
SNDLDX:
MMFM SP,A0,A1,A2,A3,A4,A5
RETS
*
*SOUND PROCESSOR CALLED EVERY 16 MSEC.
*
SNDPRC:
MOVI SNDSTR,A0
MOVK NCHAN,A1
SNDLP0:
MOVE *A0(SNDTMR),A2 ;CHECK TIMER
JREQ SNDPLP ;EQUAL, INACTIVE CHANNEL
DEC A2
MOVE A2,*A0(SNDTMR) ;DEC TIME
JRNE SNDPLP ;NO TIMEOUT
CALLR SNDUPD ;UPDATE SOUND
SNDPLP:
ADDI SNDSIZ,A0
DSJS A1,SNDLP0
RETS
*
*UPDATE SOUND
*A0=POINTER TO SOUND CHANNEL RAM
*
SNDUPD:
SNDUP0:
MOVE *A0(SNDPTR),A2,L ;GET POINTER TO ROM TABLE
SNDUP1:
MOVE *A2+,A3 ;GET NEXT ROM TABLE ENTRY
JREQ SNDUP5 ;END OF SOUND
*CHECK FOR PRIORITY
CMPI ->1000,A3
JRLO SNDUP2 ;NOT PRIORITY CHANGE
MOVE A3,*A0(SNDPRI) ;UPDATE PRIORITY
JRUC SNDUP1 ;GO GET NEXT ONE
*CHECK FOR SOUND CODE
SNDUP2:
CMPI 4000H,A3
JRLO SNDUP3
CMPI ->8000,A3
JRHS SNDUP2A
MOVE A0,A5
SUBI SNDSTR,A5
SRL 7,A5 ;DIVIDE BY 128
CALLR SNDSND ;SEND SOUND CODE
JRUC SNDUP1 ;GET THE NEXT ONE BOYS
SNDUP2A:
MOVE A0,A5
SUBI SNDSTR,A5
SRL 7,A5 ;DIVIDE BY 128
**************************************************************************
* *
* MOVI SNDSIZ,A6 ;IF SNDSIZ IS NOT A POWER OF 2, *
* DIVU A6,A5 ;USE DIVIDE TO CALCULATE SOUND CHANNEL # *
* *
**************************************************************************
CALLR SNDSND ;SEND SOUND CODE
MOVE *A0(SNDTIM),*A0(SNDTMR)
MOVE A2,*A0(SNDPTR),L ;STORE POINTER
RETS
*TIMER VALUE X 16MSEC.
SNDUP3:
MOVE A3,*A0(SNDTIM)
MOVE A3,*A0(SNDTMR)
JRUC SNDUP1 ;SET TIMER VALUE, AND GO GET NEXT
*CHECK FOR REPEATERS
SNDUP5:
MOVE *A0(SNDREP),A3 ;CHECK REPEAT COUNT
DEC A3
MOVE A3,*A0(SNDREP)
JREQ SNDUP6 ;ALL OVER
MOVE *A0(SNDST),*A0(SNDPTR)
JRUC SNDUP0 ;START SOUND OVER
*SOUND IS OVER CLEAR THE CHANNEL
SNDUP6:
CLR A2
MOVE A2,*A0(SNDPRI) ;CLEAR SOUND PRIORITY
MOVE A2,*A0(SNDST),L ;CLEAR SOUND PTR
SNDUPX:
RETS
**************************************************************************
* *
* SNDSND - RAW HARDWARE SOUND CALL *
* A3=SOUND CODE B0-B7 *
* A5=SOUND CHANNEL # *
* RETURNS: *
* NOTHING *
* NOTE: TRASHES A14 *
* *
**************************************************************************
SNDSND:
MMTM SP,A0,A3
SLL 20,A3
SRL 20,A3 ;STRIP OFF BITS
CMPI 100H,A3 ;IS THIS AN EXTENDED SOUND CALL?
JRLO SNDSND_BASE ;BR = NO
MOVE A3,A0
MOVI EXTENDED_CODE,A3 ;SEND THE EXTENDED FEATURE
CALLR SNDSND
MOVE A0,A3
SLL 24,A3
SRL 24,A3
SNDSND_BASE
GETST A14
DINT
MOVE @SOUND_COPY,A0,W
SRL 8,A0
SLL 8,A0
ADD A3,A0
ANDNI SOUNDBIT,A0
MOVE A0,@SOUND_COPY,W
MOVE A0,@SOUND,W ;HIT SOUND
PUTST A14
MOVI 8,A0
DSJS A0,$ ;SLOW IT DOWN A BIT
GETST A14
DINT
MOVE @SOUND_COPY,A0,W
ORI SOUNDBIT|RESETBIT,A0
MOVE A0,@SOUND_COPY,W
MOVE A0,@SOUND,W ;HIT SOUND
PUTST A14
MOVI 390,A0 ;MAX FIRQ DELAY ON SOUND BOARD IS 180 micros
DSJS A0,$
MMFM SP,A0,A3
RETS
**************************************************************************
* *
* SNDRES - FULL SOUND BOARD RESET, SOUND CHECKSUMS ARE REPORTED. *
* *
* NOTE: TRASHES A14 *
* *
**************************************************************************
SNDRES:
PUSH A0
GETST A14
DINT
MOVE @SOUND_COPY,A0,W
ANDNI RESETBIT,A0
MOVE A0,@SOUND_COPY,W
MOVE A0,@SOUND,W
PUTST A14
MOVI 100,A0 ;WAIT FOR IT TO CATCH
DSJS A0,$
GETST A14
DINT
MOVE @SOUND_COPY,A0,W
ORI RESETBIT|SOUNDBIT,A0
MOVE A0,@SOUND_COPY,W
MOVE A0,@SOUND,W
PUTST A14
PULLQ A0
RETS
**************************************************************************
* *
* IS_SOUND - CHECK SOUND DATA BASE TO SEE IF THE GIVEN SOUND SCRIPT *
* IS CURRENTLY BEING PROCESSED. (I.E. ANOTHER SOUND *
* HAS OR HAS NOT TAKEN OVER.) *
* A0 = PTR TO SOUND SCRIPT *
* RETURNS *
* Z = SAME SCRIPT *
* NZ = SCRIPT NO LONGER ACTIVE *
* *
**************************************************************************
IS_SOUND
PUSH A3
MOVE *A0,A14,W ;GET CHANNEL/PRIORITY WORD
MOVI SNDSIZ,A3
SLL SL_CHANNEL,A14
SRL SR_CHANNEL,A14 ;EXTRACT CHANNEL BITS
MPYU A14,A3
ADDI SNDSTR,A3 ;GET THE CORRECT RAM CHANNEL ADDRESS
MOVE *A3(SNDST),A14,L
CMP A0,A14 ;SAME SCRIPT ACTIVE?
PULL A3
RETS
**************************************************************************
* *
* CKSNDPRI - CHECK SOUND CHANNEL FOR EXISTANCE OF A GIVEN SOUND PRIORITY *
* A0 = CHANNEL # *
* A1 = SOUND PRIORITY *
* RETURNS: *
* CARRY CLEAR = PRIORITY NOT ACTIVE *
* CARRY SET = PRIORITY ACTIVE *
* *
**************************************************************************
CKSNDPRI
MMTM SP,A0,A2
MOVI SNDSTR,A2
SLL 7,A0 ;CHANNEL x 128
ADD A2,A0 ;OFFSET TO CORRECT CHANNEL AREA
MOVB *A0,A0
CMP A0,A1
JRNE CKSPRI1 ;BR = PRIORITY NOT ACTIVE
SETC
MMFM SP,A0,A2
RETS
CKSPRI1
CLRC
MMFM SP,A0,A2
RETS
**************************************************************************
* *
* QSNDRST - QUIET SOUND RESET, NO DIAGNOSTIC DONGERS *
* *
**************************************************************************
QSNDRST
MMTM SP,A3,A5
CALLR SNDRES ;RESET THE BOARD
MOVI 100,A0
DSJS A0,$ ;NEED 30 mics BEFORE SENDING CODE
CLR A3
CLR A5
CALLR SNDSND ;PEND ON DIG SIDE
MOVK MUSICHAN,A5
CALLR SNDSND ;PEND ON YAMAHA SIDE
MMFM SP,A3,A5
RETS
**************************************************************************
* *
* FADE_UP - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_UP:
MOVI FADE_UP_TAB,A8
JRUC FADER
**************************************************************************
* *
* FADE_DOWN - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_DOWN:
MOVI FADE_DOWN_TAB,A8
JRUC FADER
FADER:
MOVI FADEPID,A0
CLR A1
NOT A1
CALLA KILALL ;WASTE ANY OTHER FADERS
FADE_LP:
MOVE *A8+,A0,L
JRZ FADE_DONE
CALLR ONESND
SLOOPR A11,FADE_LP
FADE_DONE:
DIE
FADE_UP_TAB:
.LONG VOLUME0
.LONG VOLUME1
.LONG VOLUME2
.LONG VOLUME3
.LONG VOLUME4
.LONG VOLUME5
.LONG VOLUME6
.LONG VOLUME7
.LONG VOLUME8
.LONG VOLUME9
.LONG VOLUMEA
.LONG VOLUMEB
.LONG VOLUMEC
.LONG VOLUMED
.LONG VOLUMEE
.LONG VOLUMEF
.LONG 0
FADE_DOWN_TAB:
.LONG VOLUMEF
.LONG VOLUMEE
.LONG VOLUMED
.LONG VOLUMEC
.LONG VOLUMEB
.LONG VOLUMEA
.LONG VOLUME9
.LONG VOLUME8
.LONG VOLUME7
.LONG VOLUME6
.LONG VOLUME5
.LONG VOLUME4
.LONG VOLUME3
.LONG VOLUME2
.LONG VOLUME1
.LONG VOLUME0
.LONG 0
**************************************************************************
* *
* POPULAR SOUND CALLS *
* *
**************************************************************************
*
*HIGH PRIORITY OFF CODES, NOTHING SHOULD BEAT THESE
CVSDOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD BACKGROUND LOOP OFF
CVSDFOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD FOREGROUND LOOP OFF
SOUNDOFF .WORD >F0FF|>800,>01,>8000,0 ;TURN SOUND SIDE OFF
ALLOFF .WORD >F3FF|>800,>01,>8000,0 ;MUSIC AND EFFECTS OFF
MUSICOFF .WORD >F3FF|>800,>01,>807E,0 ;TURN JUST MUSIC OFF
MUSITOFF .WORD >F3FF|>800,>01,>8040,0 ;MUSIC TRANSITION OFF
YAMOFF .WORD >F2FF|>800,>01,>807F,0 ;YAMAHA EFFECT OFF
VOLUME0 .WORD >F3FE,>1,>802F,0
VOLUME1 .WORD >F3FE,>1,>802E,0
VOLUME2 .WORD >F3FE,>1,>802D,0
VOLUME3 .WORD >F3FE,>1,>802C,0
VOLUME4 .WORD >F3FE,>1,>802B,0
VOLUME5 .WORD >F3FE,>1,>802A,0
VOLUME6 .WORD >F3FE,>1,>8029,0
VOLUME7 .WORD >F3FE,>1,>8028,0
VOLUME8 .WORD >F3FE,>1,>8027,0
VOLUME9 .WORD >F3FE,>1,>8026,0
VOLUMEA .WORD >F3FE,>1,>8025,0
VOLUMEB .WORD >F3FE,>1,>8024,0
VOLUMEC .WORD >F3FE,>1,>8023,0
VOLUMED .WORD >F3FE,>1,>8022,0
VOLUMEE .WORD >F3FE,>1,>8021,0
VOLUMEF .WORD >F3FE,>1,>8020,0
TEMPO_UP
.WORD >F2FE,>1,>8080,0
TEMPO_DOWN
.WORD >F2FE,>1,>8081,0
.END


2550
BACKUP/T72.ASM Normal file

File diff suppressed because it is too large Load Diff

50
BACKUP/TEMP.ASM Normal file
View File

@ -0,0 +1,50 @@
;ADD THIS TO FIEND.ASM
.DEF MAXFND,FND_CNT
.BSS MAXFND,16 ;MAXIMUM ALLOWED ON SCRN THE WAVE
.BSS FND_CNT,16 ;CURRENT TOTAL FIENDS ON SCRN
ONE_FND
;A9=[Y,X] OF SPOT TO START FROM
;A10=DIRECTION
;8 1 2
;7 3
;6 5 4
;IF 1 OR 5, JUMP AT PLAYER, OTHERWISE JUST WALK OUT!
ONE_FND
;A9=[Y,X] OF SPOT TO START FROM
;A10=DIRECTION
;8 1 2
;7 3
;6 5 4
;IF 1 OR 5, JUMP AT PLAYER, OTHERWISE JUST WALK OUT!
;ADD THESE LINES SO THE SPAWN FIEND CODE WILL WORK
MOVE @FND_CNT,A0 ;RUNNING TOTAL ON SCREEN
INC A0
MOVE A0,@FND_CNT
CLR A1
MOVY A9,A1
MOVX A9,A0
SLL 16,A0
MOVE A10,A9
JRUC IN_HERE
;AT LABEL FIEND:
MOVE @FND_CNT,A0
INC A0
MOVE A0,@FND_CNT
DIE
;AT LABEL FC:
MOVE @FND_CNT,A0 ;EVERY FIEND WHO DIES FALLS IN HERE
DEC A0 ;SO WE DEC ON SCREEN CNT
MOVE A0,@FND_CNT


2480
BACKUP/TEST.ASM Normal file

File diff suppressed because it is too large Load Diff

103
BACKUP/TEXT.ASM Normal file
View File

@ -0,0 +1,103 @@
.FILE 'TEXT.ASM'
.TITLE "ROBO-RAMA FONTS AND TEXT MESSAGES"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
;
; INITIATED: APRIL 13,1989
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
.INCLUDE "TEXT.TBL"
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF DUXPAL,BLLNP5
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF RD7FONT,RD15FONT,WARPTXT,RD8FONT,FONT7A,FON15A
.DEF FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157
.DEF FON158,FON159
.DEF FON15X,FON15W,FON15V,FON15M
;
;UNINITIALIZED RAM DEFINITIONS
;
;
;EQUATES FOR THIS FILE
;
.TEXT
**************************************************************************
* *
* FONT TABLES STARTING AT ASCII $21 *
* *
**************************************************************************
*
*8 POINT FONT.
*
RD8FONT
.LONG FONT8EXCLAM,FONT7quote,FONT7pound,FONT7doll,FONT7percen,FONT7and
.LONG FONT8APOST,FONT7parenl,FONT7parenr,FONT7ast,FONT7plus
.LONG FONT8COMMA,FONT8DASH,FONT8PERIOD,FONT7forsp,FONT70,FONT71
.LONG FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78,FONT79
.LONG FONT7colon,FONT7semicol,FONT7less,FONT7equal,FONT7more
.LONG FONT7quest,FONT7dash
.LONG FONT8A,FONT8B,FONT8C,FONT8D,FONT8E,FONT8F,FONT8G,FONT8H
.LONG FONT8I,FONT8J,FONT8K,FONT8L,FONT8M,FONT8N,FONT8O,FONT8P
.LONG FONT8Q,FONT8R,FONT8S,FONT8T,FONT8U,FONT8V,FONT8W,FONT8X
.LONG FONT8Y,FONT8Z
; .LONG FONT7bracl,FONT7backsp,FONT7bracr,FONT7excla,FONT7line
; .LONG FONT7apost
*
*7 POINT FONT.
*
RD7FONT
.LONG FONT7excla,FONT7quote,FONT7pound,FONT7doll,FONT7percen,FONT7and
.LONG FONT7apost,FONT7parenl,FONT7parenr,FONT7ast,FONT7plus
.LONG FONT7comma,FONT7dash,FONT7period,FONT7forsp,FONT70,FONT71
.LONG FONT72,FONT73,FONT74,FONT75,FONT76,FONT77,FONT78,FONT79
.LONG FONT7colon,FONT7semicol,FONT7less,FONT7equal,FONT7more
.LONG FONT7quest,FONT7dash
.LONG FONT7A,FONT7B,FONT7C,FONT7D,FONT7E,FONT7F,FONT7G,FONT7H
.LONG FONT7I,FONT7J,FONT7K,FONT7L,FONT7M,FONT7N,FONT7O,FONT7P
.LONG FONT7Q,FONT7R,FONT7S,FONT7T,FONT7U,FONT7V,FONT7W,FONT7X
.LONG FONT7Y,FONT7Z
.LONG FONT7bracl,FONT7backsp,FONT7bracr,FONT7excla,FONT7line
.LONG FONT7apost
.LONG FONT7a,FONT7b,FONT7c,FONT7d,FONT7e,FONT7f,FONT7g,FONT7h
.LONG FONT7i,FONT7j,FONT7k,FONT7l,FONT7m,FONT7n,FONT7o,FONT7p
.LONG FONT7q,FONT7r,FONT7s,FONT7t,FONT7u,FONT7v,FONT7W,FONT7X
.LONG FONT7Y,FONT7Z
.LONG FONT7paren2l,FONT7break,FONT7paren2r
*
*15 POINT FONT. @ is missing (GNP 10/20/88)
*
RD15FONT
.LONG FON15excla,FON15quote,FON15poun,FON15doll,FON15perc,FON15and
.LONG FON15apos,FON15parenl,FON15parenr,FON15ast,FON15plus
.LONG FON15comma,FON15dash,FON15period,FON15forsp,FON150,FON151
.LONG FON152,FON153,FON154,FON155,FON156,FON157,FON158,FON159
.LONG FON15colon,FON15semicol,FON15less,FON15equal,FON15more
.LONG FON15quest,FON15dash
WARPTXT .LONG FON15A,FON15B,FON15C,FON15D,FON15E,FON15F,FON15G,FON15H
.LONG FON15I,FON15J,FON15K,FON15L,FON15M,FON15N,FON15O,FON15P
.LONG FON15Q,FON15R,FON15S,FON15T,FON15U,FON15V,FON15W,FON15X
.LONG FON15Y,FON15Z
.LONG FON15brackl,FON15backsp,FON15brackr,FON15carr,FON15line
.LONG FON15apos1
.LONG FON15la,FON15lb,FON15lc,FON15ld,FON15le,FON15lf,FON15lg,FON15lh
.LONG FON15li,FON15lj,FON15lk,FON15ll,FON15lm,FON15ln,FON15lo,FON15lp
.LONG FON15lq,FON15lr,FON15ls,FON15lt,FON15lu,FON15lv,FON15lw,FON15lx
.LONG FON15ly,FON15lz
.LONG FON15paren2l,FON15break,FON15paren2r
.END


35
BACKUP/TMP.ASM Normal file
View File

@ -0,0 +1,35 @@
BULPRC .EQU PDATA+352 ;UHL BULLET PROCESS FIRING BULLS!
;4 OCLOCK
MOVI DMAWNZ|M_PIXSCAN|M_FLIPH,A4
MOVE *A8(OXVAL),A0,L
ADDI [13H,0],A0
MOVE *A8(OYVAL),A1,L
SUBI [12H,0],A1
MOVK 2,A9
JRUC DOIT
;8 OCLOCK
MOVI DMAWNZ|M_PIXSCAN,A4
MOVE *A8(OXVAL),A0,L
ADDI [10H,0],A0
MOVE *A8(OYVAL),A1,L
SUBI [12H,0],A1
MOVK 3,A9
DOIT
MOVI 160,A3
MOVI AHMEDBLST1,A2
MOVI CLSENMY|TYPLAYR|SUBFLM,A5
CLR A6
CLR A7
MOVE A8,A10
CALLA BEGINOBJ2
CREATE FLMPID,FLAMING
;2=4 OCLOCK
;3=8 OCLOCK
FIREYX .LONG [52H,0FFF8H],[053H,7],[1,1],[1,-1]


301
BACKUP/TRIG.ASM Normal file
View File

@ -0,0 +1,301 @@
.FILE 'TRIG.ASM'
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
.DEF GETSIN,GETCOS
.DEF XYSEEK2,XYSEEK2A
HALFPI .set 102944
PI .set 205887
X3HALFPI .set 308831
X2PI .set 411775
.text
;SEEK X-Y COORDINATE
;A8=OBJECT SEEKING
;A5=X COORD TO SEEK
;A6=Y COORD TO SEEK
;A7=MULTIPLIER OF VELOCITY
;RETURNS
;A5=X VEL
;A6=Y VEL
;
;NABBED FROM EUGENE JARVIS FOOTBALL CODE
;
XYSEEK2
MOVE *A8(OXPOS),A3,0
MOVE *A8(OYPOS),A4,0
XYSEEK2A
SUB A3,A5 ;FIND DIFFERENCE
SUB A4,A6
MOVE A6,A3 ;
MOVE A5,A1
ABS A5
ABS A6
ADD A5,A6 ;CALC SUM ABS(DX+DY)
SLL 16,A1 ;SHIFT TO ACCOMODATE FRACTIONAL VELOCITY
SLL 16,A3
DIVS A6,A1 ;GENERATE SPEED RATIOS
DIVS A6,A3
; MOVI 60H,A5 ;MULTIPLY BY VELOCITY FACTOR
MOVE A7,A5
MPYS A5,A3
MPYS A1,A5 ;FINAL X VEL
SRA 4,A3
SRA 4,A5
MOVE A3,A6 ;FINAL Y VEL
RETS
******************************************************************
GETSIN:
; PARMS - A0 = theta in s15.16
; RETURNS - A0 = sin(theta) in s15.16
;return A14 = theta normalized to range of 0 to 2Pi
mmtm SP,A2
;long int getsin (theta)
;long int theta;
;{
;int indx;
;long int retval;
;while (theta < 0) theta += X2PI;
TRIGLP1:
move A0,A0
jrnn TRIGSK1
addi X2PI,A0,L
jruc TRIGLP1
TRIGSK1:
;while (theta > X2PI) theta -= X2PI;
TRIGLP2:
cmpi X2PI,A0,L
jrn TRIGSK2
subi X2PI,A0,L
jruc TRIGLP2
TRIGSK2:
move A0,A14 ;A14 theta normalized
;if (theta < HALFPI) {
; indx = ((theta+5) >> 9);
; retval = sintbl[indx];
; }
cmpi HALFPI,A0,L
jrnn TRIGSK3
move A0,A2
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
mmfm SP,A2
rets
TRIGSK3:
;else if (theta <= PI) {
; indx = (((PI - theta)+5) >> 9);
; retval = sintbl[indx];
; }
cmpi PI,A0,L
jrp TRIGSK4
movi PI,A2,L
sub A0,A2
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
mmfm SP,A2
rets
TRIGSK4:
;else if (theta < X3HALFPI) {
; indx = (((theta - PI) + 5) >> 9);
; retval = sintbl[indx];
; retval = -retval;
; }
cmpi X3HALFPI,A0,L
jrnn TRIGSK5
move A0,A2
subi PI,A2,L
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
neg A0
mmfm SP,A2
rets
TRIGSK5:
;else {
; indx = (((X2PI - theta) + 5) >> 9);
; retval = sintbl[indx];
; retval = -retval;
; }
movi X2PI,A2,L
sub A0,A2
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
neg A0
mmfm SP,A2
rets
******************************************************************
.text
******************************************************************
GETCOS:
; PARMS - A0 = theta in s15.16
; RETURNS - A0 = cos(theta) in s15.16
mmtm SP,A2
;long int getcos (theta)
;long int theta;
;{
;int indx;
;long int retval;
;while (theta < 0) theta += X2PI;
TRIGLP3:
move A0,A0
jrnn TRIGSK6
addi X2PI,A0,L
jruc TRIGLP3
TRIGSK6:
;while (theta > X2PI) theta -= X2PI;
TRIGLP4:
cmpi X2PI,A0,L
jrn TRIGSK7
subi X2PI,A0,L
jruc TRIGLP4
TRIGSK7:
move A0,A14 ;A14 theta normalized
;if (theta < HALFPI) {
; indx = (((HALFPI - theta) + 5) >> 9);
; retval = sintbl[indx];
; }
cmpi HALFPI,A0,L
jrnn TRIGSK8
movi HALFPI,A2,L
sub A0,A2
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
mmfm SP,A2
rets
TRIGSK8:
;else if (theta <= PI) {
; indx = (((theta - HALFPI) + 5) >> 9);
; retval = sintbl[indx];
; retval = -retval;
; }
cmpi PI,A0,L
jrp TRIGSK9
move A0,A2
subi HALFPI,A2,L
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,l
move *A2,A0,1
neg A0
mmfm SP,A2
rets
TRIGSK9:
;else if (theta < X3HALFPI) {
; indx = (((X3HALFPI - theta) + 5) >> 9);
; retval = sintbl[indx];
; retval = -retval;
; }
;else if (theta < X3HALFPI) {
; indx = (((theta - PI) + 5) >> 9);
; retval = sintbl[indx];
; retval = -retval;
; }
cmpi X3HALFPI,A0,L
jrnn TRIGSK10
movi X3HALFPI,A2,L
sub A0,A2
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
neg A0
mmfm SP,A2
rets
TRIGSK10:
;else {
; indx = (((theta - X3HALFPI) + 5) >> 9);
; retval = sintbl[indx];
; }
move A0,A2
subi X3HALFPI,A2,L
addk 5,A2
sra 9,A2
sla 5,A2
addi SINTBL,A2,L
move *A2,A0,1
mmfm SP,A2
rets
*****************************************************************
;/* Table of sin from 0 through PI/2 Radians in 2**-7 increments */
.data
.even
SINTBL:
.int 0,511,1023,1535,2047,2559,3070,3582
.int 4093,4604,5114,5625,6135,6644,7153,7662
.int 8170,8678,9185,9692,10198,10703,11208,11712
.int 12216,12718,13220,13721,14221,14721,15219,15717
.int 16213,16709,17204,17697,18189,18681,19171,19660
.int 20148,20634,21120,21604,22086,22568,23048,23526
.int 24004,24479,24953,25426,25897,26367,26835,27301
.int 27766,28228,28690,29149,29607,30063,30517,30969
.int 31419,31867,32314,32758,33201,33641,34080,34516
.int 34950,35382,35812,36240,36665,37088,37509,37928
.int 38344,38758,39170,39579,39986,40391,40793,41192
.int 41589,41984,42375,42765,43151,43535,43917,44295
.int 44671,45045,45415,45783,46148,46510,46869,47226
.int 47579,47930,48278,48622,48964,49303,49639,49972
.int 50301,50628,50951,51272,51589,51903,52214,52522
.int 52827,53128,53426,53721,54013,54301,54586,54868
.int 55146,55421,55693,55961,56226,56487,56745,56999
.int 57250,57498,57741,57982,58219,58452,58682,58908
.int 59131,59349,59565,59776,59985,60189,60390,60587
.int 60780,60970,61156,61338,61516,61691,61862,62029
.int 62192,62352,62507,62659,62807,62952,63092,63229
.int 63361,63490,63615,63736,63854,63967,64076,64182
.int 64283,64381,64475,64564,64650,64732,64810,64884
.int 64954,65020,65082,65140,65195,65245,65291,65333
.int 65371,65406,65436,65462,65484,65503,65517,65527
.int 65533,65535,65534


1755
BACKUP/UTIL.ASM Normal file

File diff suppressed because it is too large Load Diff

4451
BACKUP/WAVES.ASM Normal file

File diff suppressed because it is too large Load Diff

2295
BAKGND.ASM Normal file

File diff suppressed because it is too large Load Diff

1224
BAKGND.ASV Normal file

File diff suppressed because it is too large Load Diff

10184
BG.ASM Normal file

File diff suppressed because it is too large Load Diff

56
BGNDEQU.H Normal file
View File

@ -0,0 +1,56 @@
WAIR1 .EQU 450
HAIR1 .EQU 962
WAIR2 .EQU 2221
HAIR2 .EQU 2114
WMODZ .EQU 1707
HMODZ .EQU 2149
WDRIVE .EQU 3164
HDRIVE .EQU 364
WXWAY .EQU 4370
HXWAY .EQU 378
WTITLE .EQU 401
HTITLE .EQU 264
WHOME1 .EQU 390
HHOME1 .EQU 259
WHOME .EQU 405
HHOME .EQU 200
WHOME2 .EQU 414
HHOME2 .EQU 259
WFORTA .EQU 950
HFORTA .EQU 1403
WNEWD2 .EQU 862
HNEWD2 .EQU 1930
WDSRTHRE .EQU 870
HDSRTHRE .EQU 1156
WDSRTONE .EQU 788
HDSRTONE .EQU 978
WNEWD .EQU 859
HNEWD .EQU 818
WHUTLCK .EQU 498
HHUTLCK .EQU 302
WSEC1 .EQU 551
HSEC1 .EQU 2570
WRACK .EQU 422
HRACK .EQU 259
WLOCKA .EQU 488
HLOCKA .EQU 304
WMODB .EQU 464
HMODB .EQU 342
WMODC .EQU 408
HMODC .EQU 282
WMODD .EQU 393
HMODD .EQU 267
WMODJ .EQU 392
HMODJ .EQU 530
WMODH .EQU 477
HMODH .EQU 313
WHISC .EQU 401
HHISC .EQU 257
WHISCORE .EQU 390
HHISCORE .EQU 273
WCHAIR2 .EQU 207
HCHAIR2 .EQU 229
WELECRM1 .EQU 392
HELECRM1 .EQU 228
WBOTM .EQU 1262
HBOTM .EQU 1412

636
BGNDPAL.ASM Normal file
View File

@ -0,0 +1,636 @@
.OPTION B,D,L,T
.include "BGNDTBL.GLO"
.DATA
HNGRP: ;PAL #5
.word 64 ;pal size
.word >0,>0,>800,>820,>C40,>2400,>C60,>1060,>1480,>14A0
.word >18A0,>18C0,>1CC0,>20E0,>2100,>2500,>843,>1481,>18A2,>1CC3
.word >C64,>20E4,>2505,>40A,>14A6,>C0F,>1CE8,>252A,>3000,>2D20
.word >2926,>2D60,>2D47,>3168,>2D6C,>3800,>3560,>4400,>6400,>3589
.word >35A0,>39AA,>45C0,>3DCB,>41EC,>460D,>4A2E,>4211,>4E4F,>5270
.word >1084,>14A5,>3160,>45E0,>4600,>39CE,>0,>0,>0,>0
.word >0,>0,>0,>0
CANDB: ;PAL #8
.word 64 ;pal size
.word >0,>820,>840,>C40,>1040,>1060,>1460,>84,>A5,>1480
.word >14A0,>1880,>C6,>E7,>18C6,>108,>109,>129,>16C,>1CE
.word >252,>1CA0,>20A1,>20C0,>28C0,>2CE0,>3100,>3942,>4185,>45A7
.word >522B,>7E60,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>7FFF
JEEPP2: ;PAL #11
.word 64 ;pal size
.word >0,>0,>40,>80,>A1,>C1,>101,>121,>162,>182
.word >1C2,>1E3,>223,>243,>283,>2E4,>0,>842,>1084,>18C6
.word >2108,>294A,>318C,>39CE,>4210,>4E73,>6318,>739C,>7FF7,>60
.word >A1,>121,>4C1,>521,>D81,>DE1,>E02,>16A3,>10A4,>1906
.word >C63,>3C00,>6C43,>5400,>5ECA,>6306,>5ACE,>4E6B,>ED,>171
.word >237,>0,>0,>0,>0,>0,>0,>0,>0,>0
.word >0,>0,>0,>7FFF
BBPALS:
.long ARPRTPL
.long DESRTPL
.long GRNDP
.long FRTCLS
.long DGP1
.long HNGRP
.long PPLP
.long UFLP
.long CANDB
.long BLUJET
.long BULLET
.long JEEPP2
.long DGP3
.long SPYDERP1
.long FNDP
.long JEEPP
.long SCOREPAL
.long STUFFP
.long DUXPAL
JETPAL: ;PAL #4
.word 64 ;pal size
.word >0,>0,>1420,>1880,>1C00,>2000,>1CA0,>20A0,>20C0,>2400
.word >24C0,>24E0,>2800,>2C00,>28E0,>2900,>2D00,>1,>421,>463
.word >C63,>1483,>14A2,>1084,>14A5,>10C6,>1CE7,>1D08,>156C,>2529
.word >294A,>2D6B,>29CF,>3000,>3400,>3100,>3120,>3520,>3540,>3800
.word >3841,>3920,>3940,>3C00,>3D40,>3D60,>4000,>4160,>4C21,>318C
.word >35AD,>4180,>4580,>4980,>4DA0,>59E0,>39CE,>31F0,>3DEF,>3A32
.word >4210,>4631,>4E73,>5EF7
ZZPALS:
.long BULLET
.long DESRTPL
.long GRNDP
.long FRTCLS
.long JETPAL
.long HNGRP
.long PPLP
.long GRNJET
.long STUFFP
.long DUXPAL
PITP: ;PAL #0
.word 2 ;pal size
.word >0,>1861
AAPALS:
.long PITP
.long DESRTPL
.long FRTCLS
.long GRNDP
.long PPLP
.long BULLET
.long JEEPP2
.long DUXPAL
.long STUFFP
PCP: ;PAL #7
.word 64 ;pal size
.word >0,>0,>C63,>1084,>10A3,>10C3,>14A5,>18C6,>14E4,>1904
.word >2108,>1924,>1564,>1184,>842,>1063,>1083,>1482,>1483,>14A3
.word >18A3,>1484,>14A4,>18A4,>18A5,>841,>480,>1880,>20C0,>C0
.word >100,>2900,>A0,>120,>8E1,>E0,>140,>9A2,>DA2,>19A6
.word >DE1,>E63,>1440,>1460,>1860,>1C80,>18A0,>1CA0,>294A,>318C
.word >7E60,>7F20,>84,>C6,>E7,>108,>129,>16C,>7CA3,>0
.word >0,>0,>0,>0
XXPALS:
.long PITP
.long DESRTPL
.long JEEPP2
.long GRNDP
.long PPLP
.long BULLET
.long FRTCLS
.long PCP
.long STUFFP
.long DUXPAL
BACK1: ;PAL #0
.word 32 ;pal size
.word >0,>0,>1,>2,>403,>404,>405,>406,>407,>808
.word >809,>80A,>82B,>82C,>C2D,>C2E,>C2F,>C30,>C31,>1032
.word >1033,>1034,>1035,>1036,>1437,>1438,>1439,>143A,>143B,>183D
.word >183E,>185F
carn3: ;PAL #1
.word 61 ;pal size
.word >0,>0,>18C6,>6000,>64C6,>7880,>78A0,>78C0,>78E0,>7900
.word >7920,>7940,>7946,>7960,>7980,>79A0,>79C0,>79E0,>7A00,>7986
.word >79E6,>7A20,>7A40,>7A60,>7A80,>7AA0,>7AC0,>7AE0,>7B00,>7B20
.word >7B40,>7B60,>7AC6,>7B0B,>7B6B,>7B6F,>7C80,>7CA0,>7CC0,>7CE0
.word >7D20,>7D46,>7D60,>7D80,>7DC0,>7DE0,>7E00,>7E20,>7DC6,>7E40
.word >7E60,>7E80,>7EA0,>7EC0,>7EE0,>7F00,>7F20,>7F40,>7F60,>7EC6
.word >7F4C
PGPALS:
.long BACK1
.long carn3
.long BIGPL1
.long GUNSP1
CRMP: ;PAL #0
.word 64 ;pal size
.word >0,>0,>400,>842,>1440,>C63,>1084,>10A5,>1484,>14A5
.word >18A5,>160,>201,>221,>241,>2A1,>18C6,>1CC6,>18E7,>1CE7
.word >1CE8,>1016,>2108,>2129,>2509,>2529,>292A,>294A,>A75,>2D6B
.word >316C,>2D8B,>318C,>31AC,>31AD,>3569,>358D,>35AD,>39AD,>39CE
.word >39EE,>6D44,>39EF,>3DEF,>3E0F,>4210,>4631,>4A52,>4E73,>5273
.word >4E93,>5294,>52B4,>56B5,>5AD6,>5EF7,>34C0,>7C00,>1000,>2820
.word >3C60,>5840,>3C60,>2820
IRAQPAL: ;PAL #1
.word 64 ;pal size
.word >0,>914,>FF2C,>34E1,>4565,>4DA7,>5A2B,>7EC0,>7F6A,>7FD2
.word >6A90,>1155,>1998,>2E3D,>7FE0,>7300,>6680,>5DA0,>0,>7F76
.word >7713,>6AB0,>5E6D,>520A,>4186,>2CE1,>2080,>842,>1084,>18C6
.word >2108,>294A,>318C,>3DEF,>4A52,>56B5,>6739,>77BD,>11E3,>2285
.word >1F04,>3842,>4884,>58C6,>76EA,>6EA8,>6666,>1104,>1164,>11E4
.word >2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108,>2108
.word >2108,>2108,>2108,>2108
GENP: ;PAL #3
.word 64 ;pal size
.word >0,>420,>840,>841,>860,>861,>C60,>C81,>1081,>10A1
.word >1480,>1C60,>14C2,>18E2,>1084,>10A2,>14C3,>18C3,>445,>14A5
.word >889,>18C6,>14E3,>18E3,>1903,>1D03,>1D04,>1D05,>1D24,>2481
.word >28C0,>20C1,>2124,>2125,>2145,>2545,>2565,>2944,>2945,>2108
.word >2126,>2546,>294A,>2566,>2966,>2567,>2987,>2C81,>30A2,>3100
.word >34C3,>2D87,>2D88,>31A9,>31AB,>35CB,>3CE3,>3CE4,>61A1,>4926
.word >3DEE,>5547,>59AB,>0
TECPAL: ;PAL #4
.word 64 ;pal size
.word >0,>842,>443,>464,>466,>467,>866,>886,>887,>129
.word >889,>4AA,>8AA,>8CB,>4ED,>90E,>92F,>1CE,>273,>319
.word >1C80,>20A0,>2882,>28C0,>2CE0,>30E0,>30A3,>3100,>3CC3,>3500
.word >3D20,>4520,>4140,>4960,>5580,>5980,>69C0,>6DE0,>7E00,>C89
.word >CAA,>CAB,>4505,>4D26,>5568,>5989,>5DCB,>CCD,>D51,>10CE
.word >10EF,>10F0,>1111,>1112,>1533,>1556,>1577,>159A,>31D7,>768F
.word >6A0E,>6F7B,>0,>0
LMPBPALS:
.long CRMP
.long IRAQPAL
.long STATICP
.long GENP
.long TECPAL
.long MAPP
.long DOMEP
CRMPZ: ;PAL #0
.word 64 ;pal size
.word >0,>0,>400,>821,>1C20,>C41,>1462,>1482,>1C62,>1C82
.word >1C82,>140,>1E0,>1E0,>200,>260,>1CA3,>24A3,>1CC3,>24C3
.word >24C4,>140B,>2CE4,>2D04,>2CE4,>2D04,>3505,>3525,>A2B,>3D45
.word >3D46,>3D65,>3D66,>3D86,>3D86,>4544,>4566,>4586,>4D86,>4DA7
.word >4DC7,>7D22,>4DC7,>4DC7,>4DE7,>55E8,>5DE9,>5E09,>662A,>6E2A
.word >664A,>6E4A,>6E6A,>6E6B,>768B,>7EAC,>44A0,>7C00,>1400,>3400
.word >4C40,>7420,>4C40,>3400
CLDSZ: ;PAL #1
.word 64 ;pal size
.word >0,>0,>1485,>14A7,>14C7,>14C8,>14E8,>1CC8,>1CE8,>1CE9
.word >24C7,>24E9,>1D09,>2509,>250B,>252B,>252C,>252C,>250B,>252B
.word >252C,>2D2C,>252C,>252E,>254C,>254E,>2D2C,>2D4C,>2D2E,>2D4E
.word >2D4F,>354E,>354F,>2D6E,>2D6F,>356E,>356F,>358F,>3570,>3590
.word >356F,>3590,>35B0,>35B2,>3DB2,>35D2,>3DD2,>3DD3,>45D3,>3DF2
.word >3DF3,>45F3,>4613,>45F5,>4615,>4615,>4636,>4635,>4636,>4656
.word >4657,>4E56,>4E57,>4E77
BGFRTP: ;PAL #3
.word 64 ;pal size
.word >0,>421,>821,>81,>A2,>C41,>1061,>1461,>1481,>1C81
.word >18A2,>1CA2,>C3,>E4,>105,>1CC3,>20C3,>20E4,>24E4,>2504
.word >2505,>2525,>127,>189,>1CC,>2906,>2926,>2947,>2CC1,>2D04
.word >2D26,>2D47,>3168,>3589,>35AA,>39AA,>3DAA,>7621,>3DCB,>41EC
.word >45ED,>460D,>4A0D,>4A2D,>4A2E,>4E2E,>4A4F,>4E4F,>4E70,>5250
.word >5270,>5670,>5291,>5691,>56B1,>5A91,>5AB2,>6B36,>6400,>19D
.word >C0,>100,>1C0,>3C0
PROFP2: ;PAL #4
.word 64 ;pal size
.word >0,>0,>866,>14A5,>C87,>10A9,>10CB,>2108,>2528,>252B
.word >290A,>294A,>2D6B,>10CC,>10EC,>14CC,>14EC,>18EC,>14EE,>1510
.word >1910,>1930,>294C,>316C,>318C,>356D,>358C,>35AD,>1D2F,>2151
.word >2571,>2DB1,>38C4,>40E4,>4127,>39CE,>3DCE,>39CF,>39D0,>39EF
.word >3DEF,>3DF0,>420F,>4210,>3DF1,>4631,>4A52,>4E73,>4A75,>5294
.word >5295,>56B5,>56D7,>5AD6,>5AD7,>5EF7,>5EF8,>6318,>6739,>6B5A
.word >6F7B,>739C,>77BD,>7BDE
PROFP: ;PAL #6
.word 64 ;pal size
.word >0,>0,>840,>C40,>1060,>1460,>1480,>1880,>1881,>18A0
.word >1C60,>1CA0,>20C0,>24A0,>28E0,>2D00,>3520,>842,>1CA3,>24A2
.word >2882,>2CA3,>30A3,>34C4,>38C4,>38E4,>3CE4,>40E4,>34E5,>3CE5
.word >40E5,>4105,>1D2D,>3D48,>4400,>4420,>4505,>4506,>4526,>4527
.word >4820,>4926,>4947,>4948,>4C00,>4D47,>6441,>49A0,>4D68,>5168
.word >4D69,>5169,>5189,>5589,>55AA,>59AA,>55AB,>59CB,>5DCC,>5DEC
.word >5E0D,>620D,>5A51,>6318
TPALS:
.long CRMPZ
.long CLDSZ
.long FRTCLS
.long BGFRTP
.long PROFP2
.long GOOBP
.long PROFP
CLDS8: ;PAL #1
.word 64 ;pal size
.word >0,>0,>CA4,>10C5,>10E5,>10E6,>1106,>14E6,>1506,>1507
.word >18E5,>1907,>1527,>1927,>1928,>1948,>1949,>1969,>1D28,>1D48
.word >1D49,>2149,>1D69,>1D6A,>1D89,>1D8A,>2169,>2189,>216A,>218A
.word >218B,>258A,>258B,>21AA,>21AB,>25AA,>25AB,>25CB,>25AC,>25CC
.word >29AB,>29CC,>29EC,>29ED,>2DED,>2A0D,>2E0D,>2E0E,>320E,>2E2D
.word >2E2E,>322E,>324E,>322F,>324F,>364F,>3270,>366F,>3670,>3690
.word >3691,>3A90,>3A91,>3AB1
OBPALS:
.long CRMP
.long CLDS8
.long FRTCLS
.long BGFRTP
.long SOLDB
.long TECPAL
.long GENP
.long STATICP
.long GOOBP
RTPALS:
.long FRTCLS
.long GRNDP
.long REACTR
.long BULLET
.long GOOBP
.long PPLP
.long CANDB
.long UFLP
.long JEEPP
.long STUFFP
.long DUXPAL
CHUTE2: ;PAL #7
.word 24 ;pal size
.word >0,>0,>840,>C60,>1080,>14A1,>24A0,>28C0,>18E2,>18C6
.word >1D03,>1D23,>1D24,>2124,>2144,>2145,>2545,>2108,>2566,>2966
.word >2987,>294A,>318C,>35EE
FNDP3: ;PAL #15
.word 20 ;pal size
.word >0,>1400,>842,>2108,>2800,>3000,>3000,>3800,>3C00,>4000
.word >39AF,>4800,>5400,>6000,>6800,>7000,>7800,>7D49,>5294,>7FFF
LDPALS:
.long PITP
.long DESRTPL
.long STUFFP
.long DISHPAL
.long GOOBP
.long CANDB
.long GRNDP
.long CHUTE2
.long BULLET
.long PPLP
.long DGP1
.long DGP3
.long DGP2
.long FRTCLS
.long FNDP
.long FNDP3
.long MTNKP
.long SCOREPAL
.long ORCP1
.long JEEPP2
.long DUXPAL
frtcls2: ;PAL #0
.word 64 ;pal size
.word >400,>400,>C00,>C00,>C00,>1420,>1420,>2440,>1440,>2C80
.word >1480,>2480,>2CA0,>34A0,>34C0,>34C0,>3CE0,>34E0,>34E0,>4500
.word >4D40,>3D00,>4540,>4D40,>4D40,>5560,>6580,>4D60,>6DE0,>65E0
.word >6E00,>7E00,>7E20,>6E00,>7620,>7E80,>7E40,>7E80,>7EA0,>7EE0
.word >7F20,>7F20,>2440,>3CE0,>4D40,>7600,>7EE0,>4C0,>720,>7C00
.word >7C00,>7C00,>400,>400,>400,>7C00,>7EC0,>7F20,>480,>500
.word >600,>6C0,>720,>4F20
PALS:
.long frtcls2
.long GRNDP
.long REACTR
.long BULLET
.long GOOBP
.long PPLP
.long CANDB
.long UFLP
.long FRTCLS
.long STUFFP
.long DUXPAL
PPALS:
.long CRMP
.long FRTCLS
.long STATICP
.long GENP
.long TECPAL
APALS:
.long FRTCLS
.long GRNDP
.long UFLP
.long CANDB
.long PPLP
.long JEEPP2
.long STUFFP
DBPALS:
.long PITP
.long DESRTPL
.long PPLP
.long BULLET
.long GRNDP
.long STUFFP
UPAL: ;PAL #0
.word 64 ;pal size
.word >0,>420,>822,>841,>843,>864,>C62,>1083,>14A4,>C45
.word >1066,>1467,>1087,>18C5,>1088,>1889,>14A9,>18CB,>1CE6,>2107
.word >2528,>1CAB,>1CED,>20CD,>2949,>2D6A,>318B,>35AC,>39CD,>20EE
.word >24EE,>24EF,>2510,>2511,>2911,>2D33,>3173,>3556,>3598,>41BC
.word >4630,>4E72,>6317,>77BC,>7D60,>7E00,>7E60,>7EC0,>7F20,>0
.word >A0,>C0,>E0,>100,>120,>160,>1A0,>200,>2C0,>360
.word >3E0,>300,>220,>160
DCPALS:
.long UPAL
.long FRTCLS
.long GRNDP
.long UFLP
.long PPLP
.long SPYDERP1
.long STUFFP
DDPALS:
.long UPAL
.long UFLP
.long GRNDP
.long PPLP
.long FRTCLS
.long CANDB
.long BULLET
DJPALS:
.long FRTCLS
.long GRNDP
.long UFLP
.long GOOBP
.long CANDB
DHPALS:
.long PITP
.long DESRTPL
.long PPLP
.long GRNDP
.long BULLET
.long GOOBP
.long FING1
.long STUFFP
HI3: ;PAL #0
.word 64 ;pal size
.word >0,>400,>C42,>160,>201,>221,>241,>2A1,>1CC6,>1416
.word >2508,>2D2A,>2D4A,>2D6B,>2D8B,>358C,>35AD,>3DCE,>4610,>4E73
.word >56B5,>5EF7,>2C80,>34E0,>3D00,>4540,>4580,>4DC0,>5600,>5E40
.word >66A0,>7720,>7F40,>1484,>7FED,>1400,>2C00,>3400,>4400,>5C00
.word >7C00,>0,>4400,>8,>6600,>300,>0,>0,>0,>0
.word >0,>0,>600,>0,>0,>0,>0,>0,>4,>0
.word >0,>0,>0,>7FFF
OREPALS:
.long HI3
.long BIGPL1
.long BIGPL2
.long STUFFP
.long FRTCLS
ENTER1: ;PAL #9
.word 31 ;pal size
.word >0,>0,>1,>2,>403,>404,>405,>406,>407,>808
.word >809,>80A,>82B,>82C,>C2D,>C2E,>C2F,>C30,>C31,>1032
.word >1033,>1034,>1035,>1036,>1437,>1438,>1439,>143A,>143B,>183D
.word >185F
TC2: ;PAL #11
.word 13 ;pal size
.word >0,>0,>4,>404,>405,>826,>827,>C28,>C29,>102A
.word >102B,>104C,>104E
RPALS:
.long CRMP
.long CLDS8
.long FRTCLS
.long BGFRTP
.long PROFP2
.long TECPAL
.long GENP
.long PROFP
.long STATICP
.long ENTER1
.long DUXPAL
.long TC2
ROOMPALS:
.long CHAIRP
.long MTRP
BIGPIT: ;PAL #3
.word 64 ;pal size
.word >0,>0,>1,>20,>21,>400,>401,>420,>421,>821
.word >422,>822,>441,>841,>442,>842,>843,>C42,>C43,>462
.word >862,>863,>883,>C62,>C63,>C64,>C83,>C84,>CA4,>1043
.word >1063,>1064,>1083,>1084,>1484,>1085,>1485,>10A4,>14A4,>10A5
.word >14A5,>14A6,>14C5,>14C6,>14E6,>1800,>1885,>18A5,>18A6,>18C5
.word >18C6,>18C7,>18E6,>18E7,>1CC6,>1CC7,>1CE6,>2108,>2400,>3C00
.word >5420,>7C20,>1000,>800
PITPALS:
.long UPAL
.long UFLP
.long ENDBSSP
.long BIGPIT
.long FRTCLS
.long GRNCYCLE
.long GRNDP
.long KRACK
.long BULLET
.long STUFFP
.long PPLP
.long CANDB
.long JEEPP
.long DUXPAL
.long SCOREPAL
neon_p: ;PAL #0
.word 64 ;pal size
.word >0,>0,>421,>842,>C63,>867,>C6,>1084,>10C6,>10A8
.word >14C2,>18A4,>1CC4,>14A5,>14C6,>18C6,>14C8,>D08,>18E2,>1902
.word >18E7,>1908,>1D23,>2104,>1CE7,>2108,>2508,>1D43,>2144,>2164
.word >2DC5,>10A9,>108C,>10AB,>18EB,>1909,>1D09,>1D2A,>2109,>214B
.word >2509,>2529,>292A,>294A,>256C,>2D4B,>2D6B,>316B,>356C,>C2F
.word >14CD,>1CEE,>1437,>214F,>298D,>2992,>2DAF,>398D,>39CE,>45CF
.word >31F1,>5652,>313C,>4E3D
rose_p: ;PAL #1
.word 54 ;pal size
.word >0,>0,>1084,>14A5,>10C6,>18C6,>18E7,>18E8,>1CE7,>20E8
.word >2108,>1089,>14AB,>2509,>18CD,>1CEF,>1D29,>2529,>1D2A,>214B
.word >256C,>292A,>2D2A,>294A,>2D4A,>2D4B,>298D,>314B,>316B,>316C
.word >356C,>358C,>358D,>35AD,>396C,>398D,>3D8D,>39AE,>3DAD,>3DAE
.word >41AD,>41AE,>41CE,>41CF,>45CE,>45CF,>45EF,>4631,>49EF,>49F0
.word >4A10,>4E10,>5231,>5A73
back_p: ;PAL #2
.word 54 ;pal size
.word >0,>0,>C84,>C6,>10A5,>10C6,>14C6,>867,>C89,>10C7
.word >14C8,>14E7,>14EA,>10AB,>8CC,>C2F,>CEF,>1437,>D11,>1177
.word >2063,>2084,>2463,>2863,>3042,>3C63,>4084,>4463,>4484,>7E00
.word >18C6,>18E7,>28A7,>2CA7,>3086,>30A6,>3486,>4067,>60C6,>1908
.word >1909,>190A,>20A8,>20A9,>1CEB,>28A8,>406B,>1CEC,>1CED,>346D
.word >286F,>2571,>313C,>4E3D
endome_p: ;PAL #4
.word 64 ;pal size
.word >0,>0,>C84,>C6,>10A5,>10C6,>14C6,>867,>C89,>10C7
.word >14C8,>14E7,>14EA,>10AB,>8CC,>C2F,>CEF,>1437,>D11,>1177
.word >2063,>2084,>2463,>2863,>3042,>3C63,>4084,>4463,>4484,>7E00
.word >18C6,>18E7,>28A7,>2CA7,>3086,>30A6,>3486,>4067,>60C6,>1908
.word >1909,>190A,>20A8,>20A9,>1CEB,>28A8,>406B,>1CEC,>1CED,>346D
.word >286F,>2571,>313C,>4E3D,>0,>7AA0,>71C0,>5920,>48C0,>4080
.word >3080,>4080,>48C0,>5920
mutt: ;PAL #5
.word 62 ;pal size
.word >0,>40,>E0,>1084,>1C60,>2840,>24A0,>3100,>18C6,>2108
.word >161,>294A,>318C,>221,>2A1,>4968,>39CE,>3DEF,>5D89,>65CA
.word >4631,>6E4F,>7AB1,>5294,>56B5,>5AF6,>6318,>7B35,>739C,>C0
.word >121,>1A1,>1E1,>201,>261,>281,>2E1,>3A2,>3D05,>3947
.word >4D47,>59AA,>61EB,>7EB0,>6F5A,>C20,>1860,>2061,>3102,>34E1
.word >4441,>5AD6,>44C4,>4D05,>5127,>5DAA,>6E0C,>726F,>2D6A,>4042
.word >4906,>6B5A
sign2: ;PAL #6
.word 64 ;pal size
.word >0,>0,>821,>61,>842,>81,>481,>C81,>A1,>A2
.word >4A1,>C2,>E2,>102,>1062,>10A1,>1482,>14A2,>18A2,>10E1
.word >14C2,>18C2,>14E1,>14E2,>18E2,>1901,>1CC2,>1CE2,>20E2,>1D01
.word >2D21,>3180,>43,>C63,>85,>E3,>123,>C84,>1084,>1483
.word >10C4,>18A3,>18A4,>18C5,>18E5,>1CC4,>20C4,>20C5,>2105,>24E5
.word >28E5,>4C8,>10E8,>8EA,>910,>D0F,>14E7,>14C8,>18E6,>18E7
.word >2D48,>1529,>520D,>1D18
trans: ;PAL #8
.word 64 ;pal size
.word >0,>0,>21,>421,>463,>842,>863,>C63,>C64,>C84
.word >1084,>885,>C85,>CA5,>1085,>10A5,>10A6,>14A5,>14A6,>14C6
.word >14C7,>14E8,>18C8,>18E8,>1908,>1909,>1D09,>1D29,>2109,>1D0A
.word >1D2A,>1D2B,>212A,>212B,>214B,>214C,>216C,>254C,>256C,>256D
.word >258D,>298D,>298E,>29AE,>2DD0,>2D4B,>2D6B,>316B,>356C,>2DAF
.word >14CD,>1CEE,>1437,>214F,>298D,>2992,>2DAF,>398D,>39CE,>45CF
.word >31F1,>5652,>313C,>4E3D
vsign: ;PAL #9
.word 64 ;pal size
.word >0,>0,>22,>61,>62,>43,>63,>64,>65,>82
.word >85,>A5,>C5,>86,>A6,>C6,>A7,>C7,>E7,>840
.word >842,>C81,>486,>CA4,>4A7,>CC4,>4C7,>8C6,>CE7,>10A1
.word >1482,>18A2,>20E2,>14C4,>14C5,>A8,>488,>4C9,>8C8,>E8
.word >8E9,>8AB,>4CA,>4EB,>8EA,>8EB,>8CC,>8ED,>90E,>910
.word >14C8,>D08,>1108,>CCC,>1529,>218A,>624E,>CEF,>1111,>10D2
.word >14F4,>1917,>213F,>3998
gold_p: ;PAL #10
.word 64 ;pal size
.word >0,>0,>821,>61,>842,>81,>481,>C81,>A1,>A2
.word >4A1,>C2,>E2,>102,>1062,>10A1,>1482,>14A2,>18A2,>10E1
.word >14C2,>18C2,>14E1,>14E2,>18E2,>1901,>1CC2,>1CE2,>20E2,>1D01
.word >2D21,>3180,>43,>C63,>85,>E3,>123,>C84,>1084,>1483
.word >10C4,>18A3,>18A4,>18C5,>18E5,>1CC4,>20C4,>20C5,>2105,>24E5
.word >28E5,>4C8,>10E8,>8EA,>910,>D0F,>14E7,>14C8,>18E6,>18E7
.word >2D48,>1529,>520D,>1D18
DOMEPALS:
.long neon_p
.long rose_p
.long back_p
.long water_p
.long endome_p
.long mutt
.long sign2
.long BULLET
.long trans
.long vsign
.long gold_p
.long sign_p
vpole: ;PAL #0
.word 64 ;pal size
.word >0,>0,>400,>1060,>C85,>1084,>CA6,>CA8,>1088,>10C8
.word >1880,>20A0,>24E2,>14C7,>14A8,>14C8,>18C8,>14E8,>C8B,>14EA
.word >18E9,>1CEB,>1509,>1909,>190A,>1D0B,>210C,>210E,>1D2C,>212D
.word >252E,>1CAF,>20D1,>210F,>2111,>2130,>2530,>2132,>2550,>2970
.word >2552,>2971,>2991,>2D71,>2D91,>2D92,>3191,>20F3,>2973,>2993
.word >2D93,>3193,>2554,>2974,>2994,>2D94,>3194,>2975,>2D77,>39B4
.word >3DD5,>41B8,>41D7,>41F6
vbgoldr: ;PAL #1
.word 64 ;pal size
.word >0,>0,>400,>1060,>1460,>1880,>1CA0,>20A0,>24C0,>842
.word >1084,>C85,>CA6,>1087,>1881,>1465,>1CA1,>20C1,>20C2,>1886
.word >18A7,>20C6,>24C1,>24E1,>24E2,>28E2,>24E3,>2503,>2903,>24E4
.word >2505,>2904,>2506,>2507,>2906,>2D47,>1088,>CA8,>1CA8,>18C8
.word >1CC8,>1D09,>20C8,>20E8,>20E9,>24C8,>24E9,>2108,>2109,>2128
.word >2508,>2509,>2528,>C8B,>1CEA,>1D0A,>1D0B,>20EA,>210A,>250A
.word >1CCC,>20ED,>1CCF,>2CDC
vthrn: ;PAL #2
.word 64 ;pal size
.word >0,>0,>842,>80,>1060,>1460,>1880,>A0,>1CA0,>20A0
.word >C0,>20C1,>24C0,>E0,>24E2,>201,>221,>C63,>CA6,>E9
.word >CA7,>CA8,>CA9,>1084,>14A5,>18C6,>14C7,>14E9,>18E9,>1909
.word >20C8,>1CE7,>2108,>2926,>C8B,>C8C,>108C,>108D,>148D,>108E
.word >148F,>1490,>14B0,>18B0,>18B1,>18B2,>1CB2,>1CB4,>20B4,>20B5
.word >20B6,>20D6,>24D7,>24D8,>28D8,>28D9,>28DA,>28DB,>28F9,>2CDB
.word >2CFB,>2CDC,>2CFC,>311C
capant: ;PAL #3
.word 64 ;pal size
.word >0,>0,>400,>C60,>C80,>1080,>10A0,>18C6,>14C0,>14E0
.word >1500,>1540,>1C60,>2108,>2529,>294A,>2D6B,>318C,>35AD,>39AD
.word >39CE,>3DEF,>4210,>4631,>4A30,>4A52,>4E73,>5294,>56B5,>5AD6
.word >5EF7,>6318,>6739,>77BD,>2906,>2D47,>8AA,>CCB,>1CA8,>0
.word >0,>844,>2400,>2464,>2C62,>3821,>4ED,>3C42,>4083,>44A4
.word >40C4,>44C4,>48C4,>3D60,>4904,>4D80,>846,>3CC5,>48C5,>48E5
.word >4906,>4CE6,>4D06,>C4B
blackman: ;PAL #4
.word 64 ;pal size
.word >0,>20,>20,>80,>A0,>E0,>120,>C20,>1820,>2440
.word >2460,>C00,>2861,>2C61,>2C81,>3081,>30A2,>34A2,>34C3,>38A2
.word >38C3,>3CC3,>38E4,>3CE4,>3D05,>40C3,>40E4,>4104,>422,>1082
.word >4105,>4125,>4525,>4126,>4526,>4546,>4567,>4568,>4967,>4988
.word >4D88,>4DAA,>4DCB,>51AA,>51CB,>51EC,>520C,>562E,>564F,>5A70
.word >5692,>5EB2,>5ED3,>6317,>20,>20,>20,>20,>20,>40
.word >42,>60,>80,>A0
blueguy: ;PAL #5
.word 64 ;pal size
.word >0,>425,>407,>426,>846,>1C82,>18C6,>2482,>2108,>48
.word >A,>2529,>294A,>C,>2D6B,>F,>4F,>7,>C,>F
.word >10,>3082,>38A3,>3CA3,>3CC4,>40C4,>44E4,>4CE4,>4D05,>5105
.word >5526,>5527,>5547,>5946,>5947,>5D67,>5968,>318C,>5D89,>6189
.word >61AA,>65AA,>65CB,>69CB,>35AD,>39CE,>110,>4631,>65EC,>69EC
.word >6A2D,>726F,>7691,>5294,>1CD7,>76F4,>77BD,>25,>7,>26
.word >447,>104E,>0,>0
girls: ;PAL #6
.word 61 ;pal size
.word >0,>844,>2400,>2464,>2C62,>3821,>3883,>3C42,>4083,>44A4
.word >40C4,>44C4,>48C4,>3D60,>4904,>4D80,>846,>3CC5,>48C5,>48E5
.word >4906,>4CE6,>4D06,>C4B,>2088,>1C6D,>1032,>18D8,>5483,>5106
.word >5107,>5126,>5127,>5D27,>5148,>5547,>5548,>5569,>5969,>5989
.word >598A,>5D89,>5D8A,>61AB,>6200,>6E80,>7E60,>65EA,>7EC0,>7F20
.word >7F80,>7B4B,>61CC,>65EC,>65ED,>660F,>6A2F,>6E0E,>724F,>6E71
.word >72D5
redguy: ;PAL #7
.word 64 ;pal size
.word >0,>1820,>1800,>1820,>1C40,>1460,>18C6,>1080,>2108,>2000
.word >2400,>2529,>294A,>2804,>2D6B,>1C21,>3043,>2800,>2C00,>3802
.word >3C03,>1820,>2040,>2440,>2461,>2861,>2C81,>3481,>34A2,>38A2
.word >3CC3,>3CC4,>3CE4,>40E3,>40E4,>4504,>4105,>318C,>4527,>4947
.word >4968,>4D68,>4D89,>5189,>35AD,>39CE,>4401,>4631,>5566,>5966
.word >59A7,>61E9,>660B,>5294,>492C,>6691,>77BD,>25,>7,>26
.word >447,>104E,>0,>0
captcar: ;PAL #8
.word 54 ;pal size
.word >0,>0,>400,>D03,>D23,>D63,>DA3,>2860,>34A3,>40C4
.word >40E4,>4D60,>44E5,>48E5,>4905,>4D05,>4D26,>5126,>5147,>5526
.word >5547,>5947,>5568,>5968,>5989,>5D47,>5D68,>5D88,>7184,>7E00
.word >5D89,>5DA9,>61A9,>5DAA,>61AA,>61CA,>61EB,>61EC,>65EB,>660C
.word >6A0C,>6A2E,>6A4F,>6E2E,>6E4F,>6E70,>6E90,>72B2,>72D3,>76F4
.word >7316,>7B36,>7B57,>7F9B
NGPALS:
.long vpole
.long vbgoldr
.long vthrn
.long capant
.long blackman
.long blueguy
.long girls
.long redguy
.long captcar

10190
BGNDTBL.ASM Normal file

File diff suppressed because it is too large Load Diff

5008
CARN.ASM Normal file

File diff suppressed because it is too large Load Diff

5319
CARN.ASV Normal file

File diff suppressed because it is too large Load Diff

86
CARN.CMD Normal file
View File

@ -0,0 +1,86 @@
/* CARN linker command file */
-e INIT_PROG /* entry point of program */
-f 0xFFFF /* fill unspecified memory with value */
-o d:CARN.out /* specify output file */
-m d:CARN.map /* map file */
-s /* Kill the symbol table */
NDSP1.OBJ /*IMAGE HANDLER*/
RAM.OBJ /*RAM ALLOCATIONS*/
UTIL.OBJ /*UTILITIES*/
PALL.OBJ /*PALETTE ROUTINES*/
MPROC.OBJ /*MULTI-TASKER*/
BAKGND.OBJ /*BACKGROUND GENERATOR*/
BGNDTBL.OBJ /*BACKGROUND TABLES*/
BGNDPAL.OBJ /*BACKGROUND PALETTES*/
IMGTBL.OBJ /*IMAGE STUB*/
IMGPAL.OBJ /*IMAGE PALETTES GENERATED BY LOADIMG*/
MAIN.OBJ /*INITIALIZATION AND INTERRUPTS*/
CARN.OBJ /*FIRST GAME MODULE*/
RACKUP.OBJ
RBOSS.OBJ
ABOSS.OBJ
SCORE.OBJ
SHOTS.OBJ
COLL2.OBJ
SOUNDS.OBJ
PATCH.OBJ
TEXT.OBJ
WAVES.OBJ
SHAWN.OBJ
ATTRACT.OBJ
CHUNKS.OBJ
ICONS.OBJ
NEWHULK.OBJ
HELPER.OBJ
T72.OBJ
ARAB.OBJ
LAYER.OBJ
FIEND.OBJ
MINE.OBJ
TRIG.OBJ
ADJUST.OBJ
AUDIT.OBJ
TEST.OBJ
DIAG.OBJ
MENU.OBJ
HSTD.OBJ
MEMORY /* set up memory for sdb board */
{
SCRATCH : org = 0x01000000, len = 0x100000
ROM : org = 0xFFC00000, len = 0x380000
ROM2 : org = 0xFFFF6F00, len = 0x8D00
TRAP31 : org = 0xFFFFFC00, len = 0x400
IROM : org = 0x02000000, len = 0x400000
}
SECTIONS /* linker sections directive */
{
VECTORS: {} > TRAP31
IMAGES: {} > IROM
GROUP:
{
shit: {}
SHIT: {}
} > ROM2
GROUP:
{
FIXED: {}
OFIXED: {}
NFIXED: {}
.BSS: {}
.bss: {}
SYSWORK: {}
} > SCRATCH
GROUP:
{
.text: {}
.TEXT: {}
.data: {}
.DATA: {}
img_tbl: {}
} > ROM
}


864
CARN.HDR Normal file
View File

@ -0,0 +1,864 @@
STAND_TBL_L:
.LONG P1S12L1,P1S12L1,P1SH6L1,P1S12L1,P1SH9L1,P1S10L1,P1SH8L1
.LONG P1SH9L1,P1S10L1,P1SH8L1
STAND_TBL_L2:
.LONG P1TH12L1,P1TH12L1,P1TH6L1,P1TH12L1,P1TH9L1,P1TH10L1,P1TH8L1
.LONG P1TH9L1,P1TH10L1,P1TH8L1
STAND_TBL_L3:
.LONG P1TH12L2,P1TH12L2,P1TH6L2,P1TH12L2,P1TH9L2,P1TH10L2,P1TH8L2
.LONG P1TH9L2,P1TH10L2,P1TH8L2
;NORMAL BULLET WEAPON
SHT_UP:
.LONG P1S12T1
.WORD FLIPBITS|2,0
.LONG P1S12T2
.WORD 2
.LONG P1S12T1
.WORD 2
.LONG P1S12T2
.WORD 2
.LONG 0
SHT_UPRGT:
.LONG P1S10T1
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1S10T2
.WORD 2
.LONG P1S10T1
.WORD 2
.LONG P1S10T2
.WORD 2
.LONG 0
SHT_UPLFT:
.LONG P1S10T1
.WORD FLIPBITS|2,0
.LONG P1S10T2
.WORD 2
.LONG P1S10T1
.WORD 2
.LONG P1S10T2
.WORD 2
.LONG 0
SHT_RGT:
.LONG P1SH9T1
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1SH9T2
.WORD 2
.LONG P1SH9T1
.WORD 2
.LONG P1SH9T2
.WORD 2
.LONG 0
SHT_LFT:
.LONG P1SH9T1
.WORD FLIPBITS|2,0
.LONG P1SH9T2
.WORD 2
.LONG P1SH9T1
.WORD 2
.LONG P1SH9T2
.WORD 2
.LONG 0
SHT_DN:
.LONG P1SH6T1
.WORD FLIPBITS|2,0
.LONG P1SH6T2
.WORD 2
.LONG P1SH6T1
.WORD 2
.LONG P1SH6T2
.WORD 2
.LONG 0
SHT_DNLFT:
.LONG P1SH8T1
.WORD FLIPBITS|2,0
.LONG P1SH8T2
.WORD 2
.LONG P1SH8T1
.WORD 2
.LONG P1SH8T2
.WORD 2
.LONG 0
SHT_DNRGT:
.LONG P1SH8T1
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1SH8T2
.WORD 2
.LONG P1SH8T1
.WORD 2
.LONG P1SH8T2
.WORD 2
.LONG 0
;FOR SPRAY WEAPON
SHT2_UP:
.LONG P1SPRDR12
.WORD FLIPBITS|4,0
.LONG P1SPRD12A
.WORD 4
.LONG 0
SHT2_UPRGT:
.LONG P1SPRDR10
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1SPRDR10A
.WORD 4
.LONG 0
SHT2_UPLFT:
.LONG P1SPRDR10
.WORD FLIPBITS|4,0
.LONG P1SPRDR10A
.WORD 4
.LONG 0
SHT2_RGT:
.LONG P1SPRDR9
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1SPRDR9A
.WORD 4
.LONG 0
SHT2_LFT:
.LONG P1SPRDR9
.WORD FLIPBITS|4,0
.LONG P1SPRDR9A
.WORD 4
.LONG 0
SHT2_DN:
.LONG P1SPRDR6
.WORD FLIPBITS|4,0
.LONG P1SPRD6A
.WORD 4
.LONG 0
SHT2_DNLFT:
.LONG P1SPRDR8
.WORD FLIPBITS|4,0
.LONG P1SPRD8A
.WORD 4
.LONG 0
SHT2_DNRGT:
.LONG P1SPRDR8
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1SPRD8A
.WORD 4
.LONG 0
;FOR FLAME THROWER
SHT3_UP:
.LONG P1FLAMR12
.WORD FLIPBITS|4,0
.LONG 0
SHT3_UPRGT:
.LONG P1FLAMR10
.WORD FLIPBITS|4,(M_FLIPH)
.LONG 0
SHT3_UPLFT:
.LONG P1FLAMR10
.WORD FLIPBITS|4,0
.LONG 0
SHT3_RGT:
.LONG P1FLAMR9
.WORD FLIPBITS|4,(M_FLIPH)
.LONG 0
SHT3_LFT:
.LONG P1FLAMR9
.WORD FLIPBITS|4,0
.LONG 0
SHT3_DN:
.LONG P1FLAMR6
.WORD FLIPBITS|4,0
.LONG 0
SHT3_DNLFT:
.LONG P1FLAMR8
.WORD FLIPBITS|4,0
.LONG 0
SHT3_DNRGT:
.LONG P1FLAMR8
.WORD FLIPBITS|4,(M_FLIPH)
.LONG 0
;SHOOTING GRENADE LAUNCHER WEAPON
SHT4_UP:
.LONG P1GR12T1
.WORD FLIPBITS|3,0
.LONG 0
SHT4_UPRGT:
.LONG P1GR10T1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG 0
SHT4_UPLFT:
.LONG P1GR10T1
.WORD FLIPBITS|3,0
.LONG 0
SHT4_RGT:
.LONG P1GR9T1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG 0
SHT4_LFT:
.LONG P1GR9T1
.WORD FLIPBITS|3,0
.LONG 0
SHT4_DN:
.LONG P1GR6T1
.WORD FLIPBITS|3,0
.LONG 0
SHT4_DNLFT:
.LONG P1GR8T1
.WORD FLIPBITS|3,0
.LONG 0
SHT4_DNRGT:
.LONG P1GR8T1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG 0
;FOR NON STOP WEAPON
SHT5_UP:
.LONG P1LARS12
.WORD FLIPBITS|4,0
.LONG P1LARS12A
.WORD 4
.LONG 0
SHT5_UPRGT:
.LONG P1LARS10
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1LARS10A
.WORD 4
.LONG 0
SHT5_UPLFT:
.LONG P1LARS10
.WORD FLIPBITS|4,0
.LONG P1LARS10A
.WORD 4
.LONG 0
SHT5_RGT:
.LONG P1LARS9
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1LARS9A
.WORD 4
.LONG 0
SHT5_LFT:
.LONG P1LARS9
.WORD FLIPBITS|4,0
.LONG P1LARS9A
.WORD 4
.LONG 0
SHT5_DN:
.LONG P1LARS6
.WORD FLIPBITS|4,0
.LONG P1LARS6A
.WORD 4
.LONG 0
SHT5_DNLFT:
.LONG P1LARS8
.WORD FLIPBITS|4,0
.LONG P1LARS8A
.WORD 4
.LONG 0
SHT5_DNRGT:
.LONG P1LARS8
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1LARS8A
.WORD 4
.LONG 0
;FOR MACHINE GUN
SHT6_UP:
.LONG P1MGUN12
.WORD FLIPBITS|2,0
.LONG P1MGUN12A
.WORD 2
.LONG 0
SHT6_UPRGT:
.LONG P1MGUN10
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1MGUN10A
.WORD 2
.LONG 0
SHT6_UPLFT:
.LONG P1MGUN10
.WORD FLIPBITS|2,0
.LONG P1MGUN10A
.WORD 2
.LONG 0
SHT6_RGT:
.LONG P1MGUN9
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1MGUN9A
.WORD 2
.LONG 0
SHT6_LFT:
.LONG P1MGUN9
.WORD FLIPBITS|2,0
.LONG P1MGUN9A
.WORD 2
.LONG 0
SHT6_DN:
.LONG P1MGUN6
.WORD FLIPBITS|2,0
.LONG P1MGUN6A
.WORD 2
.LONG 0
SHT6_DNLFT:
.LONG P1MGUN8
.WORD FLIPBITS|2,0
.LONG P1MGUN8A
.WORD 2
.LONG 0
SHT6_DNRGT:
.LONG P1MGUN8
.WORD FLIPBITS|2,(M_FLIPH)
.LONG P1MGUN8A
.WORD 2
.LONG 0
L_SHT_UP:
.LONG P1S12L1
.WORD FLIPBITS|1,0
.LONG 0
L_SHT_UPRGT:
.LONG P1S10L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
L_SHT_UPLFT:
.LONG P1S10L1
.WORD FLIPBITS|1,0
.LONG 0
L_SHT_RGT:
.LONG P1SH9L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
L_SHT_LFT:
.LONG P1SH9L1
.WORD FLIPBITS|1,0
.LONG 0
L_SHT_DN:
.LONG P1SH6L1
.WORD FLIPBITS|1,0
.LONG 0
L_SHT_DNLFT:
.LONG P1SH8L1
.WORD FLIPBITS|1,0
.LONG 0
L_SHT_DNRGT:
.LONG P1SH8L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
L2_SHT_UP:
.LONG P1TH12L1
.WORD FLIPBITS|1,0
.LONG 0
L2_SHT_UPRGT:
.LONG P1TH10L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
L2_SHT_UPLFT:
.LONG P1TH10L1
.WORD FLIPBITS|1,0
.LONG 0
L2_SHT_RGT:
.LONG P1TH9L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
L2_SHT_LFT:
.LONG P1TH9L1
.WORD FLIPBITS|1,0
.LONG 0
L2_SHT_DN:
.LONG P1TH6L1
.WORD FLIPBITS|1,0
.LONG 0
L2_SHT_DNLFT:
.LONG P1TH8L1
.WORD FLIPBITS|1,0
.LONG 0
L2_SHT_DNRGT:
.LONG P1TH8L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG 0
PWK_UP:
.LONG P1R12L1
.WORD FLIPBITS|3,0
.LONG P1R12L2
.WORD 3
.LONG P1R12L3
.WORD 3
.LONG P1R12L4
.WORD 3
.LONG P1R12L5
.WORD 3
.LONG P1R12L6
.WORD 3
.LONG P1R12L7
.WORD 3
.LONG P1R12L8
.WORD 3
.LONG 0
PWK_DN:
.LONG P1RN6L1
.WORD FLIPBITS|3,0
.LONG P1RN6L2
.WORD 3
.LONG P1RN6L3
.WORD 3
.LONG P1RN6L4
.WORD 3
.LONG P1RN6L5
.WORD 3
.LONG P1RN6L6
.WORD 3
.LONG P1RN6L7
.WORD 3
.LONG P1RN6L8
.WORD 3
.LONG 0
PWK_RGT:
.LONG P1RN9L1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG P1RN9L2
.WORD 3
.LONG P1RN9L3
.WORD 3
.LONG P1RN9L4
.WORD 3
.LONG P1RN9L5
.WORD 3
.LONG P1RN9L6
.WORD 3
.LONG P1RN9L7
.WORD 3
.LONG P1RN9L8
.WORD 3
.LONG 0
PWK_UPRGT:
.LONG P1R10L1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG P1R10L2
.WORD 3
.LONG P1R10L3
.WORD 3
.LONG P1R10L4
.WORD 3
.LONG P1R10L5
.WORD 3
.LONG P1R10L6
.WORD 3
.LONG P1R10L7
.WORD 3
.LONG 0
PWK_DNLFT:
.LONG P1RN8L1
.WORD FLIPBITS|3,0
.LONG P1RN8L2
.WORD 3
.LONG P1RN8L3
.WORD 3
.LONG P1RN8L4
.WORD 3
.LONG P1RN8L5
.WORD 3
.LONG P1RN8L6
.WORD 3
.LONG P1RN8L7
.WORD 3
.LONG P1RN8L8
.WORD 3
.LONG 0
PWK_LFT:
.LONG P1RN9L1
.WORD FLIPBITS|3,0
.LONG P1RN9L2
.WORD 3
.LONG P1RN9L3
.WORD 3
.LONG P1RN9L4
.WORD 3
.LONG P1RN9L5
.WORD 3
.LONG P1RN9L6
.WORD 3
.LONG P1RN9L7
.WORD 3
.LONG P1RN9L8
.WORD 3
.LONG 0
PWK_UPLFT:
.LONG P1R10L1
.WORD FLIPBITS|3,0
.LONG P1R10L2
.WORD 3
.LONG P1R10L3
.WORD 3
.LONG P1R10L4
.WORD 3
.LONG P1R10L5
.WORD 3
.LONG P1R10L6
.WORD 3
.LONG P1R10L7
.WORD 3
.LONG 0
PWK_DNRGT:
.LONG P1RN8L1
.WORD FLIPBITS|3,(M_FLIPH)
.LONG P1RN8L2
.WORD 3
.LONG P1RN8L3
.WORD 3
.LONG P1RN8L4
.WORD 3
.LONG P1RN8L5
.WORD 3
.LONG P1RN8L6
.WORD 3
.LONG P1RN8L7
.WORD 3
.LONG P1RN8L8
.WORD 3
.LONG 0
FPWK_UP:
.LONG P1R12L1
.WORD FLIPBITS|1,0
.LONG P1R12L2
.WORD 1
.LONG P1R12L3
.WORD 1
.LONG P1R12L4
.WORD 1
.LONG P1R12L5
.WORD 1
.LONG P1R12L6
.WORD 1
.LONG P1R12L7
.WORD 1
.LONG P1R12L8
.WORD 1
.LONG 0
FPWK_DN:
.LONG P1RN6L1
.WORD FLIPBITS|1,0
.LONG P1RN6L2
.WORD 1
.LONG P1RN6L3
.WORD 1
.LONG P1RN6L4
.WORD 1
.LONG P1RN6L5
.WORD 1
.LONG P1RN6L6
.WORD 1
.LONG P1RN6L7
.WORD 1
.LONG P1RN6L8
.WORD 1
.LONG 0
FPWK_RGT:
.LONG P1RN9L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG P1RN9L2
.WORD 1
.LONG P1RN9L3
.WORD 1
.LONG P1RN9L4
.WORD 1
.LONG P1RN9L5
.WORD 1
.LONG P1RN9L6
.WORD 1
.LONG P1RN9L7
.WORD 1
.LONG P1RN9L8
.WORD 1
.LONG 0
FPWK_UPRGT:
.LONG P1R10L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG P1R10L2
.WORD 1
.LONG P1R10L3
.WORD 1
.LONG P1R10L4
.WORD 1
.LONG P1R10L5
.WORD 1
.LONG P1R10L6
.WORD 1
.LONG P1R10L7
.WORD 1
.LONG 0
FPWK_DNLFT:
.LONG P1RN8L1
.WORD FLIPBITS|1,0
.LONG P1RN8L2
.WORD 1
.LONG P1RN8L3
.WORD 1
.LONG P1RN8L4
.WORD 1
.LONG P1RN8L5
.WORD 1
.LONG P1RN8L6
.WORD 1
.LONG P1RN8L7
.WORD 1
.LONG P1RN8L8
.WORD 1
.LONG 0
FPWK_LFT:
.LONG P1RN9L1
.WORD FLIPBITS|1,0
.LONG P1RN9L2
.WORD 1
.LONG P1RN9L3
.WORD 1
.LONG P1RN9L4
.WORD 1
.LONG P1RN9L5
.WORD 1
.LONG P1RN9L6
.WORD 1
.LONG P1RN9L7
.WORD 1
.LONG P1RN9L8
.WORD 1
.LONG 0
FPWK_UPLFT:
.LONG P1R10L1
.WORD FLIPBITS|1,0
.LONG P1R10L2
.WORD 1
.LONG P1R10L3
.WORD 1
.LONG P1R10L4
.WORD 1
.LONG P1R10L5
.WORD 1
.LONG P1R10L6
.WORD 1
.LONG P1R10L7
.WORD 1
.LONG 0
FPWK_DNRGT:
.LONG P1RN8L1
.WORD FLIPBITS|1,(M_FLIPH)
.LONG P1RN8L2
.WORD 1
.LONG P1RN8L3
.WORD 1
.LONG P1RN8L4
.WORD 1
.LONG P1RN8L5
.WORD 1
.LONG P1RN8L6
.WORD 1
.LONG P1RN8L7
.WORD 1
.LONG P1RN8L8
.WORD 1
.LONG 0
TWK_UP:
.LONG P1TH12L1
.WORD FLIPBITS|4,0
.LONG P1TH12L2
.WORD 4
.LONG 0
TWK_DN:
.LONG P1TH6L1
.WORD FLIPBITS|4,0
.LONG P1TH6L2
.WORD 4
.LONG 0
TWK_RGT:
.LONG P1TH9L1
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1TH9L2
.WORD 4
.LONG 0
TWK_UPRGT:
.LONG P1TH10L1
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1TH10L2
.WORD 4
.LONG 0
TWK_DNLFT:
.LONG P1TH8L1
.WORD FLIPBITS|4,0
.LONG P1TH8L2
.WORD 4
.LONG 0
TWK_LFT:
.LONG P1TH9L1
.WORD FLIPBITS|4,0
.LONG P1TH9L2
.WORD 4
.LONG 0
TWK_UPLFT:
.LONG P1TH10L1
.WORD FLIPBITS|4,0
.LONG P1TH10L2
.WORD 4
.LONG 0
TWK_DNRGT:
.LONG P1TH8L1
.WORD FLIPBITS|4,(M_FLIPH)
.LONG P1TH8L2
.WORD 4
.LONG 0
;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS
;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE
;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN
;SUBGRND .EQU 0004H ;GRENADE
;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET
;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN
WPNWALK:
;BULLET SUB TYPES
.LONG T_WALK_LIST,T_WALK_LIST,T_WALK_LIST2,T_WALK_LIST3,T_WALK_LIST4
.LONG T_WALK_LIST5,T_WALK_LIST6,T_WALK_LIST3
T_WALK_LIST: ;REGULAR GUN
.LONG P1WG12T1,P1WG12T1,P1WG6T1,P1WG12T1,P1WG9T1,P1WG10T1,P1WG8T1,P1WG9T1
.LONG P1WG10T1,P1WG8T1
T_WALK_LIST2: ;SPRAY GUN
.LONG P1WG12T1,P1SPRDWG12,P1SPRDWG6,P1SPRDWG12,P1SPRDWG9,P1SPRDWG10
.LONG P1SPRDWG8,P1SPRDWG9
.LONG P1SPRDWG10,P1SPRDWG8
T_WALK_LIST3: ;FLAME THROWER
.LONG P1WG12T1,P1FLAMR12,P1FLAMR6,P1FLAMR12,P1FLAMR9,P1FLAMR10,P1FLAMR8,P1FLAMR9
.LONG P1FLAMR10,P1FLAMR8
T_WALK_LIST4: ;GRENADE
.LONG P1GR12T1,P1GR12T1,P1GR6T1,P1GR12T1,P1GR9T1,P1GR10T1,P1GR8T1,P1GR9T1
.LONG P1GR10T1,P1GR8T1
T_WALK_LIST5: ;NON STOPPING BULLET
.LONG P1LARS12,P1LARS12,P1LARS6,P1LARS12,P1LARS9,P1LARS10,P1LARS8,P1LARS9
.LONG P1LARS10,P1LARS8
T_WALK_LIST6: ;MACHINE GUN WEAPON
.LONG P1MGUN12,P1MGUN12,P1MGUN6,P1MGUN12,P1MGUN9,P1MGUN10,P1MGUN8,P1MGUN9
.LONG P1MGUN10,P1MGUN8
T_WALK_FLG:
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL+M_FLIPH
.LONG DMAWNZ+M_NOCOLL+M_FLIPH
.LONG DMAWNZ+M_NOCOLL+M_FLIPH,DMAWNZ+M_NOCOLL
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL
L_WALK_FLG:
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+0,DMAWNZ+0,DMAWNZ+M_NOCOLL,DMAWNZ+0+M_FLIPH
.LONG DMAWNZ+0+M_FLIPH
.LONG DMAWNZ+0+M_FLIPH,DMAWNZ+0
.LONG DMAWNZ+0,DMAWNZ+0
TSHK:
.LONG PSHOCK1
.WORD 3
.LONG PSHOCK3
.WORD 3
.LONG PSHOCK4
.WORD 3
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 3
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 4
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 2
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 2
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 2
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 2
.LONG PSHOCK8
.WORD 2
.LONG PSHOCK5
.WORD 2
.LONG PSHOCK6
.WORD 2
.LONG PSHOCK7
.WORD 2
.LONG PSHOCK8
.WORD 2
.LONG 0


21
CARN.TVS Normal file
View File

@ -0,0 +1,21 @@
.struct disp.equ
.STRUCT MPROC.EQU
.STRUCT GAME.EQU
.STRUCT SYS.INC
.km !f1 \ @J"HOME"@K*ACTIVE\ PROC\ PLINK"CR"
.km !f2 \ @J"HOME"@K*OBJLST\ OBJ\ OLINK"CR"
.km !f3 \ @J"HOME"@KPALRAM\ PAL\ *"CR"
.km !f4 \ @J"HOME"@K*BAKLST\ OBJ\ OLINK"CR"
.km !f5 \ @J"HOME"@K*OFREE\ OBJ\ OLINK"CR"
;**** display SOURCE when cursor on longword in struct or mem display ****
.km S @M"CR"S"CR"
;**** display WORDS when cursor on longword in struct or mem display ****
.km W @M"CR"W"CR"
; this is a comment
.wp SAVESCR,UHW
.WP STATUS,UHW
.wp CPULEFT,UDW
.wp CPUAVG,UDW
.wp START,UHW


36
CARNIMG.BAT Normal file
View File

@ -0,0 +1,36 @@
: This file will split the Total Carnage Image files
: into the appropriate ROM files. It will then concantenate the files
: into 2 MBit eprom files.
:
: P Cox 08 Nov. 1991 Initial Creation
: P Cox 26 Nov. 1991 Deleted path spec for SREC
:
: Split the Image file
echo "Beginning Image File Build Process..."
srec <carnimg.lrn
:
: Delete the unused *.03 Image Files
echo "Deleting unused split image files (*.03)..."
del *.03
:
echo "Beginning Image File Combine Process..."
:
copy /b carn20.00 + carn24.00 carnu111.pp
copy /b carn20.01 + carn24.01 carnu95.pp
copy /b carn20.02 + carn24.02 carnu106.pp
copy /b carn28.00 + carn2c.00 carnu112.pp
copy /b carn28.01 + carn2c.01 carnu96.pp
copy /b carn28.02 + carn2c.02 carnu107.pp
copy /b carn30.00 + carn34.00 carnu113.pp
copy /b carn30.01 + carn34.01 carnu97.pp
copy /b carn30.02 + carn34.02 carnu108.pp
copy /b carn38.00 + carn3c.00 carnu114.pp
copy /b carn38.01 + carn3c.01 carnu98.pp
copy /b carn38.02 + carn3c.02 carnu109.pp
:
echo "Deleting split 1 MBit image files (*.00, *.01, *.02)..."
del *.0?
:
:
:


12
CARNIMG.LRN Normal file
View File

@ -0,0 +1,12 @@
*****
2000000
4
carn.irw
a


24
CARNPROG.BAT Normal file
View File

@ -0,0 +1,24 @@
: This file will split the Total Carnage Program files
: into the appropriate ROM files. It will then concantenate the files
: into 2 MBit eprom files.
:
: P Cox 08 Nov. 1991 Initial Creation
: P Cox 26 Nov. 1991 Deleted path spec for SREC
:
: Split the Program file
echo "Beginning Program File Build Process..."
srec <carnprog.lrn
:
:
echo "Beginning Program File Combine Process..."
:
copy /b carnfc.0 + carnfe.0 carnu105.pp
copy /b carnfc.1 + carnfe.1 carnu89.pp
:
echo "Deleting 1 MBit program files..."
:
del carnf?.0
del carnf?.1
:
:


12
CARNPROG.LRN Normal file
View File

@ -0,0 +1,12 @@
*****
ffc00000
2
carn.out
a


BIN
CARNU105.PP Normal file

Binary file not shown.

BIN
CARNU89.PP Normal file

Binary file not shown.

574
CHUNKS.ASM Normal file
View File

@ -0,0 +1,574 @@
**************************************************************
*
* Software: Mark Turmell
* Initiated: 9/2/90
*
* Modified: Shawn Liptak, 10/27/91 -Orcus mods
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 12/27/91 14:21
**************************************************************
.FILE 'CHUNKS.ASM'
.TITLE 'CHUNK/EXPLOSION CODE'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "IMGTBL.GLO"
.INCLUDE "GAME.EQU"
;SOUNDS EXTERNAL
;SYMBOLS EXTERNALLY DEFINED
.ref GETFPAL,FRANIM,GPALOBJ,GETCPNT
.ref RNDRNGS
.ref RANDPER
;SYMBOLS DEFINED IN THIS FILE
.DEF BLOOD_LST2,ALL_CHUNKS,CHUNK_OBJ,BEGIN_CHNK,PCTOT
.DEF BLOOD_LST1,PCINFO,BOX_OUT,LASTPC
;UNINITIALIZED RAM DEFINITIONS
.BSS LASTPC,32
.BSS PCTOT,16
.BSS PCINFO,(32+16+32)*PCSMAX
.BSS GENERIC_INIT,7*32-16
;EQUATES FOR THIS FILE
;FOR STARTING A CHUNK OBJECT
XVAL .EQU GENERIC_INIT
YVAL .EQU XVAL+32
IMG .EQU YVAL+32
ZPOS .EQU IMG+32
FLAGS .EQU ZPOS+16
ID .EQU FLAGS+16
XVEL .EQU ID+16
YVEL .EQU XVEL+32
.TEXT
.REF LOCK_NUM,DO_ALL_STUFF,ADJSTWTL,SLIDEIN,INFO_BOX
.REF STRLNRMO,ERASE_TXT,WRLD,RD7FONT,EXITSND
.DEF WARP_INFO
WARP_INFO
;BRING PUT WARP INFO BOX AND TEXT
MOVE @LOCK_NUM,A0
CMPI 6,A0
JRZ WDIE
MOVI BUYINPID,A0
CLR A1
NOT A1
CALLA EXISTP
* Z BIT SET = NO MATCH, A0 = 0
JRNZ WDIE
MOVI BX1A,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA),L
MOVI BX2A,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+32),L
MOVI BX3A,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+64),L
MOVE A13,@INFO_BOX,L
MOVI SLIDEIN,A0
CALLA ONESND
MOVK 13H,A11
WVOUT SLEEPK 1
MOVE A13,A10
MOVK 3,A9
WVOUT1 MOVE *A10(PDATA),A0,L
MOVE *A0(OYPOS),A1
SUBK 5,A1
MOVE A1,*A0(OYPOS)
ADDK 32,A10
DSJ A9,WVOUT1
DSJ A11,WVOUT
CREATE TYPTEXT,DOT
SLEEP 130+150+30
BOX_OUT
;KILL ALL TEXT
MOVI TYPTEXT,A0
CLR A1
MOVE A1,@INFO_BOX,L
CALLA KIL1C
CALLA ERASE_TXT
MOVI EXITSND,A0
CALLA ONESND
MOVI 23H,A11
WVOU SLEEPK 1
MOVE A13,A10
MOVK 3,A9
WVOU1 MOVE *A10(PDATA),A0,L
MOVE *A0(OXPOS),A1
ADDK 7,A1
MOVE A1,*A0(OXPOS)
ADDK 32,A10
DSJ A9,WVOU1
DSJ A11,WVOU
MOVE *A13(PDATA),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+32),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+64),A0,L
CALLA DELOBJ
WDIE DIE
DOT
CLR A0
MOVE A0,@WRLD
MOVI RD7FONT,A11 ;FONT TABLE
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
MOVI WOBJ1,A8 ;WARPED TO:
MOVI [09EH,0E7H],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
MOVK 2,A0
JSRP STRLNRMO
;BASED ON WARP #, PRINT OUT WARPED TO AREA:
MOVI BLIP,A0
CALLA ONESND
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI WARPTX1,A8
MOVE *A8,A8,L
MOVI [09EH+9,0E7H],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVI WOBJ2,A8 ;WARP CODE:
MOVI [0B4H,0E7H],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI FWARPTX2,A8
MOVE *A8,A8,L
MOVI BLIP,A0
CALLA ONESND
MOVI 500,A0
CALLA RANDPER
JRNC NOPASS ;BR=NO PASSWORD THIS TIME
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI WARPTX2,A8
MOVE *A8,A8,L
NOPASS MOVI [0B4H,0E7H+80],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVI WOBJ2A,A8 ;DIFFICULTY:
MOVI [0B4H+9,0E7H],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI WARPTX2A,A8
MOVE *A8,A8,L
MOVI [0B4H+9,0E7H+87],A9 ;SCRN Y/X
MOVI 3A3AH,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVI WOBJ3,A8 ;ADVICE:
MOVI [0CAH,0E7H],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI WARPTX3,A8
MOVE *A8,A8,L
MOVI [0CAH+9,0E7H],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
MOVK 2,A0
JSRP STRLNRMO
MOVI BLIP,A0
CALLA ONESND
MOVE @LOCK_NUM,A8
SLL 5,A8
ADDI WARPTX4,A8
MOVE *A8,A8,L
MOVI [0CAH+18,0E7H],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
MOVK 2,A0
JSRP STRLNRMO
DIE
WOBJ1 .BYTE "WARPED TO:",0
WOBJ2 .BYTE "WARP CODE:",0
WOBJ2A .BYTE "DIFFICULTY:",0
WOBJ3 .BYTE "ADVICE:",0
BLIP .WORD >F3F7,>20,>8099,0 ;BLIP SND
WARPTX1 .LONG WP1,WP1A,WP1B,WP1C,WP1D,WP1E,0,WP1G,WP1H,WP1H
WARPTX2 .LONG WP2,WP2A,WP2B,WP2C,WP2D,WP2E,0,WP2G,WP2H,WP2H
FWARPTX2
.LONG FWP2,FWP2A,FWP2B,FWP2C,FWP2D,FWP2E,0,FWP2G,FWP2H,FWP2H
WARPTX2A
.LONG WPD2,WPD2A,WPD2B,WPD2C,WPD2D,WPD2E,0,WPD2G,WPD2H,WPD2H
WARPTX3 .LONG WP3,WP3A,WP3B,WP3C,WP3D,WP3E,0,WP3G,WP3H,WP3H
WARPTX4 .LONG WP4,WP4A,WP4B,WP4C,WP4D,WP4E,0,WP4G,WP4H,WP4H
WP1 .BYTE "BIO-NUCLEAR ZONE",0 ;MIDDLE OF DESERT
FWP2 .BYTE "?ULU",0
WP2 .BYTE "ZULU",0 ;GETS YOU TO WAVE BEFORE TAUNT
WPD2 .BYTE "05",0
WP3 .BYTE "BLOW UP LAND",0
WP4 .BYTE "MINES WITH BOMB",0
WP1A .BYTE "BONUS HOSTAGES",0 ;LOWER LEFT OF DESERT
FWP2A .BYTE "GOOB",0
WP2A .BYTE "ORCS",0 ;GETS YOU DESERT LCKDWN #1
WPD2A .BYTE "08",0
WP3A .BYTE "DROP BOMBS AND",0
WP4A .BYTE "DON'T BE GREEDY!",0
WP1B .BYTE "NEAR FACTORY",0 ;FROM TRIPLE GUNNER
FWP2B .BYTE "LICK",0
WP2B .BYTE "M??K",0 ;GETS YOU TO ORCUS
WPD2B .BYTE "07",0
WP3B .BYTE "SHOOT BARREL TO",0
WP4B .BYTE "DELAY EXPLOSION!",0
WP1C .BYTE "BONUS KEYS!",0 ;1ST HANGAR IN AIRPORT
FWP2C .BYTE "ROAD",0 ;GETS YOU TO AFTER RACKUP #1
WP2C .BYTE "LIPS",0 ;GETS YOU TO END OF ROAD #1
WPD2C .BYTE "10",0
WP3C .BYTE "EXPERIENCE PAIN",0
WP4C .BYTE "BEFORE PLEASURE!",0
WP1D .BYTE "REACTOR INTERIOR",0 ;MIDDLE OF AIRPORT GOING UP
FWP2D .BYTE "LICK",0 ;GETS YOU TO END OF TARMAC
WP2D .BYTE "EA?S",0 ;AREA WHERE SPIDER EGGS ARE
WPD2D .BYTE "10",0
WP3D .BYTE "KILL MR. BUTANE",0
WP4D .BYTE "WITH MANY BOMBS!",0
WP1E .BYTE "SECRET AIRPLANES",0 ;ON ROAD GOING INTO BIG FORT
FWP2E .BYTE "TOID",0 ;GETS YOU TO START OF BIGFORT
WP2E .BYTE "TO?D",0
WPD2E .BYTE "10",0
WP3E .BYTE "GRAB ROCKET PACKS",0
WP4E .BYTE "FLOAT OVER MINES!",0
;WP1F .BYTE "ELECTRIC CHAIR",0 ;ON ROAD GOING INTO BIG FORT
;FWP2F .BYTE "SHOK",0 ;GETS YOU TO START OF BIGFORT
;WP2F .BYTE "SHOK",0
;WPD2F .BYTE "10",0
;WP3F .BYTE "WHACK ON BUTTON",0
;WP4F .BYTE "TO ESCAPE DEATH!",0
WP1G .BYTE "EASY FREE MAN!",0 ;IN AIRPRT
FWP2G .BYTE "BL?W",0 ;GETS YOU TO SECRET PATH
WP2G .BYTE "B?OW",0
WPD2G .BYTE "4",0
WP3G .BYTE "SUPER HERO GAMES",0
WP4G .BYTE "ARE FOR DOGS!",0
WP1H .BYTE "JEEP ACTION!",0 ;LOWER RIGHT DESERT
FWP2H .BYTE "SHOK",0 ;SHOCK SCENE
WP2H .BYTE "SHOK",0
WPD2H .BYTE "5",0
WP3H .BYTE "YOU SHOULD HAVE",0
WP4H .BYTE "2 PLAYERS HERE!",0
;FEASTMASTER
.EVEN
BX1A:
.LONG [0E3H,0],[0F9H,0],BXTOP
.WORD 472,DMAWNZ|M_NOCOLL,CLSDEAD
.LONG 0,0
BX2A:
.LONG [0E3H,0],[0FEH,0],BXMID
.WORD 472,DMAWNZ|M_NOCOLL,CLSDEAD
.LONG 0,0
BX3A:
.LONG [0E3H,0],[0146H,0],BXTOP
.WORD 472,DMAWNZ|M_NOCOLL|M_FLIPV,CLSDEAD
.LONG 0,0
********************************
* Chunk an object (Process)
* PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (ALL_CHUNKS) PROCESS
* A8=*OBJECT TO BLOW UP
* A9=XVEL
* A10=YVEL FOR ADDING IN
* A11=LIST FOR FRANIM, FIRST ENTRY IS IMG TO START, 0 ENDS LIST
CHUNK_OBJ
MOVE @PCTOT,A0
CMPI 40,A0
JRGE DONE
CALLA GETCPNT
MOVX A1,A0
SLL 16,A0 ;A0=PROPER X,A1=Y
MOVE A9,A6
MOVE A10,A7
MOVE *A11+,A2,L
MOVI 293,A3 ;240
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5 ;I WILL KILL MYSELF
CALLR BEGIN_CHNK
MOVE *A13(PDATA),A0
JRZ NOCH
MOVE A0,*A8(OPAL) ;CHANGE TO OTHER PAL
NOCH
MOVE @LASTPC,A0,L ;NOW INSERT THIS PNTR INTO CHUNK DRIVER
MOVE A8,*A0+,L
MOVK 1,A1
MOVE A1,*A0+,W ;INIT TICK CNT
MOVE *A11+,A9,L ;LIST FOR THIS CHUNK
MOVE A9,*A0+,L
MOVE A0,@LASTPC,L
JRUC AGAIN ;WILL NOW GENERATE X CHUNKS FOR CRATE DEATH
colp MOVE @PCTOT,A2
INC A2
MOVE A2,@PCTOT
CALLR NEWV2 ;GET VELOCITIES FOR THIS CHUNK
CALLR QUICK_CHNK
MOVE *A13(PDATA),A0
JRZ NOCH2
MOVE A0,*A8(OPAL) ;CHANGE TO OTHER PAL
NOCH2 MOVE @LASTPC,A0,L
MOVE A8,*A0+,L
MOVK 1,A1
MOVE A1,*A0+,W ;INIT TICK CNT
MOVE A9,*A0+,L
MOVE A0,@LASTPC,L
AGAIN MOVE *A11+,A9,L
JRNZ colp
DONE DIE
;NEWV MOVI -09000H,B0
; MOVI 09000H,B1
; CALLA RANGRAND
; ADD A6,A0
; MOVE A0,@XVEL,L
; MOVI -07000H,B0
; MOVI 07000H,B1
; CALLA RANGRAND
; ADD A7,A0
; MOVE A0,@YVEL,L
; RETS
NEWV2
movi >e000,a0
calla RNDRNGS
add a6,a0
move a0,@XVEL,L
movi >c000,a0
calla RNDRNGS
add a7,a0
move a0,@YVEL,L
rets
********************************
* PROCESS WHICH HANDLES ALL CHUNKS
ALL_CHUNKS
CLR A0
MOVI PCINFO,A1
MOVI PCSMAX,A2
PCL1 MOVE A0,*A1+,L
MOVE A0,*A1+,W
MOVE A0,*A1+,L
DSJS A2,PCL1
MOVI PCINFO,A0
MOVE A0,@LASTPC,L
PCTP MOVI PCINFO,A3
PCTP1
MOVE *A3+,A8,L
JREQ DN
;PC PNTR FOUND
MOVE *A3,A0,W ;GET SLP TIME
DEC A0
MOVE A0,*A3+,W
JRGT PCOUTA ;JRNE
;READY FOR ANIMATION ON THIS PIECE
MOVE *A3,A9,L ;GET FRANIM LIST
MOVK 4,A1
JSRP FRANIM ;PIG ON CYCLES!
JRC YDONE ;GET RID OF PIECE
MOVE A9,*A3,L
MOVE A0,*A3(-16),W ;RESTORE SLEEP TIME
PCOUTA ADDK 32,A3
JRUC PCTP1
YDONE SUBI 48,A3
;ONLY NECESSARY IF ONLY PIECE IN LIST?
CLR A0
MOVE A0,*A3,L
CALLA DELOBJA8
MOVE @PCTOT,A0
DEC A0
MOVE A0,@PCTOT
JRNN YD
CLR A0
MOVE A0,@PCTOT
YD
MOVE @LASTPC,A0,L
SUBI 80,A0
MOVE A0,@LASTPC,L
MOVE *A0,A5,L
JREQ DN ;BR=ONLY 1 PC IN LIST AND IT DIED!
MOVE *A0+,A1,L
MOVE *A0+,A2,W
MOVE *A0,A5,L
CLR A4
SUBI 48,A0
MOVE A4,*A0,L ;ZERO OUT PREVIOUS LAST ENTRY
MOVE A1,*A3+,L
MOVE A2,*A3+,W
MOVE A5,*A3+,L
JRUC PCTP1
DN SLEEPK 1
JRUC PCTP
BEGIN_CHNK
MOVE A0,@XVAL,L
MOVE A1,@YVAL,L
MOVE A2,@IMG,L
MOVE A3,@ZPOS
MOVE A4,@FLAGS
MOVE A5,@ID
MOVE A6,@XVEL,L
MOVE A7,@YVEL,L
QUICK_CHNK
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
CALLA STFOBJ ;STUFF OBJECT DATA
MOVE A13,*A0(OPLINK),L
CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
RETS
*****************************************************************************
;
; FRANIM LISTS OF CHUNKS/BLOOD
;
*****************************************************************************
BLOOD_LST1
;BLOODY CHUNK
.LONG rblot1
.WORD NEWPALET|20
.LONG RDBOOM ;ONUP1
.LONG rblot2
.WORD 5
.LONG rblot3
.WORD 5
.LONG rblot4
.WORD 5
.LONG rblot5
.WORD 5
.LONG rblot6
.WORD 5
.LONG rblot7
.WORD 5
.LONG rblot8
.WORD 4
.LONG rblot9
.WORD 4
.LONG rblot10
.WORD 5
.LONG 0
BLOOD_LST2
;OVAL BLOOD EXPLOSION
.LONG bldclt1
.WORD NEWPALET|1
.LONG RDBOOM ;ONUP1
.LONG bldclt2
.WORD 6
.LONG bldclt3
.WORD 6
.LONG bldclt4
.WORD 6
.LONG bldclt5
.WORD 6
.LONG bldclt6
.WORD 6
.LONG bldclt7
.WORD 6
.LONG bldclt8
.WORD 7
.LONG 0
BLOOD_LST3
;BLOODY CHUNK
.LONG rblot1
.WORD NEWPALET|40
.LONG RDBOOM ;ONUP1
.LONG rblot2
.WORD 5
.LONG rblot3
.WORD 6
.LONG rblot4
.WORD 6
.LONG rblot5
.WORD 5
.LONG rblot6
.WORD 5
.LONG rblot7
.WORD 5
.LONG rblot8
.WORD 4
.LONG rblot9
.WORD 4
.LONG rblot10
.WORD 5
.LONG 0
*****************************************************************************
.END


1340
CL2.ASM Normal file

File diff suppressed because it is too large Load Diff

1478
COLL2.ASM Normal file

File diff suppressed because it is too large Load Diff

6
DEMO.ASM Normal file
View File

@ -0,0 +1,6 @@
;
.END


3134
DIAG.ASM Normal file

File diff suppressed because it is too large Load Diff

108
DISP.EQU Normal file
View File

@ -0,0 +1,108 @@
*.Last mod - 10/23/91 22:32
.GLOBAL OFREE,OBJLST,BAKLST,DISPLAYON,SCRNRELV
.GLOBAL OINIT,GETOBJ,INSOBJ,DELOBJ,DELOBJA8
.GLOBAL DISPLAY,ADDOBJ,KILOBJ,OBJSTR,DISPH
.GLOBAL ANI,STFOBJ,SCRTST,SCRTSTG,GSAGOF,GANIOF,DELBOBJ
.GLOBAL YZSORT,INSBOBJ,KILBOBJ
.GLOBAL PULLBOBJ,PULLOBJ,GANISAG,ADJSTWTL,CLIPOBJ
.GLOBAL QDMA,QDMAN,GETANIXY
.GLOBAL SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL
.GLOBAL SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL
.GLOBAL OBJSTR,SCREENTL,SCREENLR,QSYNC,DMAQCUR,DMAQCNT
.GLOBAL BOTQ0CNT,BOTQ1CNT,TOPQ0CNT,TOPQ1CNT,BOTQ0FLG,BOTQ1FLG
.GLOBAL TOPQ0FLG,TOPQ1FLG,BOTQ0,BOTQ1,TOPQ0,TOPQ1,STOPOBJS
.GLOBAL FREEOBJ,FREEOBJE
.GLOBAL EXISTOBJ,DMAINT
.GLOBAL DISPQT,ENDOFREE,ISOBJ
.GLOBAL BEGINOBJ,BEGINOBJ2,BKGSAGOF
.global KIL1OBJC,KILOBJN,DELOBJDIE,FRQDELDIE
*GLOBALS CONNECTED TO NARC
.GLOBAL DFRMGRND,CURPAL,DUMCOLL
*OBJECT INITIALIZATION TABLE
INITXVAL .EQU 0
INITYVAL .EQU 20H
INITIMG .EQU 40H
INITZPOS .EQU 60H
INITFLAGS .EQU 70H
INITID .EQU 80H
INITXVEL .EQU 90H
INITYVEL .EQU 0B0H
*CONSTANTS
SCRNST .EQU [0,0] ;TOP LEFT OF SCREEN
SCRNEND .EQU [256,400] ;BOTTOM RIGHT OF SCREEN
SCRNMID .EQU [128,200] ;MIDPOINT OF SCREEN
;SCRNST .EQU [1,5] ;TOP LEFT OF SCREEN
;SCRNEND .EQU [252,395] ;BOTTOM RIGHT OF SCREEN
;SCRNMID .EQU [128,200] ;MIDPOINT OF SCREEN
* OBJECT BLOCK LAYOUT
*STRUCT OBJ
OLINK .EQU 0 ;UHL 32 BIT LINK TO NEXT OBJECT BLOCK
OXVEL .EQU 20H ;UHL 32 BIT X VELOCITY 16.16
OYVEL .EQU 40H ;UHL 32 BIT Y VELOCITY 16.16
OXVAL .EQU 60H ;UHL 32 BIT X POSITION
OXFRAC .EQU 60H ; FRACTIONAL PORTION OF X POSITION
OXPOS .EQU 70H ; INTEGER PORTION OF X POSITION
OYVAL .EQU 080H ;UHL 32 BIT Y POSITION
OYFRAC .EQU 080H ; FRACTIONAL PORTION OF Y POSITION
OYPOS .EQU 090H ; INTEGER PORTION OF Y POSITION
OZPOS .EQU 0A0H ;UHW INTEGER Z POSITION OF OBJECT
OFLAGS .EQU 0B0H ;UHW 32 BIT BITS 0 - 5 DMA CONTROL; B16-31= OFFSET PRECOMPUTED
OFSET .EQU 0C0H ;UHW PRECOMPUTED OFFSET
OSAG .EQU 0D0H ;UHL 32 BIT SOURCE ADDRESS (UNCLIPPED, ADJUSTED FOR FLIPS)
OSIZE .EQU 0F0H ; 32 BIT H,W OF OBJECT (16,16) W=ADJUSTED FOR MORSEL
OSIZEX .EQU 0F0H ;UHW X SIZE
OSIZEY .EQU 100H ;UHW Y SIZE
OPAL .EQU 110H ;UHW PALLETTE
OCONST .EQU 120H ;CONSTANT COLOR
OIMG .EQU 130H ;UHL 32 BIT POINTER TO IMAGE DATA TABLE
OID .EQU 150H ;UHW 16 BIT OBJECT ID
OPLINK .EQU 160H ;UHL 32 BIT LINK TO CONTROLLING PROCESS
;ODMAXY .EQU 180H ; 32 BIT SCREEN COORD OF OBJECT
;ODMAX .EQU 180H ;X COORDINATE
;ODMAY .EQU 190H ;Y COORDINATE
OXCLIP .EQU 180H ;UHW 16 BIT TOTAL X PRECLIP
OBSIZ .EQU 190H ;1F0
*ENDSTRUCT
NOBJ .EQU 415 ;OBJECTS TO DISPLAY
BQCELL .EQU >A0 ;SIZE OF DMA QUEUE ELEMENT
***********************
* VALUES FOR OFLAGS *
***********************
M_WRZERO .EQU 1 ;WRITE ZERO DATA
M_WRNONZ .EQU 2 ;WRITE NON-ZERO DATA
M_CONZER .EQU 4 ;REPLACE ZERO DATA WITH CONSTANT
M_CONNON .EQU 8 ;REPLACE NON-ZERO DATA WITH CONSTANT
M_CONST .EQU >C ;ANY CONSTANT DATA REPLACEMENT
M_FLIPH .EQU >10 ;FLIP HORIZONTALLY
M_FLIPV .EQU >20 ;FLIP VERTICALLY
M_NODIS .EQU >100 ;IGNORE THIS ENTRY
M_PZPLUS .EQU >200 ;TAKE Z VALUE FROM RAM LOC. PREVZ AND ADD 1
M_PIXSCAN .EQU >400 ;IF=1 O.K. TO PIXEL SCAN WITH THIS OBJECT
M_NOCOLL .EQU >800 ;IF=1 OBJECT NOT COLLIDABLE
M_PREVZ .EQU >1000 ;TAKE Z VALUE FROM RAM LOC. PREVZ
M_NOMOV .EQU >2000 ;DO NOT ADD VELOCITIES
M_INUSE .set >8000 ;obj in use by display system
*BIT POSITIONS FOR OFLAGS
B_WRZERO .EQU 0
B_WRNONZ .EQU 1
B_CONZER .EQU 2
B_CONNON .EQU 3
B_FLIPH .EQU 4
B_FLIPV .EQU 5
B_NODIS .EQU 8
B_PZPLUS .EQU 9
B_PIXSCAN .EQU 10
B_NOCOLL .EQU 11
B_PREVZ .EQU 12
B_NOMOV .EQU 13
B_INUSE .set 15


972
FBAMODE.ASM Normal file
View File

@ -0,0 +1,972 @@
**************************************************************************
* *
* VIDEO GAME PROJECT: HIGH IMPACT FOOTBALL *
* *
* PROGRAMMER: EDWARD J. BOON *
* ARTIST: JOHN R. NEWCOMER *
* SOUNDS: *
* *
* MODULE: FBAMODE.ASM -- ATTRACT MODE *
* *
* COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. *
* *
**************************************************************************
.FILE 'FBAMODE.ASM'
.TITLE " <<< FOOTBALL ATTRACT MODE CODE >>> "
.WIDTH 132
.OPTION B,D,L
.MNOLIST
*
* GET THE SYSTEM STUFF
*
.INCLUDE "MPROCEQU.ASM" ;MPROC equates
.INCLUDE "DISPEQU.ASM" ;Display processor equates
.INCLUDE "SYSEQU.ASM" ;SYS.INC and GSP.INC
.INCLUDE "MACROS.HDR" ;Macros
.INCLUDE "MAINEQU.ASM"
.INCLUDE "IMGTBL.GLO"
.INCLUDE FIELDEQU.ASM
.INCLUDE "STRING.H"
.INCLUDE DIAGAUDN.ASM
.REF PRINT_DMA,PRINT_DMA_XY,BACKGROUND
.REF PRINT_OBJ,SHADOW_PRINT,AUTOSCR
.REF WIPEOUT,COIN_PAGE,CRED_P,PLAYTABS
.REF LM_SETUP,PRINTF,CHANGE_OID,GET_CSTR
.REF SETUP_OFFENSE,SETUP_DEFENSE,SETWORLD,BALL_IN_PLAY
.REF START_PLAYERS,COLSCAN,PLAY_INIT
.REF GET_LOGO,MIDDLE_OPEN,NOSOUNDS,POST_PLAY ;CAT_DUMP
.REF XFER_ALL_TO_A7
***************************** (SELF PLAY CODE)
.REF AMODE_START
***************************** (SELF PLAY CODE)
.DEF AMODE
.EVEN
.TEXT
**************************************************************************
* *
* ATTRACT MODE ENTRY POINT *
* *
**************************************************************************
AMODE
CLR A0
MOVE A0,@P1STAT,W
MOVE A0,@P2STAT,W
MOVE A0,@P3STAT,W
MOVE A0,@P4STAT,W
MOVI GS_AMODE,A0
MOVE A0,@GSTATE,W ; GAME STATE = ATTRACT MODE
CALLA WIPEOUT
MOVI RGB_BLACK,A0
MOVE A0,@IRQSKYE,W ; SET BACKGROUND COLOR
**************************** (SELF PLAY CODE)
JRUC AM0
SLEEP >80
MOVK 1,A0
MOVE A0,@AUTOPLAY,W
JAUC AMODE_START
***************************** (SELF PLAY CODE)
AM0 MOVK 5,A0
MOVE A0,*A13(P_GCOUNT),W ; # OF LOOPS TILL NO SOUNDS
AM1 CALLA CLR_SCRN
JSRP FIELD_TOUR
CALLA GANGEL
CALLA WIPEOUT
JSRP RUN_A_PLAY
CALLA GANGEL
CALLA WIPEOUT
JSRP COIN_PAGE
CALLA GANGEL
CALLA WIPEOUT
MOVE *A13(P_GCOUNT),A0,W
JREQ AM1
DEC A0
MOVE A0,*A13(P_GCOUNT),W
JRNE AM1
MOVK 1,A0
MOVE A0,@NOSOUND,W ; NO MORE SOUNDS PLEASE.
JRUC AM1
**************************************************************************
* *
* RUN A PLAY *
* *
* Runs a random play during the attract mode. *
* *
**************************************************************************
RUN_A_PLAY
MOVE @NOSOUND,A1,W ; ARE WE ALLOWED ??
JRNE RUNP0
MOVI >C7,A3
CALLA SEND_CODE_A3 ; PLAY TUNE IF LEGAL
RUNP0 CLR A0
MOVE A0,@SCRNTL,L
MOVE A0,@SCRNLR,L
MOVK 15,A0
CALLA RANDU
DEC A0
MOVE A0,@T0TEAM,W
MOVE A0,A1
RUNP1 MOVK 15,A0
CALLA RANDU
DEC A0
CMP A0,A1
JREQ RUNP1 ; DONT PICK SAME TEAM
MOVE A0,@T1TEAM,W
MOVI FIFTY_YARD,A0
MOVE A0,@LINEOFSC,W ; SET LINE OF SCRIMMAGE
MOVE A0,@STLOS,W
MOVE @OFFENSE,A0,W
XORI 1,A0
MOVE A0,@OFFENSE,W ; FLIP OFFENSE !!
MOVK 4,A0
CALLA RANDU
MOVE A0,@DOWNNUM,W ; RANDOM DOWN #
MOVK 4,A0
CALLA RANDU
DEC A0
MOVE A0,@MENUPIK0,W
MOVE A0,@MENUPIK1,W ; RANDOM PLAY CHOICE
CALLA PLAY_INIT
CALLA PLAYTABS ; SETUP OFFPTBL/DEFPTBL
CALLA SETWORLD
CREATE PID_AMODE,MIDDLE_OPEN
SLEEP 1
CREATE PID_AMODE,T0_SLIDE
CREATE PID_AMODE,T1_SLIDE
MOVI AMODE_VERSUS_INIT,A14
CALLA INITOBJ
MOVE A8,A0
CALLA INSOBJ2
SLEEP 2
MOVK 10,A11
CREATE PID_AMODE,RGBSTUFF ; FLASH "VERSUS"
SLEEP >C0 ; WAIT FOR LINEUP
MOVI OID_AMODE,A0
CALLA DALLOBJ ; GET RID OF LOGOS/VERSUS
CALLA START_PLAYERS ; XFER DUDES PROCESSES
MOVI OID_QB,A0
CALLA FINDOMAN ; FIND THE QB
CALLA BALL_IN_PLAY ; PUT THE BALL IN PLAY
CREATE PID_COLSCAN,COLSCAN ; COLLISION SCANNER
CREATE PID_BCTRACK,BC_TRACK ; BALL CARRIER
CLR A0
MOVE A0,@PLAYRES,W ; NO PLAY RESULT SO FAR
MOVI OID_MSGLET,A0
CALLA DALLOBJ ; ERASE LETTERS
MOVI PID_QB_YELL,A0
CALLA DALLPRC ; QB = SHUT UP
*
* WAIT FOR ATTRACT MODE PLAY TO END
*
MOVI 13*20,A10 ; WATCH "CAT" TIME LIMIT
RUNP5 SLEEP 5
MOVE @PLAYRES,A0,W
JRNE RUNP7
DSJS A10,RUNP5 ; I'LL WAIT, BUT NOT FOREVER
CLR A0
MOVE A0,@ERRNUM,W ; DONT CONFUSE WITH BOONTRAP
MOVI AUDWCATS,A0
CALLA AUD1 ; AUDIT THIS !!
.IF B_DEBUG
JAUC $ ; IN DEBUGGER ---> CALL ATTENTION TO !
.ENDIF
.IF PRINTER
; CALLA CAT_DUMP
.ENDIF
RUNP7
MOVI PID_COLSCAN,A0
CALLA DALLPRC
MOVI PID_SCR,A0
CALLA DALLPRC ; KILL SCROLLER
CLR A1
MOVE A1,@SCROLLX,L
MOVE A1,@SCROLLY,L
MOVI POST_PLAY,A7 ; A7 = EVERYONE XFERED HERE
CALLA XFER_ALL_TO_A7
SLEEP >20
MOVI >8000,A0
MOVE A0,A1
CALLA KILALL ; KILL ALL PROCS (EXCEPT INDESTUCTABLES)
MOVI FADEALL,A0
CALLA FADEOUT ; FADE EVERYTHING TO BLACK
SLEEP >30
CALLA NOSOUNDS ; SHUT UP
RETP
FADEALL .LONG 0
T0_SLIDE
MOVI AMODEL0_INIT,A14
CALLA INITOBJ
MOVE @T0TEAM,A1,W
CALLA GET_LOGO
MOVE *A1(16*6),A0,L
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; TEAMS PALETTE
CALLA ANI
MOVE A8,A0
CALLA INSOBJ2
MOVI >30000,A0
MOVE A0,*A8(OXVEL),L
SLEEP >3C
CLR A0
MOVE A0,*A8(OXVEL),L
DIE
T1_SLIDE
MOVI AMODEL1_INIT,A14
CALLA INITOBJ
MOVE @T1TEAM,A1,W
CALLA GET_LOGO
MOVE *A1(16*6),A0,L
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; TEAMS PALETTE
CALLA ANI
MOVE A8,A0
CALLA INSOBJ2
MOVI ->30000,A0
MOVE A0,*A8(OXVEL),L
SLEEP >3D
CLR A0
MOVE A0,*A8(OXVEL),L
DIE
AMODEL0_INIT
.LONG LA,0
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD -120,26,0
AMODEL1_INIT
.LONG LA,0
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD SCRRGT,26,0
AMODE_VERSUS_INIT
.LONG VERSUS,ICN3_PAL
.WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
.WORD >BB
.WORD 32
.WORD 0
**************************************************************************
* *
* SHOW TEAMS *
* *
* Will put all of the teams on the screen along with the field in the *
* background. *
* *
**************************************************************************
;SHOW_TEAMS
; MOVI AMODE_TEXT_INIT,A14
; MOVI >29,A0
; CALLA PRINT_OBJ ; TEXT = A4 --> A7
;
; MOVE A4,A5
; MOVI AMODE_TEXT_INIT,A14
; MOVI 00020002H,A6
; CALLA SHADOW_PRINT
; MOVE @OBJLST3,A0,L
; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST3
; MOVE A5,@OBJLST3,L ; OBJLST3 ---> 1ST CHAR
; MOVK 3,A11
; CREATE PID_AMODE,RGBSTUFF
;*
;* BACKGROUND THING A MA BOB
;*
; MOVK 4,A0
; CALLA GETBLIMP ; TEAM SELECT MODULE
; CALLA A5A6OL1 ; ADD TO "OBJLST1"
;
; MOVI 9,A9
; MOVI 60,A10
; MOVI ATEAM_LOGOS,A11
;SHOWT0 MOVK 5,A7 ; 5 ROWS
;SHOWT1 MOVI LOGO_INIT,A14
; CALLA INITOBJ ; GET AN OBJECT
; MOVE *A11+,A1,L ; A1 = OIMG
; CALLA ANI
; MOVE *A11+,A0,L
; CALLA SWPAL
; MOVE A8,A0
;
; MOVE A9,*A8(OXPOS),W
; MOVE A10,*A8(OYPOS),W
; CALLA INSOBJ
; ADDI 35,A10
; DSJS A7,SHOWT1
; SLEEP 2
; MOVI 60,A10
; ADDI >80,A9
; CMPI (>60*3)+5,A9
; JRLT SHOWT0
;
; SLEEP >40*8
; JRUC AMODE_EXIT
;
;
;
AMODE_TEXT_INIT
.LONG FON15A,boonpal
.WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE
.WORD 0,0,0
;
;
;ATEAM_LOGOS
; .LONG LA,LA_PAL
; .LONG DENVER,DNVR_PAL
; .LONG SANFRN,SANF_PAL
; .LONG MIAMI,MIAM_PAL
; .LONG WASH,WASH_PAL
; .LONG CHICAGO,CHGO_PAL
; .LONG TEXAS,TEX_PAL
; .LONG PITTSBURGH,PITT_PAL
; .LONG DETROIT,DETR_PAL
; .LONG NEWYRK,NYC_PAL
; .LONG AFRICA,AFRC_PAL
; .LONG CANADA,CANA_PAL
; .LONG EUROPA,EURO_PAL
; .LONG KANSAS,KANS_PAL
; .LONG ATLANTA,ATLN_PAL
;
;
;LOGO_INIT
; .LONG LA,boonpal
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD 0,0,0
;
;LA_INIT
; .LONG LA,LA_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>30,0
;
;DENVER_INIT
; .LONG DENVER,DNVR_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>58,0
;
;SF_INIT
; .LONG SANFRN,SANF_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>80,0
;
;MIAMI_INIT
; .LONG MIAMI,MIAM_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>A8,0
;
;WASH_INIT
; .LONG WASH,WASH_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >40,>D0,0
;
;*
;* COLUMN #2
;*
;CHICAGO_INIT
; .LONG CHICAGO,CHGO_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>30,0
;
;DALLAS_INIT
; .LONG TEXAS,TEX_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>58,0
;
;PITT_INIT
; .LONG PITTSBURGH,PITT_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>80,0
;
;DETROIT_INIT
; .LONG DETROIT,DETR_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>A8,0
;
;NY_INIT
; .LONG NEWYRK,NYC_PAL
; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE
; .WORD >C0,>D0,0
;
**************************************************************************
* *
* FIELD TOUR *
* *
* This part of the attract mode scans the entire field with the game *
* logo overlaying the screen. *
* *
**************************************************************************
FIELD_TOUR
CREATE PID_AMODE,BACKGROUND ; MAKE A BACKGROUND UPDATE DUDE
JSRP SHOW_CREDITS
CLR A0
MOVI AMODE_TEXT_INIT,A14
CALLA PRINT_OBJ ; COPYRIGHT MESSAGE
MOVE A4,A5
MOVE A7,A6
CALLA A5A6OL1
MOVK 2,A0
CALLA GETBLIMP ; A5 = LOGO MODULE OBJECT LIST
CALLA A5A6OL2 ; PUT ON OBJECT LIST #1
MOVK 4,A11
CREATE PID_AMODE,RGBSTUFF ; FLASH "CREDITS"
MOVK 2,A9
FTOUR1 MOVI LGOAL_OUT_X-80,A0
MOVE A0,@WORLDTLX+16,W ; STARTING X
MOVI TOP_SIDELINE-215,A0
MOVE A0,@WORLDTLY+16,W ; STARTING Y
*
* PAN THROUGH THE CROWD
*
MOVI RGOAL_OUT_X+80-SCRRGT,A1
MOVE @WORLDTLY+16,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
*
* TO MIDDLE OF FIELD
*
MOVE @WORLDTLX+16,A1
SUBI >100,A1
MOVE @WORLDTLY+16,A3
ADDI >100,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
*
* TO LEFT ENDZONE
*
MOVI LGOAL_OUT_X->50,A1
MOVE @WORLDTLY+16,A3
MOVK 2,A4
JSRP AUTOSCR ; SCROLLER DUDE
SLEEP >80
AMODE_EXIT
MOVI OID_AMODE,A0
MOVE A0,A1
CALLA KILL_OCP
CALLA DELALLB
MOVI PID_AMODE,A0
MOVE A0,A1
CALLA KILALL ; KILL ANYONE I SPAWNED OFF
RETP
*
* DELETE ALL BACKGROUND OBJECTS (AND THEIR PALETTES)
*
DELALLB
MOVE @BAKLST,A0,L ; ARE THERE ANY BACKGROUND OBJ ?
JREQ PS2 ; NO ---> SKIP
MOVE A0,A1 ; A1 = OBJECT #1
CLR A0
MOVE A0,@BAKLST,L
PS1 MOVE *A1,A3,L ; A3 = NEXT IN LINE
MOVE *A1(OPAL),A0,W
CALLA FREEPAL ; DECREMENT PALETTE COUNTER
MOVE @OFREE,A2,L
MOVE A1,@OFREE,L ; PUT OBJECT ON FREE LIST
MOVE A2,*A1,L
MOVE A3,A1
JRNE PS1
PS2 RETS
*
* STARS ALONG THE EDGES
*
CLR A5 ; INITIALIZE COLOR POINTER
DEC A5
MOVI >10,A2 ; STARTING X POSITION
MOVI >15,A3 ; STARTING Y POSITION
MOVI 13,A6 ; STAR COUNT
AM2 CALLR DO_A_STAR
ADDI >25,A2
DEC A6
JRNE AM2
SUBI >25,A2
MOVI 10,A6 ; STAR COUNT
AM3 ADDI >22,A3
CALLR DO_A_STAR
DEC A6
JRNE AM3
MOVI 12,A6 ; STAR COUNT
AM4 SUBI >25,A2
CALLR DO_A_STAR
DEC A6
JRNE AM4
MOVI 9,A6 ; STAR COUNT
AM5 SUBI >22,A3
CALLR DO_A_STAR
DEC A6
JRNE AM5
MOVI boonpal,a10 ; PALETTE TO CYCLE
MOVI >01040900,A11 ; PARAMETERS FOR CYCLE DUDE
CREATE PID_AMODE,CYCLERF
CREATE PID_AMODE,TWINKLE
SLEEP >40*15
CLR A1
NOT A1
MOVI PID_AMODE,A0
CALLA KILALL ; KILL AMODE PROCS
CALLA MYOINIT ; BLOW OUT OBJECT SYSTEM
CALLA SCRCLR
; JSRP HSTD
; MOVK 1,A0
; MOVE A0,@GAMERASE,W ; GAME ERASE = ON
; SLEEP >20
CALLR GAME_ERASE_OFF
JSRP LITTLE_FADE
CALLR GAME_ERASE_ON
SLEEP 2
CALLR GAME_ERASE_OFF
JSRP NO_DRUGS ; SAY NO TO DRUGS MESSAGE
JRUC AMODE
GAME_ERASE_OFF
CLR A0
JRUC GERASE
GAME_ERASE_ON
MOVK 1,A0
GERASE MOVE A0,@GAMERASE,W
RETS
;WIL_FADE
; MOVI WILLINIT,A14
; CALLA INITINS
; SLEEP >60
; MOVE A8,A9
; MOVI >00010002,A11
; MOVI willypal,a8
; CREATE PID_AMODE,PALFADE
; SLEEP >60
; MOVE A9,A0
; CALLA DELOBJP
; MOVI willypal,a0
; CALLA BLOWPAL ; BLOW OUT PALETTE COMPLETELY
; SLEEP 1
; RETP
;WILLINIT
; .LONG willy1,willypal
; .WORD 0,DMAWNZ,>555,>55,>60,0
BALL_BANG
MOVI 1,A0
MOVE A0,@NO_VEL,W ; NO VELOCITIES !!
MOVI 40,B0
BANG_LOOP
PUSH B0
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B1
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B2
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B3
MOVI BALL_INIT,A14
CALLA INITOBJ
MOVE A8,B4
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B1(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B2(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B3(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ADDI >00010000,A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
MOVE A0,B0
NEG B0
MOVE B0,*B4(OYVEL),L ; RANDOM Y VELOCITY
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B1(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
MOVE B0,*B3(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B2(OXVEL),L
CALLA RANDOM ; GET A RANDOM # IN A0
ANDI >00070000,A0 ; KEEP IT WITHIN REASON
ADDI >00010000,A0
MOVE A0,B0
NEG B0
MOVE B0,*B4(OXVEL),L
*
* PUT EM ON THE LIST
*
MOVE B1,A0
CALLA INSOBJ
MOVE B2,A0
CALLA INSOBJ
MOVE B3,A0
CALLA INSOBJ
MOVE B4,A0
CALLA INSOBJ
PULL B0
DEC B0
JRNE BANG_LOOP
CLR A0
MOVE A0,@NO_VEL,W ; VELOCITIES !!
SLEEP >50
CLR A1
NOT A1
MOVI OID_BALL,A0
CALLA KILL_OCP
RETP
*
* HIGH SCORE TO DATE TABLE
*
HSTD MOVI HSTD_TEXT,A14
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; CALLA P RINT7_INFO
; SLEEP >40*4
RETP
HSTD_TEXT
.LONG >00600070
.WORD >FFFF
.STRING "1) BUN $ 4,000,000",0
.LONG >00800070
.WORD >FFFF
.STRING "2) JRN $ 3,500,000",0
.LONG >00A00070
.WORD >FFFF
.STRING "3) BUN $ 3,000,000",0
.LONG >00C00070
.WORD >FFFF
.STRING "4) JRN $ 2,500,000",0
.LONG >00E00070
.WORD >FFFF
.STRING "5) KIM $ 2,000,000",0
.EVEN
*
* SAY NO TO DRUGS MESSAGE
*
NO_DRUGS
MOVI >0D,A0
CALLA PRINT_DMA
MOVI >0E,A0
CALLA PRINT_DMA
; MOVI BOONDCD,A0
; CALLA GETFPAL ; GET BOONDCD PALLETTE
; JRNE NODR1
; ERMAC 24
;NODR1 MOVE A0,A1 ; A1 = DTIME INPUT = PALLETTE
; MOVI [>70,>D0],A3
; MOVI DMAWNZ,A5
; MOVI BOONDCD_vda,A14
; CALLA DTIME ; DMA BOON PICTURE
SLEEP >40*3
RETP
LITTLE_FADE
MOVI >0F,A0
MOVI >00700070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00900070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00B00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00D00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
MOVI >0F,A0
MOVI >00F00070,A3 ; A3 = [Y,X]
CALLA PRINT_DMA_XY
SLEEP >60
RETP
SET_EM_UP
CALLA INITOBJ ; A8 = NFL LOGO OBJECT
MOVE A8,A0
JAUC INSOBJ
DO_A_STAR
RETS
INC A5
CMPI 4,A5
JRLO DOST1
CLR A5 ; FROM (0-3)
DOST1 MOVE A5,A0
SLL 4,A0 ; 16 BIT OFFSET
ADDI STAR_COLORS,A0
MOVE *A0,A0,W ; GET THE COLOR FOR THIS STAR
MOVE A0,*A8(OCONST),W ; THIS IS THE STARS CONSTANT COLOR
MOVE A8,A0
JAUC INSOBJ ; PUT IN LIST
STAR_COLORS
.WORD >0101
.WORD >0202
.WORD >0303
.WORD >0404
*
* MAKE THE TROPHIES TWINKLE
*
TWINKLE
CLR A11
JSRP TWLOOP
MOVI 3,A11
JSRP TWLOOP
MOVI 6,A11
JSRP TWLOOP
JRUC TWINKLE
TWLOOP CREATE PID_AMODE,DO_TWINK
INC A11
CREATE PID_AMODE,DO_TWINK
INC A11
CREATE PID_AMODE,DO_TWINK
SLEEP >30
RETP
DO_TWINK
DIE
;TWINKINIT
; .LONG twink1,twinkpal
; .WORD 0,DMAWNZ,>555,>80,>80,3
TWINK_SPOTS
.LONG >007D007D ; LEFT TROPHY'S SHOULDER
.LONG >009000D0 ; LEFT TROPHY LEG
.LONG >0184007C ; RIGHT TROPHY SHOULDER
.LONG >01A0010D ; RIGHT TROPHY BASE
.LONG >0060010D ; LEFT TROPHY BASE
.LONG >01C000A0 ; RIGHT TROPHY HAND
.LONG >009000D0 ; LEFT TROPHY LEG
.LONG >01A0010D ; RIGHT TROPHY BASE
.LONG >01C000A0 ; RIGHT TROPHY HAND
.LONG >007D007D ; LEFT TROPHY'S SHOULDER
**************************************************************************
* *
* SHOW CREDITS *
* *
* Displays # of credits in the game *
* *
**************************************************************************
SHOW_CREDITS
MOVI COIN_MESS3,A8
CALLA LM_SETUP
CALLA GET_CSTR ; GET THE CURRENT CREDITS
JSRP PRINTF ; PRINT TO OBJECT LIST
MOVI OID_TEXT,A0
MOVI OID_AMODE,A1
CALLA CHANGE_OID ; ALL TEXT = OID_AMODE
*
* ALLOCATE PALETTES FOR EACH TEXT OBJECT CREATED
*
MOVI boonpal,A0
CALLA GETFPAL ; GET BOONPAL !!
MOVI BPAL_BLK,A3 ; A3 = BOONPAL "BLACK"
CLR A2
MOVI >0505,A3 ; A3 = CONSTANT COLOR TO USE
MOVE @OBJLST,A0,L ; TOP O LIST
JREQ SHOWC2 ; NONE, EXIT
SHOWC1 INC A2 ; COUNT IT
MOVE A3,*A0(OCONST),W ; SET COLOR O TEXT
MOVE *A0(OLINK),A0,L
JRNE SHOWC1
MOVI PALRAM,A1 ; TEXT USES 1ST PALETTE !!
MOVE *A1(32),A3,W ; A3 = 1ST PALETTE COUNT
DEC A3 ; DONT COUNT THE 1SR "GETFPAL" CALL
ADD A2,A3 ; ADD IN TEXT OBJECTS
MOVE A3,*A1(32),W
SHOWC2 RETP
COIN_MESS3
MESS_MAC RD15FONT,SPACING20,200,>C0,0D0D0000H,STRCNRMO,0
*********************************************************************
;CREDLET_INIT
; .LONG osrn1,boonpal
; .WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE
; .WORD 0,>D0,0
;
;MED_DIGITS
; .LONG FON150
; .LONG FON151
; .LONG FON152
; .LONG FON153
; .LONG FON154
; .LONG FON155
; .LONG FON156
; .LONG FON157
; .LONG FON158
; .LONG FON159
;
;
; CALLA CRED_P ; A0 = # OF CREDITS
; CLR A10 ; ASSUME NO "TENS" DIGIT
; MOVE A0,A3
; MOVE A3,A6
; CMPI 10,A3
; JRLT SHOWC2
;*
;* CREDITS > 10
;*
; MOVK 10,A0
; DIVS A0,A3 ; A3 = 10'S DIGIT
; MOVE A3,A5
; MOVI CREDLET_INIT,A14
; CALLA INITOBJ ; GET DIGIT #2 = TENS DIGIT
; MOVE A8,A10 ; TENS DIGIT
; MOVI >0101,A0
; MOVE A0,*A8(OCONST),W
; SLL 5,A3
; ADDI MED_DIGITS,A3
; MOVE *A3,A1,L
; CALLA ANI ; SHAPE THE #
; MOVI >E6,A0
; MOVE A0,*A8(OXPOS),W ; X POS = AFTER THE ":"
; MOVE A8,A0
; CALLA INSOBJ
; CALLA CRED_P ; A0 = # OF CREDITS
; MOVE A0,A6
; MOVK 10,A0
; MPYS A0,A5
; SUB A5,A6 ; A6 = ONES
;
;SHOWC2 MOVI CREDLET_INIT,A14
; CALLA INITOBJ ; GET DIGIT #1
; MOVI >0101,A0
; MOVE A0,*A8(OCONST),W
;
; SLL 5,A6
; ADDI MED_DIGITS,A6
; MOVE *A6,A1,L
; CALLA ANI ; SHAPE THE NUMBER
; MOVI >E6,A0
; MOVE A10,A10 ; TENS DIGIT ?
; JREQ SHOWC3
; MOVE *A10(OSIZEX),A2,W
; ADD A2,A0
; INC A0
;SHOWC3 MOVE A0,*A8(OXPOS),W ; PLACE ONES AFTER "TENS"
; MOVE A8,A0
; CALLA INSOBJ
;
; MOVI >0F,A0
; MOVI CREDLET_INIT,A14
; CALLA PRINT_OBJ ; CREDITS MESSAGE !!
; MOVE @OBJLST,A0,L
; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST
; MOVE A4,@OBJLST,L ; OBJLST ---> 1ST CHAR
******************* END OF LINE (QUOTE FROM TRON) ***************
.END


4047
FBFX.ASM Normal file

File diff suppressed because it is too large Load Diff

304
FBSTUFF.ASM Normal file
View File

@ -0,0 +1,304 @@
.TITLE 'FBSTUFF.ASM'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
; ROUTINES STOLEN FROM HIGH IMPACT FOOTBALL
;
; INITIATED: JAN 10,1991
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "GAME.EQU"
;
;SOUNDS
;
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF PALSET,PALRAM
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF FB_FADEOUT,FB_FADEIN
PID_FX .EQU 200
.TEXT
**************************************************************************
* *
* FADEALL *
* *
* FADE EVERYTHING USING A GIVEN FADE ENTRY *
* *
* ENTRY *
* A0 LIST OF PALETTES *
* A11 FADE MULT TABLE *
* *
* EXIT *
* NOTHING *
* *
* CALL *
* CALL *
* *
**************************************************************************
FADEALL:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
JRUC Fader
**************************************************************************
* *
* FADEIN *
* *
* FADE A LIST OF PALETTES FROM BLACK TO THEIR CURRENT COLORS *
* *
* ENTRY *
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FB_FADEIN:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
movi FadeIn,A11
jruc Fader
**************************************************************************
* *
* FADEOUT *
* *
* FADE A LIST OF PALETTES DOWN TO BLACK *
* *
* ENTRY *
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FB_FADEOUT:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
movi FadeOut,A11
Fader:
move A0,A6
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
clr A9 ;palette slot
dec A9
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
PalLp:
addi PALRSIZ,A2
inc A9
cmpi NUMPAL,A9
jrge PalLpX
move *A2(PALCNT),A1,W ;is palette allocated?
jrz PalLp
move *A2(PALID),A8,L ;Ptr to palette
;*** SKIP FADING PALS IN LIST POINTED TO BY A6
move A6,A7
jrz SkFPalX
SkPalLp:
move *A7+,A1,L
jrz SkFPalX
cmp A1,A8
jreq PalLp
jruc SkPalLp
SkFPalX:
CREATE PID_FX,FADEPROC
jruc PalLp
PalLpX:
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
rets
**************************************************************************
* *
* FADE_ONLY *
* *
* FADE ONLY A CERTAIN PALETTE *
* *
* ENTRY *
* A0 PALETTE TO BE FADED *
* A11 MULTIPLIER FOR PALETTES *
* *
* EXIT *
* NOTHING *
* *
* CALL *
* CALLA *
* *
**************************************************************************
FADE_ONLY:
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
move A0,A6
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
clr A9 ;palette slot
dec A9
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
FOPalLp:
addi PALRSIZ,A2
inc A9
cmpi NUMPAL,A9
jrge FOPalLpX
move *A2(PALCNT),A1,W ;is palette allocated?
jrz FOPalLp
move *A2(PALID),A8,L ;Ptr to palette
CMP A6,A8
JRNZ FOPalLp ; BR = NOT THE ONE FOR ME
CREATE PID_FX,FADEPROC
jruc FOPalLp
FOPalLpX:
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
rets
**************************************************************************
* *
* FADEPROC *
* *
* PROCESS TO ACTUALLY FADE A PALETTE *
* *
* ENTRY *
* A8 PTR TO PALETTE TO BE FADED *
* A9 PALETTE SLOT OF PALETTE *
* A11 FADE MULTIPLIER TABLE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
FADEPROC:
sll 24,A9 ;B8-15 DEST PAL | B0-7 START COLOR
srl 16,A9
.IF YUNIT
MOVE A9,A2
SRL 12,A2
SLL 14,A2
SLL 20,A9
SRL 20,A9
ADD A2,A9
.ENDIF
FadePLp:
;**** SET UP FADED PAL IN PROCESS DATA SPACE ****
move *A11+,A2,W ;A2 - Color Multiplier
jrn FadePrcX
move A13,A0
addi PDATA,A0 ;A0 - Dest Ram for Pal
move A8,A1 ;A1 - Src for Pal
callr FadePal
;**** GET FADED PALETTE XFERRED TO PALRAM ****
move A9,A1 ;B8-15 DEST PAL | B0-7 START COLOR
move A13,A0
addi PDATA,A0 ;SRC FOR XFER
move *A0+,A2,W ;GET # COLORS IN PALETTE
calla PALSET ;SETUP PALETTE TRANSFER
SLEEP 2
jruc FadePLp
FadePrcX:
SLEEP 1 ;give last xfer a chance to go
DIE
**************************************************************************
* *
* FADEPAL *
* *
* APPLY THE COLOR MULTIPLIER AND DO ONE ITERATION ON THE PALETTE *
* *
* ENTRY *
* A0 DESTINATION RAM FOR PALETTE *
* A1 SOURCE FOR PALETTE *
* A2 COLOR MULTIPLIER *
* *
* EXIT *
* NOTHING *
* *
* NOTE: EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN *
* DIVIDED BY 128 *
* *
**************************************************************************
FadePal:
mmtm SP,A8,A9,A10,A11
move *A1+,A14,W
move A14,*A0+,W
sll 23,A14 ;top bits of field are flags
srl 23,A14 ; only 9 bits needed for # colors
movi >7C00,A4 ;A4 - Pre Mult Mask for 5 bits of red
movi >03E0,A6 ;A6 - Pre Mult Mask for 5 bits of green
movi >001F,A8 ;A8 - Pre Mult Mask for 5 bits of blue
move A4,A9
move A6,A10
move A8,A11
sll 7,A9 ; A9 - Post Mult Max for 5 bits of red
sll 7,A10 ;A10 - Post Mult Max for 5 bits of green
sll 7,A11 ;A11 - Post Mult Max for 5 bits of blue
FadeLp:
move *A1+,A3,W ;A3 - RED
move A3,A5 ;A5 - GREEN
move A3,A7 ;A7 - BLUE
and A4,A3
and A6,A5
and A8,A7
mpyu A2,A3
mpyu A2,A5
mpyu A2,A7
cmp A9,A3
jrle RedOk
move A9,A3
RedOk:
cmp A10,A5
jrle GreenOk
move A10,A5
GreenOk:
cmp A11,A7
jrle BlueOk
move A11,A7
BlueOk:
and A9,A3
and A10,A5
; and A11,A7 ;unnecessary cause bottom bits will get >> 7
or A5,A3
or A7,A3
srl 7,A3
move A3,*A0+,W
dsjs A14,FadeLp
mmfm SP,A8,A9,A10,A11
rets
FadeIn .word 0,0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,>FFFF
FadeOut .word 120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0,>FFFF
.END


1872
FBUTIL.ASM Normal file

File diff suppressed because it is too large Load Diff

2552
FIEND.ASM Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More