├── BKGDBALC.C ├── BKGDBANK.C ├── BKGDBELL.C ├── BKGDBRIG.C ├── BKGDCAVE.C ├── BKGDCITY.C ├── BKGDESRT.C ├── BKGDGRAV.C ├── BKGDMOCK.C ├── BKGDPIT.C ├── BKGDPORT.C ├── BKGDSBST.C ├── BKGDSKEN.C ├── BKGDSOUL.C ├── BKGDTEMP.C ├── BKGDWATR.C ├── DAVID.C ├── DAVID.H ├── DIGLOAD.H ├── LCDLOAD.H ├── MAIN.C ├── MK3SND.H ├── MKAMODE.C ├── MKAMODE.H ├── MKANI.C ├── MKANI.H ├── MKANIMAL.C ├── MKANIMAL.H ├── MKBIO.C ├── MKBIO.H ├── MKBKGD.C ├── MKBKGD.H ├── MKBKMOD.C ├── MKBLOOD.C ├── MKBLOOD.H ├── MKBONUS.C ├── MKBONUS.H ├── MKBOSS.C ├── MKBOSS.H ├── MKBRIEF.C ├── MKBRIEF.H ├── MKBUG.C ├── MKBUG.H ├── MKBUYIN.C ├── MKBUYIN.H ├── MKCANNED.C ├── MKCANNED.H ├── MKCOIN.C ├── MKCOIN.H ├── MKCOMBO.C ├── MKCOMBO.H ├── MKDIAG.C ├── MKDIAG.H ├── MKDRONE.C ├── MKDRONE.H ├── MKEND.C ├── MKEND.H ├── MKFADE.C ├── MKFADE.H ├── MKFATAL.C ├── MKFATAL.H ├── MKFILE.C ├── MKFILE.H ├── MKFRIEND.C ├── MKFRIEND.H ├── MKFX.C ├── MKFX.H ├── MKGAME.H ├── MKGLOBAL.C ├── MKGUYS.C ├── MKGUYS.H ├── MKHSTD.C ├── MKHSTD.H ├── MKINIT.C ├── MKINIT.H ├── MKJOY.C ├── MKJOY.H ├── MKLADDER.C ├── MKLADDER.H ├── MKMAIN.C ├── MKMAIN.H ├── MKMAINOD.C ├── MKMAINOD.H ├── MKMARK.C ├── MKMARK.H ├── MKMODE.C ├── MKMODE.H ├── MKOBJ.C ├── MKOBJ.H ├── MKOPT.C ├── MKOPT.H ├── MKOS.C ├── MKOS.H ├── MKPAL.C ├── MKPAL.H ├── MKPROP.C ├── MKPROP.H ├── MKR1.C ├── MKR1.H ├── MKREACT.C ├── MKREACT.H ├── MKREPELL.C ├── MKREPELL.H ├── MKSCORE.C ├── MKSCORE.H ├── MKSEL.C ├── MKSEL.H ├── MKSELNEW.C ├── MKSELNEW.H ├── MKSLAM.C ├── MKSLAM.H ├── MKSND.H ├── MKSONY.C ├── MKSONY.H ├── MKSOUND.C ├── MKSOUND.H ├── MKSTAT.C ├── MKSTAT.H ├── MKTEXT.C ├── MKTEXT.H ├── MKUTIL.C ├── MKUTIL.H ├── MKVS.C ├── MKVS.H ├── MKZAP.C ├── MKZAP.H ├── MOVES.C ├── MOVES.H ├── PSXCD.C ├── PSXCD.H ├── PSXCDABS.C ├── PSXCDABS.H ├── PSXCDOLD.C ├── PSXCDOLD.H ├── PSXSND.C ├── PSXSND.H ├── PSXSPU.H ├── README.md ├── SEQLOAD.H ├── SNDLST.H ├── SONYRLE.C ├── SOUNDHW.H ├── STDARG.H ├── SYSTEM.H ├── VALLOC.C └── VALLOC.H /BKGDBALC.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdbalc.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Balcony Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void calla_tower(void); 32 | 33 | /************************************************************ 34 | * B A L C O N Y & T O W E R S T U F F * 35 | ************************************************************/ 36 | #if 0 37 | /***************** 38 | Externals 39 | *****************/ 40 | extern void *tower_anims[]; 41 | extern void *a_torch[]; 42 | extern void *BALFIRE1[]; 43 | extern void *BALFIRE2[]; 44 | extern void *BALFIRE3[]; 45 | extern void *BALFIRE4[]; 46 | extern void *BALFIRE5[]; 47 | extern void *BALFIRE6[]; 48 | /***************** 49 | *****************/ 50 | 51 | DTBL_INITA tower_table [] = 52 | { 53 | {5,0xc9,0x51,a_torch,&baklst8}, 54 | {5,0x299,0x53,a_torch,&baklst8}, 55 | {0} 56 | }; 57 | 58 | ADDRESS *tower_perm_list[]= 59 | { 60 | (ADDRESS *)BALFIRE1, 61 | (ADDRESS *)BALFIRE2, 62 | (ADDRESS *)BALFIRE3, 63 | (ADDRESS *)BALFIRE4, 64 | (ADDRESS *)BALFIRE5, 65 | (ADDRESS *)BALFIRE6, 66 | NULL 67 | }; 68 | 69 | /****************************************************************************** 70 | Function: void calla_tower(void) 71 | 72 | By: David Schwartz 73 | 74 | Date: Jan 1995 75 | 76 | Parameters: None 77 | 78 | Returns: None 79 | 80 | Description: init balcony/tower stuff 81 | ******************************************************************************/ 82 | void calla_tower(void) 83 | { 84 | OBJECT *obj; 85 | PROCESS *ptemp; 86 | 87 | alloc_vram_perm_bg_list((ADDRESS *)tower_perm_list,&tower_anims); 88 | 89 | create_dumb_animators(tower_table,&tower_anims); 90 | 91 | return; 92 | } 93 | #endif 94 | -------------------------------------------------------------------------------- /BKGDBANK.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdbank.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Bank Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | 32 | /************************************************************ 33 | * B A N K S T U F F * 34 | ************************************************************/ 35 | 36 | /******************** 37 | Externals 38 | ********************/ 39 | -------------------------------------------------------------------------------- /BKGDBRIG.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdbrig.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Bridge Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void bridge_calla(void); 32 | 33 | /************************************************************ 34 | * B R I D G E S T U F F * 35 | ************************************************************/ 36 | /******************** 37 | Externals 38 | ********************/ 39 | extern void *a_big_paper[]; 40 | extern void *a_lil_paper[]; 41 | extern void *a_leaf[]; 42 | extern void *a_paper1[]; 43 | extern void *bridge_anims[]; 44 | extern void *PAPER1[]; 45 | extern void *PAPER2[]; 46 | extern void *PAPER3[]; 47 | extern void *PAPER4[]; 48 | extern void *PAPER5[]; 49 | extern void *PAPER6[]; 50 | extern void *PAPER7[]; 51 | extern void *PAPER8[]; 52 | extern void *PAPER9[]; 53 | extern void *LGSHEET1[]; 54 | extern void *LGSHEET2[]; 55 | extern void *LGSHEET3[]; 56 | extern void *LGSHEET4[]; 57 | extern void *LGSHEET5[]; 58 | extern void *LGSHEET6[]; 59 | extern void *LGSHEET7[]; 60 | extern void *LGSHEET8[]; 61 | extern void *LGSHEET9[]; 62 | extern void *SMSHEET1[]; 63 | extern void *SMSHEET2[]; 64 | extern void *SMSHEET3[]; 65 | extern void *SMSHEET4[]; 66 | extern void *SMSHEET5[]; 67 | extern void *SMSHEET6[]; 68 | extern void *SMSHEET7[]; 69 | extern void *SMSHEET8[]; 70 | extern void *SMSHEET9[]; 71 | extern void *LEAF1[]; 72 | extern void *LEAF2[]; 73 | extern void *LEAF3[]; 74 | extern void *LEAF4[]; 75 | extern void *LEAF5[]; 76 | extern void *LEAF6[]; 77 | extern void *LEAF7[]; 78 | extern void *LEAF8[]; 79 | /******************** 80 | ********************/ 81 | 82 | DTBL_INIT paper_table [] = 83 | { 84 | {3,PAPER1,-SCX(0x0050)+8,SCY(0x00b0)+16,a_paper1,&baklst4}, 85 | {4,PAPER1,SCX(0x0050)+8,SCY(0x00b0)+16,a_paper1,&baklst4}, 86 | {3,PAPER1,SCX(0x0100)+8,SCY(0x00b4)+16,a_paper1,&baklst4}, 87 | {5,PAPER1,SCX(0x01d0)+8,SCY(0x00ad)+16,a_paper1,&baklst4}, 88 | {4,PAPER1,SCX(0x02a0)+8,SCY(0x00b0)+16,a_paper1,&baklst4}, 89 | {0} 90 | }; 91 | 92 | ADDRESS *bridge_perm_list[] = 93 | { 94 | (ADDRESS *)PAPER1, 95 | (ADDRESS *)PAPER2, 96 | (ADDRESS *)PAPER3, 97 | (ADDRESS *)PAPER4, 98 | (ADDRESS *)PAPER5, 99 | (ADDRESS *)PAPER6, 100 | (ADDRESS *)PAPER7, 101 | (ADDRESS *)PAPER8, 102 | (ADDRESS *)PAPER9, 103 | (ADDRESS *)LGSHEET1, 104 | (ADDRESS *)LGSHEET2, 105 | (ADDRESS *)LGSHEET3, 106 | (ADDRESS *)LGSHEET4, 107 | (ADDRESS *)LGSHEET5, 108 | (ADDRESS *)LGSHEET6, 109 | (ADDRESS *)LGSHEET7, 110 | (ADDRESS *)LGSHEET8, 111 | (ADDRESS *)LGSHEET9, 112 | (ADDRESS *)SMSHEET1, 113 | (ADDRESS *)SMSHEET2, 114 | (ADDRESS *)SMSHEET3, 115 | (ADDRESS *)SMSHEET4, 116 | (ADDRESS *)SMSHEET5, 117 | (ADDRESS *)SMSHEET6, 118 | (ADDRESS *)SMSHEET7, 119 | (ADDRESS *)SMSHEET8, 120 | (ADDRESS *)SMSHEET9, 121 | (ADDRESS *)LEAF1, 122 | (ADDRESS *)LEAF2, 123 | (ADDRESS *)LEAF3, 124 | (ADDRESS *)LEAF4, 125 | (ADDRESS *)LEAF5, 126 | (ADDRESS *)LEAF6, 127 | (ADDRESS *)LEAF7, 128 | (ADDRESS *)LEAF8, 129 | NULL 130 | }; 131 | 132 | /****************************************************************************** 133 | Function: void bridge_calla(void) 134 | 135 | By: David Schwartz 136 | 137 | Date: Feb 1995 138 | 139 | Parameters: None 140 | 141 | Returns: None 142 | 143 | Description: setup the bridge background 144 | ******************************************************************************/ 145 | void bridge_calla(void) 146 | { 147 | short loop=2; 148 | PROCESS *ptemp; 149 | 150 | alloc_vram_perm_bg_list((ADDRESS *)bridge_perm_list,&bridge_anims); 151 | 152 | CREATE(PID_BANI,wind_sound); 153 | 154 | do 155 | { 156 | ptemp=CREATE(PID_BANI,garbage_straight); 157 | ptemp->pa9=a_big_paper; 158 | (void *)ptemp->a10=&bridge_anims; 159 | 160 | ptemp=CREATE(PID_BANI,garbage_straight); 161 | ptemp->pa9=a_lil_paper; 162 | (void *)ptemp->a10=&bridge_anims; 163 | 164 | ptemp=CREATE(PID_BANI,garbage_straight); 165 | ptemp->pa9=a_leaf; 166 | (void *)ptemp->a10=&bridge_anims; 167 | ptemp=CREATE(PID_BANI,garbage_straight); 168 | ptemp->pa9=a_leaf; 169 | (void *)ptemp->a10=&bridge_anims; 170 | ptemp=CREATE(PID_BANI,garbage_straight); 171 | ptemp->pa9=a_leaf; 172 | (void *)ptemp->a10=&bridge_anims; 173 | 174 | ptemp=CREATE(PID_BANI,garbage_loop); 175 | ptemp->pa9=a_big_paper; 176 | (void *)ptemp->a10=&bridge_anims; 177 | 178 | ptemp=CREATE(PID_BANI,garbage_loop); 179 | ptemp->pa9=a_lil_paper; 180 | (void *)ptemp->a10=&bridge_anims; 181 | } 182 | while(--loop>0); 183 | 184 | create_dumb_animators_w(paper_table,&bridge_anims); 185 | 186 | return; 187 | } 188 | -------------------------------------------------------------------------------- /BKGDESRT.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdesrt.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Desert Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void make_cyrax_sand(void); 32 | 33 | /************************************************************ 34 | * G R A V E S T U F F * 35 | ************************************************************/ 36 | 37 | /******************** 38 | Externals 39 | ********************/ 40 | extern void *desert_anims[]; 41 | extern void *a_cyrax[]; 42 | extern void *CYRXSAND1[]; 43 | extern void *CYRXSAND2[]; 44 | extern void *CYRXSAND3[]; 45 | extern void *CYRXSAND4[]; 46 | 47 | /******************** 48 | ********************/ 49 | ADDRESS *desert_perm_list[]= 50 | { 51 | (ADDRESS *)CYRXSAND1, 52 | (ADDRESS *)CYRXSAND2, 53 | (ADDRESS *)CYRXSAND3, 54 | (ADDRESS *)CYRXSAND4, 55 | NULL 56 | }; 57 | 58 | DTBL_INIT cyrax_table [] = 59 | { 60 | {7,CYRXSAND1,-SCX(0xb0)+24,SCY(0x008a)+24,a_cyrax,&baklst5}, 61 | {0} 62 | }; 63 | 64 | /****************************************************************************** 65 | Function: void make_cyrax_sand(void) 66 | 67 | By: David Schwartz 68 | 69 | Date: Nov 1995 70 | 71 | Parameters: None 72 | 73 | Returns: None 74 | 75 | Description: setup the desert background 76 | ******************************************************************************/ 77 | void make_cyrax_sand(void) 78 | { 79 | alloc_vram_perm_bg_list((ADDRESS *)desert_perm_list,&desert_anims); 80 | 81 | create_dumb_animators_w(cyrax_table,&desert_anims); 82 | 83 | return; 84 | } 85 | 86 | -------------------------------------------------------------------------------- /BKGDGRAV.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdgrav.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Grave Yard Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void grave_calla(void); 32 | void moon_proc(void); 33 | 34 | /************************************************************ 35 | * G R A V E S T U F F * 36 | ************************************************************/ 37 | 38 | /******************** 39 | Externals 40 | ********************/ 41 | extern void *grave_anims[]; 42 | extern void *a_moon[]; 43 | extern void *MOONA1[]; 44 | extern void *MOONA2[]; 45 | extern void *MOONA3[]; 46 | extern void *MOONA4[]; 47 | extern void *MOONA5[]; 48 | extern void *MOONA6[]; 49 | extern void *MOONA7[]; 50 | extern void *MOONA8[]; 51 | extern void *MOONA9[]; 52 | extern void *MOONA10[]; 53 | extern void *MOONA11[]; 54 | extern void *MOONA12[]; 55 | extern void *MOONA13[]; 56 | extern void *MOONA14[]; 57 | extern void *MOONA15[]; 58 | extern void *MOONA16[]; 59 | extern void *MOONA17[]; 60 | extern void *MOONA18[]; 61 | extern void *MOONA19[]; 62 | extern void *MOONA20[]; 63 | extern void *MOONA21[]; 64 | extern void *MOONA22[]; 65 | extern void *MOONA23[]; 66 | extern void *MOONA24[]; 67 | extern void *MOONA25[]; 68 | extern void *MOONA26[]; 69 | extern void *MOONA27[]; 70 | extern void *MOONA28[]; 71 | extern void *BOON[]; 72 | extern void *BERAN[]; 73 | extern void *TOBIAS[]; 74 | extern void *MICHIC[]; 75 | extern void *GOSKIE[]; 76 | extern void *VOGEL[]; 77 | extern void *LYDY[]; 78 | extern void *MAY[]; 79 | extern void *MILLER[]; 80 | extern void *SCHWARTZ[]; 81 | extern void *GUIDO[]; 82 | extern void *ABBOT[]; 83 | /******************** 84 | ********************/ 85 | 86 | void *tomb_stones1[]= 87 | { 88 | BOON, 89 | BERAN, 90 | TOBIAS, 91 | GOSKIE 92 | }; 93 | 94 | void *tomb_stones2[]= 95 | { 96 | GOSKIE, 97 | BOON, 98 | VOGEL, 99 | MICHIC 100 | }; 101 | 102 | void *tomb_stones3[]= 103 | { 104 | BERAN, 105 | MILLER, 106 | TOBIAS, 107 | MICHIC 108 | }; 109 | 110 | 111 | void *tomb_stones4[]= 112 | { 113 | GUIDO, 114 | MAY, 115 | SCHWARTZ, 116 | MILLER 117 | }; 118 | 119 | void *tomb_stones5[]= 120 | { 121 | GUIDO, 122 | BOON, 123 | SCHWARTZ, 124 | TOBIAS 125 | }; 126 | 127 | void *tomb_stones6[]= 128 | { 129 | MILLER, 130 | MAY, 131 | VOGEL, 132 | BERAN 133 | }; 134 | 135 | ADDRESS *tomb_table[]= 136 | { 137 | (ADDRESS *)tomb_stones1,(ADDRESS *)tomb_stones2,(ADDRESS *)tomb_stones3,(ADDRESS *)tomb_stones4,(ADDRESS *)tomb_stones5,(ADDRESS *)tomb_stones6 138 | }; 139 | 140 | short tomb_spots[]= 141 | { 142 | -SCX(0x100), 143 | SCX(0x00), 144 | SCX(0x100), 145 | SCX(0x200), 146 | SCX(0x300) 147 | }; 148 | 149 | ADDRESS *grave_perm_list[]= 150 | { 151 | (ADDRESS *)MOONA2, 152 | (ADDRESS *)MOONA4, 153 | (ADDRESS *)MOONA6, 154 | (ADDRESS *)MOONA8, 155 | (ADDRESS *)MOONA10, 156 | (ADDRESS *)MOONA12, 157 | (ADDRESS *)MOONA14, 158 | (ADDRESS *)MOONA16, 159 | (ADDRESS *)MOONA18, 160 | (ADDRESS *)MOONA20, 161 | (ADDRESS *)MOONA22, 162 | (ADDRESS *)MOONA24, 163 | (ADDRESS *)MOONA26, 164 | (ADDRESS *)MOONA28, 165 | (ADDRESS *)BOON, 166 | (ADDRESS *)BERAN, 167 | (ADDRESS *)TOBIAS, 168 | (ADDRESS *)MICHIC, 169 | (ADDRESS *)GOSKIE, 170 | (ADDRESS *)VOGEL, 171 | (ADDRESS *)LYDY, 172 | (ADDRESS *)MAY, 173 | (ADDRESS *)MILLER, 174 | (ADDRESS *)SCHWARTZ, 175 | (ADDRESS *)GUIDO, 176 | (ADDRESS *)ABBOT, 177 | NULL 178 | }; 179 | 180 | /****************************************************************************** 181 | Function: void grave_calla(void) 182 | 183 | By: David Schwartz 184 | 185 | Date: Feb 1995 186 | 187 | Parameters: None 188 | 189 | Returns: None 190 | 191 | Description: setup the graveyard background 192 | ******************************************************************************/ 193 | void grave_calla(void) 194 | { 195 | OBJECT *obj; 196 | PROCESS *ptemp; 197 | ADDRESS *tombtbl; 198 | 199 | alloc_vram_perm_bg_list((ADDRESS *)grave_perm_list,&grave_anims); 200 | 201 | /* set moon process */ 202 | gso_dmawnz_ns(obj,(ADDRESS)MOONA28,grave_anims,0); 203 | set_xy_coordinates(obj,0x60,0x20-6); 204 | alloc_cache(MOONA28,&grave_anims,obj); 205 | 206 | ptemp=CREATE(PID_BANI,moon_proc); 207 | ptemp->pa8=obj; 208 | insert_object(obj,&baklst8); 209 | 210 | current_proc->a11=4; 211 | tombtbl=tomb_table[randu(6)-1]; // add our names 212 | //tombtbl=tomb_table[0]; 213 | 214 | /* tomb3 */ 215 | do 216 | { 217 | gso_dmawnz(obj,(ADDRESS)(tombtbl[current_proc->a11-1]),grave_anims,0); 218 | obj->oxpos.u.intpos=worldtlx1.u.intpos+tomb_spots[current_proc->a11-1]; 219 | obj->oypos.u.intpos=ground_y-SCY(0x58)-1; 220 | alloc_cache(tombtbl[current_proc->a11-1],&grave_anims,obj); 221 | 222 | insert_object(obj,&baklst9); 223 | } 224 | while(--current_proc->a11>0); 225 | 226 | return; 227 | } 228 | 229 | /****************************************************************************** 230 | Function: void moon_proc(void) 231 | 232 | By: David Schwartz 233 | 234 | Date: Feb 1995 235 | 236 | Parameters: None 237 | 238 | Returns: None 239 | 240 | Description: moon procedure 241 | ******************************************************************************/ 242 | void moon_proc(void) 243 | { 244 | while (1) 245 | { 246 | process_sleep((WORD)randu_minimum(0x40,0x40)); 247 | 248 | current_proc->pa9=a_moon; 249 | framew(8); 250 | } 251 | } 252 | 253 | -------------------------------------------------------------------------------- /BKGDMOCK.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdmock.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Pit Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | -------------------------------------------------------------------------------- /BKGDPORT.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdpotr.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Portal Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | 32 | /************************************************************ 33 | * P O R T A L S T U F F * 34 | ************************************************************/ 35 | 36 | /******************** 37 | Externals 38 | ********************/ 39 | extern void *portal_anims[]; 40 | extern void *a_portal_zap[]; 41 | extern void *PORTAL01[]; 42 | extern void *PORTAL02[]; 43 | extern void *PORTAL03[]; 44 | extern void *PORTAL04[]; 45 | extern void *PORTAL05[]; 46 | extern void *PORTAL06[]; 47 | extern void *PORTAL07[]; 48 | extern void *PORTAL08[]; 49 | extern void *PORTAL09[]; 50 | extern void *PORTAL11[]; 51 | extern void *PORTAL12[]; 52 | extern void *PORTAL13[]; 53 | extern void *PORTAL14[]; 54 | extern void *PORTAL17[]; 55 | 56 | /******************** 57 | ********************/ 58 | void portal_zap(void); 59 | void mk3_calla(void); 60 | 61 | ADDRESS *portal_perm_list[]= 62 | { 63 | (ADDRESS*)PORTAL01, 64 | (ADDRESS*)PORTAL02, 65 | (ADDRESS*)PORTAL03, 66 | (ADDRESS*)PORTAL04, 67 | (ADDRESS*)PORTAL05, 68 | (ADDRESS*)PORTAL06, 69 | (ADDRESS*)PORTAL07, 70 | (ADDRESS*)PORTAL08, 71 | (ADDRESS*)PORTAL09, 72 | (ADDRESS*)PORTAL11, 73 | (ADDRESS*)PORTAL12, 74 | (ADDRESS*)PORTAL13, 75 | (ADDRESS*)PORTAL14, 76 | (ADDRESS*)PORTAL17, 77 | NULL 78 | }; 79 | 80 | /****************************************************************************** 81 | Function: void mk3_calla(void) 82 | 83 | By: David Schwartz 84 | 85 | Date: Dec 1994 86 | 87 | Parameters: None 88 | 89 | Returns: None 90 | 91 | Description: setup the citys background 92 | ******************************************************************************/ 93 | void mk3_calla(void) 94 | { 95 | alloc_vram_perm_bg_list((ADDRESS *)portal_perm_list,&portal_anims); 96 | CREATE(PID_BANI,portal_zap); 97 | return; 98 | } 99 | 100 | void portal_zap(void) 101 | { 102 | OBJECT *obj; 103 | 104 | gso_dmawnz(obj,(ADDRESS)PORTAL01,portal_anims,0); 105 | set_xy_coordinates(obj,SCX(0xb0)+0x6,SCY(0x5c)-4); 106 | alloc_cache(PORTAL01,&portal_anims,obj); 107 | insert_object(obj,&baklst1); 108 | 109 | /* pzap3 */ 110 | do 111 | { 112 | current_proc->pa9=a_portal_zap; 113 | framew(3); 114 | (long)current_proc->a11=obj->oypos.pos; 115 | obj->oypos.u.intpos=SCY(0x4000); 116 | process_sleep(0x30); 117 | obj->oypos.pos=(long)current_proc->a11; 118 | } 119 | while(1); 120 | } 121 | -------------------------------------------------------------------------------- /BKGDSKEN.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdsken.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III SHAO KAHN ENDING Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void shao_storm_proc(void); 32 | 33 | /************************************************************ 34 | * S K E N D S T U F F * 35 | ************************************************************/ 36 | 37 | /******************** 38 | Externals 39 | ********************/ 40 | extern void *a_sknado[]; 41 | extern void *SKNADO1[]; 42 | extern void *SKNADO2[]; 43 | extern void *SKNADO3[]; 44 | extern void *SKNADO4[]; 45 | extern void *SKNADO5[]; 46 | extern void *SKNADO6[]; 47 | extern void *SKNADO7[]; 48 | extern void *SKNADO8[]; 49 | extern void *sk_anims[]; 50 | extern void *SSTORM01[]; 51 | extern void *SSTORM03[]; 52 | extern void *SSTORM05[]; 53 | extern void *SSTORM07[]; 54 | extern void *SSTORM09[]; 55 | extern void *SSTORM11[]; 56 | extern void *a_storm_shao[]; 57 | 58 | /******************** 59 | ********************/ 60 | 61 | ADDRESS *skend_perm_list[]= 62 | { 63 | (ADDRESS*)SKNADO1, 64 | (ADDRESS*)SKNADO2, 65 | (ADDRESS*)SKNADO3, 66 | (ADDRESS*)SKNADO4, 67 | (ADDRESS*)SKNADO5, 68 | (ADDRESS*)SKNADO6, 69 | (ADDRESS*)SKNADO7, 70 | (ADDRESS*)SKNADO8, 71 | (ADDRESS*)SSTORM01, 72 | (ADDRESS*)SSTORM03, 73 | (ADDRESS*)SSTORM05, 74 | (ADDRESS*)SSTORM07, 75 | (ADDRESS*)SSTORM09, 76 | (ADDRESS*)SSTORM11, 77 | NULL 78 | }; 79 | 80 | /****************************************************************************** 81 | Function: void skdie_calla(void) 82 | 83 | By: David Schwartz 84 | 85 | Date: Dec 1994 86 | 87 | Parameters: None 88 | 89 | Returns: None 90 | 91 | Description: setup the ending tornado 92 | ******************************************************************************/ 93 | DTBL_INITA skdie_ani_table[]= 94 | { 95 | {5,SCX(0xd3)+0x11-6,SCY(0x2f)+0x12,a_sknado,&baklst5}, 96 | {0} 97 | }; 98 | void skdie_calla(void) 99 | { 100 | CREATE(PID_BANI,shao_storm_proc); 101 | alloc_vram_perm_bg_list((ADDRESS *)skend_perm_list,&sk_anims); 102 | create_dumb_animators(skdie_ani_table,sk_anims); 103 | return; 104 | } 105 | 106 | /****************************************************************************** 107 | Function: void shao_storm_proc(void) 108 | 109 | By: David Schwartz 110 | 111 | Date: Dec 1994 112 | 113 | Parameters: None 114 | 115 | Returns: None 116 | 117 | Description: storm process 118 | ******************************************************************************/ 119 | void shao_storm_proc(void) 120 | { 121 | OBJECT *obj; 122 | 123 | gso_dmawnz(obj,(ADDRESS)SSTORM01,sk_anims,0); 124 | set_xy_coordinates(obj,SCX(0xa8)+34-0x38,SCY(0x30)+20-0x34); 125 | alloc_cache(SSTORM01,&sk_anims,obj); 126 | insert_object(obj,&baklst6); 127 | 128 | current_proc->pa9=a_storm_shao; 129 | framew(7); 130 | } 131 | 132 | -------------------------------------------------------------------------------- /BKGDTEMP.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdtemp.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Temple Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | 31 | /* local prototypes */ 32 | void temple_calla(void); 33 | void candle_flame(void); 34 | 35 | /************************************************************ 36 | * T E M P L E S T U F F * 37 | ************************************************************/ 38 | /***************** 39 | Externals 40 | *****************/ 41 | extern void *temple_anims[]; 42 | extern void *a_tflame[]; 43 | extern void *a_candle_flame[]; 44 | extern void *SKTORCH1[]; 45 | extern void *SKTORCH2[]; 46 | extern void *SKTORCH3[]; 47 | extern void *SKTORCH4[]; 48 | extern void *SKTORCH5[]; 49 | extern void *SKTORCH6[]; 50 | extern void *wik1[]; 51 | extern void *wik2[]; 52 | extern void *wik3[]; 53 | extern void *wik4[]; 54 | extern void *KANDLE1[]; 55 | /***************** 56 | *****************/ 57 | 58 | DTBL_INITA tony_candle_table[] = 59 | { 60 | {4,0xd5+2,0x2c-3,a_tflame,&baklst7}, 61 | {4,0x14d+2,0x2c-3,a_tflame,&baklst7}, 62 | {4|0x8000,0x26d+2,0x2c-3,a_tflame,&baklst7}, 63 | {4|0x8000,0x2e4+2,0x2c-3,a_tflame,&baklst7}, 64 | {0} 65 | }; 66 | 67 | ADDRESS *temple_perm_list[] = 68 | { 69 | (ADDRESS *)SKTORCH1, 70 | (ADDRESS *)SKTORCH2, 71 | (ADDRESS *)SKTORCH3, 72 | (ADDRESS *)SKTORCH4, 73 | (ADDRESS *)SKTORCH5, 74 | (ADDRESS *)SKTORCH6, 75 | (ADDRESS *)wik1, 76 | (ADDRESS *)wik2, 77 | (ADDRESS *)wik3, 78 | (ADDRESS *)wik4, 79 | (ADDRESS *)KANDLE1, 80 | NULL 81 | }; 82 | 83 | /****************************************************************************** 84 | Function: void temple_calla(void) 85 | 86 | By: David Schwartz 87 | 88 | Date: Feb 1995 89 | 90 | Parameters: None 91 | 92 | Returns: None 93 | 94 | Description: setup the bridge background 95 | ******************************************************************************/ 96 | void temple_calla(void) 97 | { 98 | OBJECT *obj; 99 | 100 | alloc_vram_perm_bg_list((ADDRESS *)temple_perm_list,&temple_anims); 101 | 102 | current_proc->a10=10; 103 | (long)current_proc->a11=-1; 104 | 105 | do 106 | { 107 | /* candd */ 108 | gso_dmawnz(obj,(ADDRESS)KANDLE1,temple_anims,0); 109 | obj->oxpos.u.intpos=(short)current_proc->a11+8+2; 110 | obj->oypos.u.intpos=0xb2+6; //+36; 111 | alloc_cache(KANDLE1,temple_anims,obj); 112 | insert_object(obj,&baklst6); 113 | 114 | /* flame */ 115 | (OBJECT *)current_proc->pa9=obj; 116 | gso_dmawnz(obj,(ADDRESS)wik1,temple_anims,0); 117 | alloc_cache(wik1,temple_anims,current_proc->pa8); 118 | insert_object(current_proc->pa8,&baklst6); 119 | 120 | obj->oxpos.u.intpos=((OBJECT *)current_proc->pa9)->oxpos.u.intpos+SCX(7); 121 | obj->oypos.u.intpos=((OBJECT *)current_proc->pa9)->oypos.u.intpos-SCY(12); 122 | 123 | CREATE(PID_BANI,candle_flame); 124 | (long)current_proc->a11+=SCX(0x96); 125 | } 126 | while(--current_proc->a10>0); 127 | 128 | create_dumb_animators(tony_candle_table,&temple_anims); 129 | 130 | return; 131 | } 132 | 133 | /****************************************************************************** 134 | Function: void candle_flame(void) 135 | 136 | By: David Schwartz 137 | 138 | Date: Feb 1995 139 | 140 | Parameters: None 141 | 142 | Returns: None 143 | 144 | Description: animate the candles on the temple bkgd 145 | ******************************************************************************/ 146 | void candle_flame(void) 147 | { 148 | process_sleep(randu(10)); 149 | 150 | current_proc->pa9=a_candle_flame; 151 | framew(3+randu(2)); 152 | 153 | wait_forever(); 154 | } 155 | -------------------------------------------------------------------------------- /BKGDWATR.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: bkgdesrt.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Desert Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkfx.h" 24 | #include "mkani.h" 25 | #include "mkinit.h" 26 | #include "mkpal.h" 27 | #include "mksound.h" 28 | #include "valloc.h" 29 | 30 | /* Prototypes */ 31 | void make_water_proc(void); 32 | void water_proc(void); 33 | void water_ani(OIMGTBL *frame,OBJECT *obj); 34 | 35 | /************************************************************ 36 | * WATER S T U F F * 37 | ************************************************************/ 38 | 39 | /******************** 40 | Externals 41 | ********************/ 42 | extern void *water_anims[]; 43 | extern void *a_water1[]; 44 | extern void *WATERA01[]; 45 | extern void *WATERC01[]; 46 | extern void *WATERD01[]; 47 | extern void *WATERB01[]; 48 | extern void *WATERA02[]; 49 | extern void *WATERC02[]; 50 | extern void *WATERD02[]; 51 | extern void *WATERB02[]; 52 | extern void *WATERA03[]; 53 | extern void *WATERC03[]; 54 | extern void *WATERD03[]; 55 | extern void *WATERB03[]; 56 | extern void *WATERA04[]; 57 | extern void *WATERC04[]; 58 | extern void *WATERD04[]; 59 | extern void *WATERB04[]; 60 | extern void *WATERA05[]; 61 | extern void *WATERC05[]; 62 | extern void *WATERD05[]; 63 | extern void *WATERB05[]; 64 | extern void *WATERA06[]; 65 | extern void *WATERC06[]; 66 | extern void *WATERD06[]; 67 | extern void *WATERB06[]; 68 | extern void *WATERA07[]; 69 | extern void *WATERC07[]; 70 | extern void *WATERD07[]; 71 | extern void *WATERB07[]; 72 | extern void *WATERA08[]; 73 | extern void *WATERC08[]; 74 | extern void *WATERD08[]; 75 | extern void *WATERB08[]; 76 | 77 | /******************** 78 | ********************/ 79 | ADDRESS *water_perm_list[]= 80 | { 81 | (ADDRESS *)WATERA01, 82 | (ADDRESS *)WATERC01, 83 | (ADDRESS *)WATERD01, 84 | (ADDRESS *)WATERB01, 85 | (ADDRESS *)WATERA02, 86 | (ADDRESS *)WATERC02, 87 | (ADDRESS *)WATERD02, 88 | (ADDRESS *)WATERB02, 89 | (ADDRESS *)WATERA03, 90 | (ADDRESS *)WATERC03, 91 | (ADDRESS *)WATERD03, 92 | (ADDRESS *)WATERB03, 93 | (ADDRESS *)WATERA04, 94 | (ADDRESS *)WATERC04, 95 | (ADDRESS *)WATERD04, 96 | (ADDRESS *)WATERB04, 97 | (ADDRESS *)WATERA05, 98 | (ADDRESS *)WATERC05, 99 | (ADDRESS *)WATERD05, 100 | (ADDRESS *)WATERB05, 101 | (ADDRESS *)WATERA06, 102 | (ADDRESS *)WATERC06, 103 | (ADDRESS *)WATERD06, 104 | (ADDRESS *)WATERB06, 105 | (ADDRESS *)WATERA07, 106 | (ADDRESS *)WATERC07, 107 | (ADDRESS *)WATERD07, 108 | (ADDRESS *)WATERB07, 109 | (ADDRESS *)WATERA08, 110 | (ADDRESS *)WATERC08, 111 | (ADDRESS *)WATERD08, 112 | (ADDRESS *)WATERB08, 113 | NULL 114 | }; 115 | 116 | /****************************************************************************** 117 | Function: void make_water_proc(void) 118 | 119 | By: David Schwartz 120 | 121 | Date: Nov 1995 122 | 123 | Parameters: None 124 | 125 | Returns: None 126 | 127 | Description: setup the water background 128 | ******************************************************************************/ 129 | void make_water_proc(void) 130 | { 131 | alloc_vram_perm_bg_list((ADDRESS *)water_perm_list,&water_anims); 132 | CREATE(PID_BANI,water_proc); 133 | } 134 | 135 | void water_proc(void) 136 | { 137 | OBJECT *ta8; 138 | OBJECT *ta9; 139 | ADDRESS *ta11; 140 | 141 | do 142 | { 143 | ta11=(ADDRESS *)a_water1; 144 | 145 | /* water2 */ 146 | do 147 | { 148 | ta8=(OBJECT *)&baklst3; 149 | ta9=(OBJECT *)&baklst4; 150 | 151 | /* water3 */ 152 | do 153 | { 154 | ta8=ta8->olink; 155 | if (ta8==NULL) 156 | break; 157 | 158 | (ADDRESS)ta8->oheap=(ADDRESS)water_anims; 159 | 160 | if (ta8->ozval==2) 161 | water_ani((OIMGTBL *)*(ta11+1),ta8); 162 | else 163 | { 164 | if (ta8->ozval==1) 165 | water_ani((OIMGTBL *)*(ta11+0),ta8); 166 | } 167 | } 168 | while(1); 169 | 170 | /* water6 */ 171 | do 172 | { 173 | ta9=ta9->olink; 174 | if (ta9==NULL) 175 | break; 176 | 177 | (ADDRESS)ta9->oheap=(ADDRESS)water_anims; 178 | 179 | if (ta9->ozval==0) 180 | water_ani((OIMGTBL *)*(ta11+3),ta9); 181 | else 182 | { 183 | if (ta9->ozval==1) 184 | water_ani((OIMGTBL *)*(ta11+2),ta9); 185 | } 186 | } 187 | while(1); 188 | 189 | /* water8 */ 190 | process_sleep(8); 191 | ta11+=4; 192 | if (*ta11==NULL) 193 | break; 194 | } 195 | while(1); 196 | } 197 | while(1); 198 | } 199 | 200 | void water_ani(OIMGTBL *frame,OBJECT *obj) 201 | { 202 | short x,y; 203 | 204 | x=obj->oxpos.u.intpos; 205 | y=obj->oypos.u.intpos; 206 | current_proc->pa8=obj; 207 | animate(SINGLE_ANI,frame,obj->oflags); 208 | obj->oxpos.u.intpos=x; 209 | obj->oypos.u.intpos=y; 210 | return; 211 | } 212 | -------------------------------------------------------------------------------- /DIGLOAD.H: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------*/ 2 | /* 3 | The Williams Entertainment Sound System 4 | by Scott Patterson 5 | */ 6 | /*------------------------------------------------------------------*/ 7 | 8 | 9 | #ifndef _DIGLOAD_H 10 | #define _DIGLOAD_H 11 | 12 | enum Dig_Load_Error { 13 | 14 | DIGLOAD_NO_ERROR, 15 | DIGLOAD_FOPEN, 16 | DIGLOAD_FREAD, 17 | DIGLOAD_FSEEK 18 | }; 19 | 20 | enum OpenDigHandleFlag {NoOpenDigHandle,YesOpenDigHandle}; 21 | 22 | /* 23 | routine: wess_dig_loader_init() 24 | 25 | - enables digital loading calls 26 | - input_pm_stat is returned by wess_get_master_status() 27 | - digfile is the .dig filename 28 | - flag specifies if the file handle will be opened during init or 29 | each time file is accessed 30 | */ 31 | 32 | extern int wess_dig_loader_init(void *input_pm_stat, 33 | char *digfile, 34 | enum OpenDigHandleFlag flag); 35 | 36 | /* 37 | routine: wess_dig_loader_exit() 38 | 39 | - closes file handle if not already closed 40 | - disables digital loading calls 41 | */ 42 | 43 | extern void wess_dig_loader_exit(void); 44 | 45 | /* 46 | routine: wess_dig_loader_install_error_handler() 47 | 48 | - for installing an error callback to notify file access errors 49 | - module is your own ID returned as err_module parameter 50 | - err_enum is the returned Dig_Load_Error enum parameter 51 | */ 52 | 53 | extern void wess_dig_loader_install_error_handler(int (*error_func)(int, int), 54 | int module); 55 | 56 | /* 57 | general loading guidelines: 58 | 59 | - sizeof functions return the amount of bytes needed for data 60 | not already loaded, therefore, when sizeof returns 0, this 61 | means the data referred to is already loaded 62 | 63 | - load functions only load data that is not already loaded 64 | and return the amount of bytes loaded, memory is not allocated 65 | internally, you must use the sizeof functions and allocate 66 | memory yourself 67 | 68 | - free functions mark data as not loaded, memory is not freed 69 | internally, you must free memory yourself 70 | */ 71 | 72 | /* 73 | individual sample loading 74 | */ 75 | 76 | extern int wess_dig_sizeof(int patchnum); 77 | 78 | extern int wess_dig_load(int patchnum,void *memptr); 79 | 80 | extern int wess_dig_free(int patchnum); 81 | 82 | /* 83 | digital sample list loading 84 | 85 | - pass in a list of digital sample numbers to be loaded 86 | - end this list with the END_DIG_LIST define 87 | */ 88 | 89 | #define END_DIG_LIST -1 90 | 91 | extern int wess_dig_list_sizeof(short *patchlist); 92 | 93 | extern int wess_dig_list_load(short *patchlist,void *memptr); 94 | 95 | extern int wess_dig_list_free(short *patchlist); 96 | 97 | /* 98 | digital sample range loading 99 | 100 | - specify a number of consecutive digital samples to be loaded 101 | */ 102 | 103 | extern int wess_dig_range_sizeof(int patchfirst,int numpatches); 104 | 105 | extern int wess_dig_range_load(int patchfirst,int numpatches,void *memptr); 106 | 107 | extern int wess_dig_range_free(int patchfirst,int numpatches); 108 | 109 | /* 110 | in_seq loading funcions: 111 | 112 | - these funcions parse loaded sequence data to obtain digital 113 | sample lists 114 | - note that a patch in a sequence that is not a digital sample 115 | will not be obtained by this function 116 | */ 117 | 118 | /* 119 | individual sequences with digital sample references 120 | */ 121 | 122 | extern int wess_dig_in_seq_sizeof(int seqnum); 123 | 124 | extern int wess_dig_in_seq_load(int seqnum,void *memptr); 125 | 126 | extern int wess_dig_in_seq_free(int seqnum); 127 | 128 | /* 129 | sequence lists with digital sample references 130 | 131 | - pass in a list of sequences with digital samples to be loaded 132 | - end this list with the END_DIG_IN_SEQ_LIST define 133 | */ 134 | 135 | #define END_DIG_IN_SEQ_LIST -1 136 | 137 | extern int wess_dig_in_seq_list_sizeof(short *seqlist); 138 | 139 | extern int wess_dig_in_seq_list_load(short *seqlist,void *memptr); 140 | 141 | extern int wess_dig_in_seq_list_free(short *seqlist); 142 | 143 | /* 144 | digital sample range loading 145 | 146 | - specify a number of consecutive sequences with digital samples 147 | to be loaded 148 | */ 149 | 150 | extern int wess_dig_in_seq_range_sizeof(int seqfirst,int numseqs); 151 | 152 | extern int wess_dig_in_seq_range_load(int seqfirst,int numseqs,void *memptr); 153 | 154 | extern int wess_dig_in_seq_range_free(int seqfirst,int numseqs); 155 | 156 | #endif 157 | 158 | -------------------------------------------------------------------------------- /LCDLOAD.H: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------*/ 2 | /* 3 | Williams Entertainment Sound System 4 | by Scott Patterson 5 | 6 | Application Programming Interface Routines: 7 | 8 | - digital (in linear .LCD file) load functions 9 | */ 10 | /*------------------------------------------------------------------*/ 11 | 12 | #define SAMPLE_RECORD_SIZE 100 13 | 14 | typedef struct SampleBlock { 15 | unsigned short numsamps; 16 | unsigned short sampindx[SAMPLE_RECORD_SIZE]; 17 | unsigned short samppos[SAMPLE_RECORD_SIZE]; 18 | }SampleBlock; 19 | 20 | extern int wess_dig_lcd_loader_init(void *input_pm_stat); 21 | 22 | extern void wess_dig_set_sample_position(int samplenum, char *samplepos); 23 | 24 | extern int wess_dig_lcd_load(char *lcdfilename,void *memptr,SampleBlock *sampblk, int override); 25 | 26 | 27 | -------------------------------------------------------------------------------- /MAIN.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArchivesML/UMK3-3DO-src/d34a2e96e4bdf4624190ef2d813dff2afb2a42c2/MAIN.C -------------------------------------------------------------------------------- /MKAMODE.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkamode.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Attract Mode Header File 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_amode_h__ 14 | #define __mk_amode_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* 21 | * RAM 22 | */ 23 | 24 | /* 25 | * PROTOTYPES 26 | */ 27 | void amode(void); 28 | void quote(void); 29 | void amode_init(void); 30 | 31 | void midway_presents(void); 32 | void title_page(void); 33 | void amode_demo_fight(void); 34 | void amode_init(void); 35 | void amode_shutup(void); 36 | void aama_message(void); 37 | void amode_init_no_score(void); 38 | void amode_oinit(void); 39 | void amode_init_system(void); 40 | void gover_amode_entry(void); 41 | void amode_fade_retp(void); 42 | void smooth_black_retp(void); 43 | void amode_display_reset(void); 44 | 45 | /* 46 | * MACROS 47 | */ 48 | #endif /* __mk_amode_h__ */ 49 | -------------------------------------------------------------------------------- /MKANI.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkani.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Animation routine header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkani_h__ 14 | #define __mk_mkani_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* single animate indexs */ 21 | #define SINGLE_ANI0 0 22 | #define SINGLE_ANI 1 23 | 24 | /* which animation table to use */ 25 | #define ANIM_TABLE1 0 /* animation table 1, basic moves */ 26 | #define ANIM_TABLE2 1 /* animation table 2, special moves */ 27 | 28 | /* animation commands */ 29 | #define ANI_END 0 // animation script "end" command 30 | #define ANI_JUMP 1 // animation script "jump" command 31 | #define ANI_FLIP 2 // animation script "flip" command 32 | #define ANI_ADJUSTX 3 // animation script "adjust x" command 33 | #define ANI_ADJUSTXY 4 // animation script "adjust xy" command 34 | #define ANI_NOSLEEP 5 // animation script "skip sleep" command 35 | #define ANI_CALLA 6 // animation script call routine (next long) 36 | #define ANI_SOUND 7 // animation script make a sound call 37 | #define ANI_OCHAR_JUMP 8 // animation script ochar conditional jump 38 | #define ANI_FLIP_V 9 // animation script vertical flip 39 | #define ANI_OFFSET_XY 10 // animation script offset xy 40 | #define ANI_SLADD 11 // animation script add slave 41 | #define ANI_SLANI 12 // animation script slave animate 42 | #define ANI_SWPAL 13 // animation script switch to next img pal 43 | #define ANI_SLANI_SLEEP 14 // animation script slave animate sleep 44 | #define ANI_OCHAR_SOUND 15 45 | #define ANI_LASTCOM 15 // last animation command 46 | 47 | #define NEVER_ANI 0x0fff // never animate 48 | 49 | /* 50 | * RAM 51 | */ 52 | 53 | /* 54 | * PROTOTYPES 55 | */ 56 | void find_ani2_part2(short); 57 | void find_ani_part2(short); 58 | inline void find_part2(void); 59 | void find_part_a14(WORD); 60 | void find_last_frame(void); 61 | void animate2(OBJECT *,ADDRESS *); 62 | inline void do_first_a9_frame(short); 63 | WORD do_next_a9_frame(OBJECT *); 64 | void animate_a9(WORD,WORD); 65 | void animate2_a9(WORD,WORD); 66 | void pose_a9(WORD,WORD); 67 | void pose_him_a9(WORD,WORD); 68 | void pose2_a9(WORD,WORD); 69 | void pose_him_a0(WORD); 70 | void double_mframew(WORD); 71 | void mframew(WORD); 72 | void mframew_him(WORD); 73 | void ground_multi(OBJECT *obj); 74 | void multi_adjust_xy(OBJECT *,short,short); 75 | void match_ani_points(OBJECT *,OBJECT *); 76 | void backwards_ani(WORD,WORD); 77 | void backwards_ani2(WORD,WORD); 78 | void bani2(OBJECT *,WORD); 79 | void animate_a0_frames(WORD,WORD); 80 | void init_anirate(WORD); 81 | void next_anirate(void); 82 | WORD frame_a9(OBJECT *); 83 | void flip_multi(OBJECT *); 84 | void flip_multi_v(OBJECT *); 85 | WORD double_next_a9(void); 86 | int highest_mpart(OBJECT *); 87 | int lowest_mpart(OBJECT *); 88 | int leftmost_mpart(OBJECT *); 89 | int rightmost_mpart(OBJECT *); 90 | void flip_single(OBJECT *); 91 | void ganiof(OIMGTBL *,WORD); 92 | void animate(WORD,OIMGTBL *,WORD); 93 | void framew(WORD); 94 | 95 | void stsw_sound(void); 96 | void st_tumble_sound(void); 97 | void morph_swpal(void); 98 | void motaro_leg_stance(void); 99 | void camp_fire_sound(void); 100 | 101 | /* 102 | * MACROS 103 | */ 104 | 105 | /* set animation and execute find_part_a14 */ 106 | #define find_ani_part_a14(_animnum,_acnt) \ 107 | (get_char_ani(ANIM_TABLE1,(_animnum))),(find_part_a14((_acnt))) 108 | 109 | #define find_ani2_part_a14(_animnum,_acnt) \ 110 | (get_char_ani(ANIM_TABLE2,(_animnum))),(find_part_a14((_acnt))) 111 | 112 | /* set animation and execute find_last_frame */ 113 | #define find_ani_last_frame(_animnum) \ 114 | (get_char_ani(ANIM_TABLE1,(_animnum))),(find_last_frame()) 115 | 116 | /* act_mframew */ 117 | #define act_mframew(_act,_sleep) \ 118 | current_proc->pdata.p_action=_act, \ 119 | mframew(_sleep) 120 | 121 | /* do_his_next_a9_frame */ 122 | #define do_his_next_a9_frame(_obj) do_next_a9_frame(_obj) 123 | 124 | /* adjust_xy_a5 */ 125 | #define adjust_xy_a5(_a10,_x,_y) multi_adjust_xy((_a10),(_x),(_y)) 126 | 127 | #define ground_player(_obj) (_obj)->oypos.u.intpos=current_proc->pdata.p_ganiy 128 | 129 | /* lineup a0 onto a1 */ 130 | #define lineup_a0_onto_a1(_la0,_la1) match_ani_points((_la1),(_la0)) 131 | 132 | #endif /* __mk_mkani_h__ */ 133 | 134 | -------------------------------------------------------------------------------- /MKANIMAL.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkanimal.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III animalship header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkanimal_h__ 14 | #define __mk_mkanimal_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void do_animality(void); 29 | void animality_start_pause(void); 30 | 31 | void cute_animality_start(void); 32 | 33 | void null_animal(void); 34 | void mileena_skunk(void); 35 | void odor_proc(void); 36 | void stink_cloud(void); 37 | 38 | void scorpion_pengo(void); 39 | void egg_proc(void); 40 | void pengo_animate(void); 41 | void r_egg(void); 42 | 43 | void reptile_monkey(void); 44 | void set_vel_flip(long pa0); 45 | void r_scared_of_monkey(void); 46 | 47 | void jade_kitty(void); 48 | void kitty_spin(void); 49 | 50 | void kitana_bunny(void); 51 | void r_rabbit(void); 52 | void crunch_sounds(void); 53 | 54 | void cyrax_shark(void); 55 | void eaten_by_shark(void); 56 | void eaten_by_snake(void); 57 | 58 | void lao_cheetah(void); 59 | 60 | void liu_kang_dragon(void); 61 | 62 | void shang_tsung_snake(void); 63 | 64 | void sheeva_scorpion(void); 65 | void stung_by_scorpion(void); 66 | 67 | void kabal_skeleton(void); 68 | void dino_bucked(void); 69 | 70 | void sektor_bat(void); 71 | WORD q_bat_4(void); 72 | WORD q_bat_3(void); 73 | WORD q_bat_2(void); 74 | WORD q_bat_1(void); 75 | void r_bat_bite(void); 76 | #define r_kitana_decap r_bat_bite 77 | void head_pop_off(long pa0,long pa1); 78 | void cutup_body_init(void); 79 | void r_ermac_upcut(void); 80 | void animate_till_a11_stop(FUNCW pa11); 81 | void animate_till_a11(FUNCW pa11); 82 | 83 | void smoke_bull_shit(void); 84 | void hit_by_bull(void); 85 | 86 | void sindel_wasp(void); 87 | void stung_a_bunch(void); 88 | 89 | void swat_dino(void); 90 | void bit_in_half(void); 91 | 92 | void sz_polar(void); 93 | 94 | void kano_spider(void); 95 | void spider_shake(void); 96 | void spider_shake_jsrp(void); 97 | 98 | void sonya_eagle(void); 99 | 100 | void jax_lion(void); 101 | void lion_mauled(void); 102 | 103 | void indian_wolf(void); 104 | 105 | void next_anirate_a10(WORD pa10); 106 | PROCESS *create_fx_for_him(WORD pa0); 107 | 108 | void unmorph_and_exit(void); 109 | void animal_morph(WORD pa10); 110 | void animality_tune(void); 111 | void animality_complete(void); 112 | 113 | void face_him_at_me(void); 114 | void center_around_him(void); 115 | 116 | void kill_and_stop_scrolling(void); 117 | void ground_a8(void); 118 | 119 | /* 120 | * MACROS 121 | */ 122 | #define kill_repell dallprc(PID_REPELL) 123 | 124 | /* 125 | ANIMAL NOTES 126 | ALL NEED FLOOR_EXPLODE IN PLACE FOR FX_INVISO_POOF 127 | ALL USE tsound(0x8c) 128 | 129 | 130 | 131 | MILEENA: (DONE) 132 | a_skunk -> ANIM_FT1_ANIMAL 133 | 134 | SCORPION: (DONE) 135 | a_egg -> ANIM_FT1_ANIMAL 136 | a_pengo -> ANIM_FT2_ANIMAL 137 | animation file setup like swat bomb fatality for blood and guts 138 | 139 | REPTILE 140 | a_monkey -> ANIM_FT1_ANIMAL (DONE) 141 | 142 | JADE 143 | a_kitty -> ANIM_FT1_ANIMAL 144 | uses hair spun routine will need to emulate 145 | tsound(0x92) 146 | 147 | KITANA (DONE) 148 | a_bunny -> ANIM_FT1_ANIMAL 149 | tsound(0x24) 150 | tsound(0x25) 151 | tsound(0x92) 152 | 153 | CYRAX 154 | tsound(0x92) 155 | 156 | LAO 157 | tsound(0x95) 158 | 159 | LIU KANG 160 | tsound(0x92) 161 | 162 | SWAT 163 | tsound(0x92) 164 | 165 | SZ POLAR 166 | INDIAN 167 | tsound(0x95) 168 | */ 169 | 170 | #endif /* __mk_mkanimal_h__ */ 171 | 172 | -------------------------------------------------------------------------------- /MKBIO.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbio.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Bios Setup 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkani.h" 24 | #include "mkbio.h" 25 | #include "mkfile.h" 26 | #include "mktext.h" 27 | #include "mkvs.h" 28 | #include "mksound.h" 29 | 30 | /* local externs */ 31 | 32 | /****************************************************************************** 33 | Function: void ultimate_bio(WORD p_a0) 34 | 35 | By: David Schwartz 36 | 37 | Date: Mar 1995 38 | 39 | Parameters: p_a0 - bio to show 40 | 41 | Returns: None 42 | 43 | Description: lets see a history of our fighter 44 | ******************************************************************************/ 45 | extern char txt_kitana_bio[]; 46 | extern char txt_jade_bio[]; 47 | extern char txt_scorpion_bio[]; 48 | extern char txt_reptile_bio[]; 49 | char *bio_titles[]= 50 | { 51 | txt_kitana_bio, 52 | txt_kitana_bio, 53 | txt_kitana_bio, 54 | txt_kitana_bio, 55 | txt_kitana_bio, 56 | txt_kitana_bio, 57 | txt_kitana_bio, 58 | txt_kitana_bio, 59 | txt_kitana_bio, 60 | txt_kitana_bio, 61 | txt_kitana_bio, 62 | txt_kitana_bio, 63 | txt_kitana_bio, 64 | txt_kitana_bio, 65 | txt_kitana_bio, 66 | txt_kitana_bio, 67 | txt_jade_bio, 68 | txt_kitana_bio, 69 | txt_scorpion_bio, 70 | txt_reptile_bio, 71 | txt_kitana_bio, 72 | txt_kitana_bio, 73 | txt_kitana_bio, 74 | txt_kitana_bio, 75 | }; 76 | 77 | extern FNTSETUP pf_bio[]; 78 | 79 | void ultimate_bio(WORD p_a0) 80 | { 81 | 82 | character_texture_load(p_a0,CHAR_VS,p1_heap,SYNC_LOAD); 83 | current_proc->a0=p_a0; 84 | slide_in_left(p1_heap); 85 | 86 | process_sleep(4); 87 | 88 | lm_setup(pf_bio); 89 | freeze_2_pages(); 90 | background_clear(); 91 | f_auto_erase=0; 92 | text_draw=1; 93 | mk_printf(bio_titles[p_a0]); 94 | text_draw=0; 95 | 96 | process_sleep(1); 97 | noflip=1; 98 | 99 | process_sleep(0x10); 100 | //-DHS- send_code_a3(0x25); 101 | process_sleep(0x40*10); 102 | //-DHS- send_code_a3(0x27); 103 | process_sleep(0x40*2); 104 | 105 | noflip=0; 106 | f_auto_erase=1; 107 | 108 | murder_myoinit_score(); 109 | clr_scrn(); 110 | process_sleep(10); 111 | return; 112 | } 113 | 114 | void slide_in_left(void *p_a0) 115 | { 116 | WORD t_a0=current_proc->a0; 117 | 118 | DISPLAY_ON; 119 | murder_myoinit_score(); // display hell background 120 | do_background(BKGD_FIRE_MOD); 121 | 122 | build_huge_left(p_a0); // slide in dude 123 | process_sleep(0x1a); 124 | 125 | f_novel=1; // stop 126 | triple_sound(t_a0+0x28); // say the name 127 | 128 | return; 129 | } 130 | 131 | /****************************************************************************** 132 | Function: void mk3_gradient(WORD pa0) 133 | 134 | By: David Schwartz 135 | 136 | Date: May 1995 137 | 138 | Parameters: None 139 | 140 | Returns: None 141 | 142 | Description: display fighter gradients 143 | ******************************************************************************/ 144 | extern void *gradient_txt[]; 145 | void mk3_gradient(WORD pa0) 146 | { 147 | load_bkgd=BKGD_MK3_RGRAD+pa0; // load correct gradient 148 | init_background_module(table_o_mods[load_bkgd]); 149 | vram_texture_load(bkgd_base_x,BACK_TEXTURE_BASE_Y,(ADDRESS*)gradient_txt); // place textures in memory 150 | multi_plane(); 151 | return; 152 | } 153 | -------------------------------------------------------------------------------- /MKBIO.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbio.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III bio case header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_bio_h__ 14 | #define __mk_bio_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define RED_GRAD 0 20 | #define GREEN_GRAD 1 21 | #define BLUE_GRAD 2 22 | 23 | /* 24 | * RAM 25 | */ 26 | 27 | /* 28 | * PROTOTYPES 29 | */ 30 | void ultimate_bio(WORD p_a0); 31 | void slide_in_left(void *p_a0); 32 | void mk3_gradient(WORD pa0); 33 | 34 | /* 35 | * MACROS 36 | */ 37 | 38 | #endif /* __mk_bio_h__ */ 39 | -------------------------------------------------------------------------------- /MKBKMOD.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbkmod.s 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Background Module Composition Tables 9 | ******************************************************************************/ 10 | 11 | 12 | /* 13 | * Format of Module Table 14 | 15 | * WORD autoerase color 16 | * WORD ground y position 17 | * WORD initial world y coord 18 | * WORD initial world x coord 19 | * WORD scroll left limit 20 | * WORD scroll right limit 21 | * PTR ptr to a function that will initiate various processes for the background module 22 | * PTR ptr to a table of longs used to specify scroll rates 23 | * PTR ptr to a table of two longs per record. [object list for module, worldtlx variable to use] 24 | * PTR ptr to first background mod variable to fill 25 | * 26 | * FOLLOWING DATA REPEATED DEPENDING ON BACKGROUND: 27 | * PTR command to skip background level 28 | * 29 | * PTR ptr to background module (OMODULE) data 30 | * 31 | * PTR command to center x coord of background modules 32 | * 33 | * PTR,PTR list of background modules and world x variables used to center 34 | */ 35 | 36 | 37 | /****************************************************************************** 38 | * 39 | * MODULE: ARENA (MK II) 40 | * 41 | ******************************************************************************/ 42 | -------------------------------------------------------------------------------- /MKBLOOD.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkblood.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III blood Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkblood_h__ 14 | #define __mk_mkblood_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define BLOOD_ROUNDHOUSE 0x00 20 | #define BLOOD_UPPERCUT 0x01 21 | #define BLOOD_FACE2 0x02 22 | #define BLOOD_FACE_PUNCH 0x03 23 | #define BLOOD_COMBO 0x04 24 | #define BLOOD_HAT 0x05 25 | #define BLOOD_SPIDER 0x06 26 | #define BLOOD_LION 0x07 27 | #define BLOOD_DINO_BLOOD 0x08 28 | #define BLOOD_SAW_BLOOD 0x09 29 | #define BLOOD_PIT 0x0a 30 | #define BLOOD_BOOMER 0x0b 31 | #define BLOOD_SPEAR 0x0c 32 | 33 | /* 34 | * RAM 35 | */ 36 | 37 | /* 38 | * PROTOTYPES 39 | */ 40 | void create_blood_proc(WORD); 41 | 42 | void boomerang_blood(void); 43 | void boomb1(void); 44 | void boomerang_drip(void); 45 | void spear_blood(void); 46 | void spearb1(void); 47 | void spear_drip(void); 48 | 49 | void saw_blood(void); 50 | void sawb3(void); 51 | void saw_right(void); 52 | 53 | void dino_blood(void); 54 | void dblood3(void); 55 | void dino_right(void); 56 | 57 | void lion_blood(void); 58 | void lion_right(void); 59 | 60 | void spider_blood(void); 61 | void spider_sounds(void); 62 | 63 | void hat_blood(void); 64 | void hatb1(void); 65 | void hatb2(void); 66 | void hatb_drip(void); 67 | void drip_entry(void); 68 | 69 | void pit_spike_blood(void); 70 | 71 | void upcutted_blood(void); 72 | void upcut_right(void); 73 | void upcb3(void); 74 | 75 | void lineup_with_a11_offset(short pa0x,short pa0y); 76 | 77 | void roundhouse_blood(void); 78 | void rhouse_right(void); 79 | void rhb3(void); 80 | 81 | void combo_blood(void); 82 | 83 | void face_blood_2(void); 84 | void face_blood(void); 85 | 86 | void face_punch_blood(void); 87 | 88 | void spawn_drip_a10(WORD pa10); 89 | void spawnd3(void); 90 | 91 | void tobias_drip_neg(void); 92 | void tobias_drip(void); 93 | void tdrip2(void); 94 | void tdrip_getobj(void); 95 | 96 | void blood_fall(void); 97 | void gbld3(void *pa5); 98 | 99 | void drip_fall(void); 100 | void drip_fall_2(void); 101 | 102 | void a11_blood_lineup(short ta0,short ta1); 103 | void blood_fall_splat_12_die(void); 104 | 105 | 106 | /* 107 | * MACROS 108 | */ 109 | #define blood_death(_la8) delobjp(_la8),process_suicide() 110 | 111 | #define spawn_drip_neg \ 112 | current_proc->a7=(ADDRESS)tobias_drip_neg,spawnd3() 113 | 114 | #define spawn_drip \ 115 | current_proc->a7=(ADDRESS)tobias_drip,spawnd3() 116 | 117 | #define get_tg_blood gbld3(STAB1) 118 | #define get_jt_blood gbld3(BIGBLD1) 119 | 120 | #endif /* __mk_mkblood_h__ */ 121 | 122 | -------------------------------------------------------------------------------- /MKBONUS.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbonus.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Dec 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III bonus Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkbonus_h__ 14 | #define __mk_mkbonus_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void bonus_count(void); 29 | void kill_lingerings(void); 30 | inline char *get_winner_text(void); 31 | void wait_for_bonusv(WORD sector); 32 | WORD get_winner_ochar(void); 33 | 34 | /* 35 | * MACROS 36 | */ 37 | 38 | #endif /* __mk_mkbonus_h__ */ 39 | 40 | -------------------------------------------------------------------------------- /MKBOSS.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkboss.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III boss Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkboss_h__ 14 | #define __mk_mkboss_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* shao kahn animations */ 21 | #define ANIM_SK_DIE 0x6 22 | #define ANIM_SK_LAUGH 0xb 23 | #define ANIM_SK_PUNCH 0xe 24 | #define ANIM_SK_KICK 0x11 25 | #define ANIM_SK_AIR_CHARGE 0x14 26 | #define ANIM_SK_PROJECT 0x17 27 | #define ANIM_SK_TAUNT 0x18 28 | #define ANIM_SK_CHARGE 0x19 29 | #define ANIM_SK_HAMMER 0x1a 30 | #define ANIM_SK_HIT_HI 0x1c 31 | #define ANIM_SK_HIT_LO 0x1d 32 | #define ANIM_SK_ZAP 0x24 33 | #define ANIM_SK_DEATHA1 0x26 34 | #define ANIM_SK_DEATHB1 0x27 35 | #define ANIM_SK_DEATHC1 0x28 36 | #define ANIM_SK_DEATHD1 0x29 37 | #define ANIM_SK_DEATHE1 0x2a 38 | #define ANIM_SK_DEATHF1 0x2b 39 | #define ANIM_SK_DEATHG1 0x2c 40 | 41 | /* motaro animations */ 42 | #define ANIM_MOT_GRAB 0x04 43 | #define ANIM_MOT_MIST 0x05 44 | #define ANIM_MOT_ZAP 0x06 45 | #define ANIM_MOT_PUNCH 0x0e 46 | #define ANIM_MOT_KICK 0x11 47 | #define ANIM_MOT_HOP 0x1a 48 | #define ANIM_MOT_HIT 0x1c 49 | 50 | /* distancees */ 51 | #define D_VFAR SCX(0x100) 52 | #define D_FAR SCX(0xe0) 53 | #define D_MED SCX(0x90) 54 | #define D_CLOSE SCX(0x60) 55 | 56 | typedef struct boss_ainfo 57 | { 58 | WORD b_ani; // animation 59 | WORD b_stk; // strike 60 | WORD b_speed; // speed 61 | } BOSS_AINFO; 62 | 63 | /* 64 | * RAM 65 | */ 66 | 67 | /* 68 | * PROTOTYPES 69 | */ 70 | extern JUMPTBL motaro_branches[]; 71 | #define boss_branches motaro_branches 72 | 73 | extern JUMPTBL *sk_catagory_table[]; 74 | extern JUMPTBL sk_branches[]; 75 | 76 | void boss_stalk(void); 77 | void boss1(void); 78 | void motaro_far_med(void); 79 | void motaro_far_hard(void); 80 | void motaro_far_easy(void); 81 | 82 | void boss_close(void); 83 | void boss_wait_land(void); 84 | void boss_close_attack(void); 85 | #define boss_finish_him boss_close_attack 86 | 87 | void motaro_zap(void); 88 | void motaro_tele(void); 89 | 90 | void sk_stalk(void); 91 | void sk_close(void); 92 | void sk_far(void); 93 | void sk_medium(void); 94 | void sk_laugh(void); 95 | void sk_stupid_stance(void); 96 | void motaro_stupid_stance(void); 97 | void ss1(void); 98 | void sk_zap(void); 99 | void sk_hammer(void); 100 | void sk_kick(void); 101 | void sk_punch(void); 102 | void sk_charge(void); 103 | void kchg8(void); 104 | void sk_air_charge(void); 105 | void achg8(void); 106 | void sk_stupid(void); 107 | void sk_taunt(void); 108 | 109 | void motaro_sweep(void); 110 | void boss_counter_angle(void); 111 | void boss_ease_back(void); 112 | 113 | void sk_stance_pause(void); 114 | 115 | void motaro_hop(void); 116 | void mhop7(long pa0,long pa1,short pa9); 117 | 118 | void motaro_hip_jump(void); 119 | void motaro_hip_jsrp(void); 120 | 121 | void motaro_kick(void); 122 | 123 | void motaro_grab_punch(void); 124 | void motaro_grab_punch_now(void); 125 | void motaro_punch(void); 126 | void boss_close_miss(void); 127 | #define boss_post_hit boss_close_miss 128 | void grab_ani(short pa0,short pa1); 129 | 130 | void skc_propell(void); 131 | void skc_lk_zap_lo(void); 132 | void skc_zap(void); 133 | void sk_block_zap(void); 134 | void skc_stationary(void); 135 | void skc_swat_gun(void); 136 | void skc_sg_pounce_sd(void); 137 | void skc_dizzy(void); 138 | WORD qb_is_he_dizzy(void); 139 | WORD q_boss_stupid(void); 140 | WORD sk_counter_joke(void); 141 | WORD sk_randper(void); 142 | WORD sk_counter_randper(void); 143 | WORD q_is_this_a_joke(void); 144 | WORD q_am_i_losing(void); 145 | WORD q_am_i_way_ahead(void); 146 | WORD q_am_i_stronger(void); 147 | 148 | void mc_fk_sd(void); 149 | void mc_dizzy(void); 150 | void mc_sg_pounce_sd(void); 151 | void cb_robo_tele_sd(void); 152 | #define cb_mil_tele_sd cb_robo_tele_sd 153 | #define cb_zoom_sd cb_robo_tele_sd 154 | WORD q_heading_down(void); 155 | void mc_flipkp(void); 156 | void mc_angle_jump(void); 157 | void mc_sg_pounce(void); 158 | void mc_propell_ls(void); 159 | void mc_hover(void); 160 | void mc_stationary(void); 161 | WORD motaro_randper(void); 162 | void b_block(void); 163 | 164 | void motaro_flip_kicked(void); 165 | void motaro_hit_flight(void); 166 | void motaro_upcutted(void); 167 | void motaro_hit3(void); 168 | #define motaro_hit2 motaro_hit3 169 | 170 | void motaro_hit1(void); 171 | #define motaro_hit0 motaro_hit1 172 | void motaro_comboed(void); 173 | void motaro_hard_comboed(void); 174 | void motaro_stumble(void); 175 | void motaro_collapse(void); 176 | WORD q_ok_motaro_sweep(void); 177 | 178 | void sk_collapse(void); 179 | void sk_uppcutted(void); 180 | void sk_hard_comboed(void); 181 | void sk_stumble(void); 182 | void sk_hit1(void); 183 | void sk_hit3(void); 184 | void sk_knocked_down(void); 185 | #define sk_slided sk_knocked_down 186 | void motaro_slided(void); 187 | void sk_comboed(void); 188 | void sk_airborn_check(void); 189 | 190 | WORD q_is_he_car(void); 191 | 192 | 193 | 194 | 195 | 196 | extern JUMPTBL *motaro_catagory_table[]; 197 | 198 | /* 199 | * MACROS 200 | */ 201 | #define motaro_easy_randper() randper(350) 202 | 203 | #define b_wait_forever wait_forever 204 | 205 | #define b_reaction_exit d_reaction_exit 206 | 207 | #define b_return_to_beware return_to_beware 208 | 209 | #define b_return_to_beware_4get \ 210 | { \ 211 | current_proc->pdata.p_otheract=0; \ 212 | b_return_to_beware; \ 213 | } 214 | 215 | #define b_get_x_dist get_x_dist 216 | 217 | #define b_check_winner_status check_winner_status 218 | 219 | #define b_next_anirate d_next_anirate 220 | 221 | #define b_beware d_beware 222 | 223 | #define b_retp return 224 | 225 | #define b_ochar_sound ochar_sound 226 | 227 | #define get_mhe_word ladderorder_a1() 228 | #define get_mhe_long ladderorder_a1() 229 | 230 | #define skrp(_pa0) return(randper(_pa0)) 231 | #define bs_losing() skrp(75) 232 | 233 | #endif /* __mk_mkboss_h__ */ 234 | 235 | -------------------------------------------------------------------------------- /MKBRIEF.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbrief.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Briefcase Setup 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkani.h" 24 | #include "mkbrief.h" 25 | 26 | BCC brief_case_codes[]= 27 | { 28 | {0x100100,bc_throwing_disabled}, 29 | {0x222222,bc_blocking_disabled}, 30 | {0x888000,bc_p1_handicap}, 31 | {0x000888,bc_p2_handicap}, 32 | {0x333333,bc_dark_fighting}, 33 | {0x444444,bc_switcheroo}, 34 | {0x987666,bc_jackbot}, 35 | {0,NULL} 36 | }; 37 | 38 | /****************************************************************************** 39 | Function: void bc_p1_handicap(void) 40 | 41 | By: David Schwartz 42 | 43 | Date: Mar 1995 44 | 45 | Parameters: None 46 | 47 | Returns: None 48 | 49 | Description: setup p1 for handicap 50 | ******************************************************************************/ 51 | void bc_p1_handicap(void) 52 | { 53 | stuff_round_123(3); 54 | return; 55 | } 56 | 57 | /****************************************************************************** 58 | Function: void bc_p2_handicap(void) 59 | 60 | By: David Schwartz 61 | 62 | Date: Mar 1995 63 | 64 | Parameters: None 65 | 66 | Returns: None 67 | 68 | Description: setup p2 for handicap 69 | ******************************************************************************/ 70 | void bc_p2_handicap(void) 71 | { 72 | stuff_round_123(4); 73 | return; 74 | } 75 | 76 | /****************************************************************************** 77 | Function: void bc_throwing_disabled(void) 78 | 79 | By: David Schwartz 80 | 81 | Date: Mar 1995 82 | 83 | Parameters: None 84 | 85 | Returns: None 86 | 87 | Description: no throwing allowed 88 | ******************************************************************************/ 89 | void bc_throwing_disabled(void) 90 | { 91 | stuff_round_123(1); 92 | return; 93 | } 94 | 95 | /****************************************************************************** 96 | Function: void bc_blocking_disabled(void) 97 | 98 | By: David Schwartz 99 | 100 | Date: Mar 1995 101 | 102 | Parameters: None 103 | 104 | Returns: None 105 | 106 | Description: no blocking allowed 107 | ******************************************************************************/ 108 | void bc_blocking_disabled(void) 109 | { 110 | stuff_round_123(2); 111 | return; 112 | } 113 | 114 | void bc_jackbot(void) 115 | { 116 | stuff_round_123(7); 117 | return; 118 | } 119 | 120 | void bc_switcheroo(void) 121 | { 122 | stuff_round_123(6); 123 | return; 124 | } 125 | 126 | void bc_dark_fighting(void) 127 | { 128 | stuff_round_123(5); 129 | return; 130 | } 131 | 132 | /****************************************************************************** 133 | Function: void stuff_round_123(WORD pa0) 134 | 135 | By: David Schwartz 136 | 137 | Date: Mar 1995 138 | 139 | Parameters: pa0 - setup code 140 | 141 | Returns: None 142 | 143 | Description: setup for speical codes 144 | ******************************************************************************/ 145 | void stuff_round_123(WORD pa0) 146 | { 147 | round_1_jsrp=pa0; 148 | round_23_jsrp=pa0; 149 | return; 150 | } 151 | -------------------------------------------------------------------------------- /MKBRIEF.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbrief.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Brief case header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_brief_h__ 14 | #define __mk_brief_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | typedef struct bcc 21 | { 22 | LONG b_code; 23 | JUMPTBL b_func; 24 | } BCC; 25 | 26 | /* 27 | * RAM 28 | */ 29 | 30 | /* 31 | * PROTOTYPES 32 | */ 33 | void bc_p1_handicap(void); 34 | void bc_p2_handicap(void); 35 | void bc_throwing_disabled(void); 36 | void bc_blocking_disabled(void); 37 | void bc_jackbot(void); 38 | void bc_switcheroo(void); 39 | void bc_dark_fighting(void); 40 | void stuff_round_123(WORD pa0); 41 | 42 | extern BCC brief_case_codes[]; 43 | 44 | /* 45 | * MACROS 46 | */ 47 | 48 | #endif /* __mk_brief_h__ */ 49 | -------------------------------------------------------------------------------- /MKBUG.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkvs.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III vs Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkinit.h" 23 | #include "mkutil.h" 24 | #include "mkani.h" 25 | 26 | 27 | /****************************************************************************** 28 | Function: void debug_grid(void) 29 | 30 | By: David Schwartz 31 | 32 | Date: Dec 1994 33 | 34 | Parameters: None 35 | 36 | Returns: None 37 | 38 | Description: display debug grid on screen 39 | ******************************************************************************/ 40 | void debug_grid(void) 41 | { 42 | #if DEBUG_GRID 43 | int test; 44 | 45 | /* green horiz lines */ 46 | for (test=0;test<11;test++) 47 | { 48 | SetLineF2(&cdb->lines[test]); 49 | setRGB0(&cdb->lines[test],0,128,0); 50 | setXY2(&cdb->lines[test],0,test*43/2+16,320,test*43/2+16); 51 | cdb->primcnt++; 52 | AddPrim(cdb->ot_ptr,&cdb->lines[test]); 53 | } 54 | 55 | /* blue vert lines */ 56 | for (test=11;test<21;test++) 57 | { 58 | SetLineF2(&cdb->lines[test]); 59 | setRGB0(&cdb->lines[test],0,0,128); 60 | setXY2(&cdb->lines[test],(test-11)*32,0,(test-11)*32,240); 61 | cdb->primcnt++; 62 | AddPrim(cdb->ot_ptr,&cdb->lines[test]); 63 | } 64 | #endif /* DEBUG_GRID */ 65 | 66 | return; 67 | } 68 | 69 | /****************************************************************************** 70 | Function: void profiler(void) 71 | 72 | By: David Schwartz 73 | 74 | Date: Dec 1994 75 | 76 | Parameters: None 77 | 78 | Returns: None 79 | 80 | Description: display profile of program 81 | ******************************************************************************/ 82 | void profiler(void) 83 | { 84 | #if PROFILE 85 | if (f_profile==1) 86 | { 87 | setRGB0(cdb->box_ptr,0,128,0); // base line (1 vblank) 88 | setXYWH(cdb->box_ptr,12,32,12+240/2,6); 89 | cdb->primcnt++; 90 | AddPrim(cdb->ot_ptr,cdb->box_ptr); 91 | cdb->box_ptr++; 92 | 93 | setRGB0(cdb->box_ptr,128,128,0); // base line (2 vblank) 94 | setXYWH(cdb->box_ptr,12+240/2,32,12+240/2,6); 95 | cdb->primcnt++; 96 | AddPrim(cdb->ot_ptr,cdb->box_ptr); 97 | cdb->box_ptr++; 98 | 99 | setRGB0(cdb->box_ptr,0,0,128); // current line CPU 100 | setXYWH(cdb->box_ptr,12,24,12+(prof_end-prof_start)/2,8); 101 | cdb->primcnt++; 102 | AddPrim(cdb->ot_ptr,cdb->box_ptr); 103 | cdb->box_ptr++; 104 | 105 | setRGB0(cdb->box_ptr,80,45,14); // current line drawing 106 | setXYWH(cdb->box_ptr,12+(prof_end-prof_start)/2,24,12+(prof_draw_end-prof_draw_start)/2,8); 107 | cdb->primcnt++; 108 | AddPrim(cdb->ot_ptr,cdb->box_ptr); 109 | cdb->box_ptr++; 110 | 111 | 112 | if ((prof_draw_end-prof_start)>prof_max) 113 | prof_max=prof_draw_end-prof_start; 114 | 115 | setRGB0(cdb->box_ptr,128,0,0); // max line 116 | setXYWH(cdb->box_ptr,12,38,12+prof_max/2,8); 117 | cdb->primcnt++; 118 | AddPrim(cdb->ot_ptr,cdb->box_ptr); 119 | cdb->box_ptr++; 120 | 121 | } 122 | #endif 123 | return; 124 | } 125 | 126 | /****************************************************************************** 127 | Function: void draw_collision_box(XYTYPE *tl,XYTYPE *lr,WORD index) 128 | 129 | By: David Schwartz 130 | 131 | Date: Dec 1994 132 | 133 | Parameters: tl - top left of box 134 | lr - lower right of box 135 | index - 0=attacker 1=victim 136 | 137 | Returns: None 138 | 139 | Description: draw a collision box 140 | ******************************************************************************/ 141 | void draw_collision_box(XYTYPE *tl,XYTYPE *lr,WORD index) 142 | { 143 | #if COLLISION_BOX 144 | OBJECT *obj; 145 | 146 | if (f_colbox) 147 | { 148 | if (index==0) 149 | kilobj2(OID_CBOX,0xffff); 150 | 151 | obj=get_object(); 152 | obj->oid=OID_CBOX; 153 | obj->oypos.u.intpos=tl->u.ypos; 154 | obj->osize.u.ypos=abs(tl->u.ypos-lr->u.ypos); 155 | 156 | obj->oxpos.u.intpos=tl->u.xpos; 157 | obj->osize.u.xpos=abs(tl->u.xpos-lr->u.xpos); 158 | 159 | obj->oflags|=M_BOX_POLY; 160 | 161 | if (index==0) 162 | { 163 | obj->header.t_xoffset=0; 164 | obj->header.t_yoffset=0; 165 | obj->header.t_width=128; 166 | } 167 | else 168 | { 169 | obj->header.t_xoffset=128; 170 | obj->header.t_yoffset=0; 171 | obj->header.t_width=0; 172 | } 173 | 174 | insert_object(obj,&objlst2); // put on list #2, in front of fighters 175 | } 176 | #endif 177 | return; 178 | } 179 |  -------------------------------------------------------------------------------- /MKBUG.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbug.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Debugging 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkbug_h__ 14 | #define __mk_mkbug_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void debug_grid(void); 29 | void profiler(void); 30 | void draw_collision_box(XYTYPE *,XYTYPE *,WORD); 31 | 32 | /* 33 | * MACROS 34 | */ 35 | 36 | #endif /* __mk_mkbug_h__ */ 37 | 38 | -------------------------------------------------------------------------------- /MKBUYIN.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkbuyin.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III buyin module 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkbuyin_h__ 14 | #define __mk_mkbuyin_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* adjust menu index */ 21 | #define ADJ_DOWN 0x00 // adjust menu down routine 22 | #define ADJ_UP 0x01 // adjust menu up routine 23 | 24 | #define SLIDE_VEL 3 25 | #define SLIDE_TIME 0x40 26 | 27 | /* 28 | * RAM 29 | */ 30 | 31 | /* 32 | * PROTOTYPES 33 | */ 34 | void do_buyin(void); 35 | void amenu2(WORD,OBJECT **); 36 | void menu_monitor(void); 37 | void move_menu_text_down(void); 38 | void eliminate_buyins(void); 39 | inline void elim2(WORD *,WORD *); 40 | char *get_buyin_msg(FNTSETUP *,WORD,WORD); 41 | char *get_ctc_msg(void); 42 | void countdown_objects(void); 43 | void shape_buyin_num(WORD num,OBJECT *obj_num); 44 | void buyin_pick(short *,short *); 45 | 46 | /* 47 | * MACROS 48 | */ 49 | #define adjust_menu_down(_olst) amenu2(ADJ_DOWN,(_olst)) 50 | #define adjust_menu_up(_olst) amenu2(ADJ_UP,(_olst)) 51 | 52 | #endif /* __mk_mkbuyin_h__ */ 53 | 54 | -------------------------------------------------------------------------------- /MKCANNED.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkcanned.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Nov 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III canned routines header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkcanned_h__ 14 | #define __mk_mkcanned_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void new_endurance_guy(void); 29 | 30 | WORD is_loser_on_ground(void); 31 | void tot_replacement_proc(void); 32 | 33 | void finish_him(void); 34 | void dizzy_dude(void); 35 | void plwins(WORD); 36 | void psel_victory_animation(void); 37 | void victory_animation(void); 38 | void collapse_on_ground(void); 39 | void mframew_2x(WORD,WORD); 40 | void robo_dizzy_call(); 41 | void endurance_trans(void); 42 | void ending_victory_animation(void); 43 | void wings1(void); 44 | void wings2(void); 45 | void wng1(long pa11); 46 | 47 | /* 48 | * MACROS 49 | */ 50 | #define player_1_wins plwins(PID_P1) 51 | #define player_2_wins plwins(PID_P2) 52 | 53 | 54 | #endif /* __mk_mkcanned_h__ */ 55 | 56 | -------------------------------------------------------------------------------- /MKCOIN.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkcoin.c 3 | 4 | Date: Nov 1995 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Coin Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif /* SONY_PSX */ 17 | 18 | #include "mkbkgd.h" 19 | #include "mkos.h" 20 | #include "mkgame.h" 21 | #include "mkobj.h" 22 | #include "mkutil.h" 23 | #include "mkani.h" 24 | #include "mkutil.h" 25 | #include "mkinit.h" 26 | #include "mkmain.h" 27 | #include "valloc.h" 28 | 29 | extern void *fl_coin_cursor[]; 30 | extern char txt_mkcoin1[]; 31 | extern char txt_mkcoin2a[]; 32 | extern char txt_mkcoin2b[]; 33 | extern char txt_mkcoin3a[]; 34 | extern char txt_mkcoin3b[]; 35 | 36 | WORD RED_p[]= //-DHS- CONVERT TO SONY FORMAT 37 | { 38 | 16 ,0 39 | 0x001f,0x0000,0x4000,0x4400,0x4800,0x5000,0x5400,0x5800 40 | 0x5c00,0x6000,0x6400,0x6800,0x7000,0x7400,0x7800,0x7c00 41 | }; 42 | 43 | //****************************************************************************** 44 | //****************************************************************************** 45 | void mode_select(void) 46 | { 47 | gstate=GS_MODE_SELECT; 48 | 49 | murder_myoinit_score(); 50 | do_a11_background(BKGD_MK3_COIN); 51 | p15_coin(&baklst2,txt_mkcoin1,SCX(0x45),SCY(0x38)); 52 | 53 | pds_coin(&baklst3,txt_mkcoin2b,SCX(0xc7),SCY(0x4a)); 54 | p15_centered(txt_mk2coin2a,SCX(0xc7),SCY(0x32)); 55 | current_proc->a14=(ADDRESS)objlst2; 56 | objlst2=NULL; 57 | tack_a14_on_a0(current_proc->a14,&baklst3); 58 | 59 | pds_coin(&baklst4,txt_mkcoin3b,SCX(0x148),SCY(0x4a)); 60 | p15_centered(txt_mk2coin3a,SCX(0x148),SCY(0x32)); 61 | current_proc->a14=(ADDRESS)objlst2; 62 | objlst2=NULL; 63 | tack_a14_on_a0(current_proc->a14,&baklst4); 64 | 65 | CREATE(PID_AMODE,amode_coin_page); 66 | 67 | current_proc->a11=(ADDRESS)fl_coin_cursor; 68 | CREATE(PID_AMODE,boonpal_stuff); 69 | 70 | // make_cursor_objects(coinpage_cursor,OID_AMODE,bpal_flash1_P); 71 | //-DHS- have greg make a large size cursor 72 | 73 | current_proc->pa8=(OBJECT*)current_proc->a10; 74 | 75 | current_proc->a11=0; 76 | change_letter_colors(RED_p); 77 | 78 | /* msp2 */ 79 | do 80 | { 81 | current_proc->a10=12; 82 | /* msp3 */ 83 | do 84 | { 85 | process_sleep(1); 86 | } 87 | while(--current_proc->a10>0); 88 | 89 | if ((swcurr.padvalue & M_P1L) || (swcurr.padvalue & M_P2L)) 90 | { 91 | /* msp_left */ 92 | if (current_proc->a11!=0) 93 | { 94 | change_letter_colors(WHITE_p); 95 | current_proc->a11--; 96 | change_letter_colors(RED_p); 97 | move_cursor(-SCX(0x82)); 98 | } 99 | } 100 | else 101 | { 102 | if ((swcurr.padvalue & M_P1R) || (swcurr.padvalue & M_P2R)) 103 | { 104 | /* msp_right */ 105 | if (current_proc->a11!=2) 106 | { 107 | change_letter_colors(WHITE_p); 108 | current_proc->a11--; 109 | change_letter_colors(RED_p); 110 | move_cursor(SCX(0x82)); 111 | } 112 | } 113 | else 114 | { 115 | if ((swcurr.padvalue & M_P1START) || (swcurr.padvalue & M_P2START)) 116 | break; 117 | } 118 | } 119 | } 120 | while(1); 121 | 122 | /* msp_picked */ 123 | mode_of_play=current_proc->a11; 124 | MURDER; 125 | dallobj(OID_AMODE); 126 | 127 | current_proc->a10=10; 128 | /* mspp3 */ 129 | do 130 | { 131 | change_letter_colors(WHITE_p); 132 | process_sleep(4); 133 | change_letter_colors(RED_p); 134 | process_sleep(4); 135 | } 136 | while(--current_proc->a10>0); 137 | 138 | process_sleep(8); 139 | return; 140 | } 141 | 142 | void move_cursor(short pa0) 143 | { 144 | //-DHS- assume one cursor object, no lnks 145 | OBJECT *ta1; 146 | 147 | ta1=current_proc->pa8; 148 | ta1->oxpos.u.intpos+=pa0; 149 | 150 | return; 151 | } 152 | 153 | void change_letter_colors(WORD *pa1) 154 | { 155 | OBJECT *ta2; 156 | OBJECT *pa8=current_proc->pa8; 157 | 158 | switch (current_proc->a11) 159 | { 160 | case 0: 161 | ta2=(OBJECT *)&baklst2; 162 | break; 163 | case 1: 164 | ta2=(OBJECT *)&baklst3; 165 | break; 166 | case 2: 167 | ta2=(OBJECT *)&baklst4; 168 | break; 169 | } 170 | 171 | current_proc->pa8=ta2->olink; 172 | do 173 | { 174 | swpal(pa1,current_proc->pa8); 175 | current_proc->pa8=(current_proc->pa8)->olink; 176 | } 177 | while(current_proc->pa8!=NULL); 178 | 179 | current_proc->pa8=pa8; 180 | 181 | return; 182 | } 183 | 184 | void pds_coin(OBJECT **pa10,char *pa8,short x,short y) 185 | { 186 | OBJECT *ta11; 187 | 188 | ta11=objlst2; 189 | 190 | objlst2=NULL; 191 | pds_centered(pa8,x,y); 192 | 193 | *pa10=objlst2; 194 | objlst2=ta11; 195 | 196 | return; 197 | } 198 | 199 | void p15_coin(OBJECT **pa10,char *pa8,short x,short y) 200 | { 201 | OBJECT *ta11; 202 | 203 | ta11=objlst2; 204 | 205 | objlst2=NULL; 206 | p15_centered(pa8,x,y); 207 | 208 | *pa10=objlst2; 209 | objlst2=ta11; 210 | 211 | return; 212 | } 213 | 214 | //****************************************************************************** 215 | //****************************************************************************** 216 | char txt_ques[]="? ? ? ? ? "; 217 | char txt_player_x[]="PLAYER %d"; 218 | 219 | 220 | WORD word1=1; 221 | WORD word2=2; 222 | WORD word3=3; 223 | WORD word4=4; 224 | WORD word5=5; 225 | WORD word6=6; 226 | WORD word7=7; 227 | WORD word8=8; 228 | 229 | 230 | TREES tree_structure[]= 231 | { 232 | {TREEORGX,TREEORGY+(TREEYSP*0),&word1}, 233 | {TREEORGX,TREEORGY+(TREEYSP*1),&word2}, 234 | {TREEORGX,TREEORGY+(TREEYSP*2),&word3}, 235 | {TREEORGX,TREEORGY+(TREEYSP*3),&word4}, 236 | {TREEORGX,TREEORGY+(TREEYSP*4),&word5}, 237 | {TREEORGX,TREEORGY+(TREEYSP*5),&word6}, 238 | {TREEORGX,TREEORGY+(TREEYSP*6),&word7}, 239 | {TREEORGX,TREEORGY+(TREEYSP*7),&word8}, 240 | 241 | {TREEORG2X,TREEORG2Y+(TREEYSP*0),&twinners[0]}, 242 | {TREEORG2X,TREEORG2Y+(TREEYSP*2),&twinners[1]}, 243 | {TREEORG2X,TREEORG2Y+(TREEYSP*4),&twinners[2]}, 244 | {TREEORG2X,TREEORG2Y+(TREEYSP*6),&twinners[3]}, 245 | 246 | {TREEORG3X,TREEORG3Y+(TREEYSP*0),&twinners[4]}, 247 | {TREEORG3X,TREEORG3Y+(TREEYSP*4),&twinners[5]}, 248 | 249 | {TREEORG4X,TREEORG4Y,&twinners[6]}, 250 | {0,0,NULL} 251 | }; 252 | 253 | void tournament_tree(WORD pa10) 254 | { 255 | TREES *ta11; 256 | WORD ta0,ta8; 257 | OBJECT *ta1; 258 | 259 | current_proc->pdata.p_flags=pa10; 260 | murder_myoinit_score(); 261 | bogus_dlist; 262 | 263 | ta8=0; // match counter 264 | ta11=tree_structure; 265 | /* tree3 */ 266 | while (ta11->t_x!=0) 267 | { 268 | ta0=*(ta11->t_wrd); 269 | if (ta0==0) 270 | pds_centered(txt_ques,ta11->t_x,ta11->t_y); 271 | else pds_centered_p1(txt_player_x,ta11->t_x,ta11->t_y,ta0); 272 | 273 | if ((ta8>>2)==0) 274 | ta1=(OBJECT *)&baklst2; 275 | else ta1=(OBJECT *)&baklst1; 276 | 277 | move_object_list(&objlst2,ta1); 278 | pa8++; 279 | ta11++; 280 | } 281 | 282 | CREATE(PID_FX,ttext_flasher); 283 | process_sleep(0x40); 284 | return; 285 | } 286 | 287 | void ttext_flasher(void) 288 | { 289 | OBJECT *ta10; 290 | 291 | ta10=baklst2; 292 | do 293 | { 294 | ttf_sleep(ta10); 295 | ttf_sleep(NULL); 296 | } 297 | while(1); 298 | } 299 | 300 | void ttf_sleep(OBJECT *pa0) 301 | { 302 | baklst2=pa0; 303 | process_sleep(10); 304 | return; 305 | } 306 | -------------------------------------------------------------------------------- /MKCOIN.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: filename (this file) 3 | 4 | Date: date 5 | 6 | Source: arcade filename 7 | 8 | (C) Williams Entertainment 9 | 10 | -COMMENT- 11 | ******************************************************************************/ 12 | 13 | /************************************ 14 | Revisions: 15 | DHS 11/20/95 Created file 16 | ************************************/ 17 | #ifndef __mkcoin_h__ 18 | #define __mkcoin_h__ 19 | 20 | 21 | /************************************************************************* 22 | * DEFINES 23 | *************************************************************************/ 24 | #define TREEYSP (SCY(0x20)) 25 | #define TREEXSP (SCX(0x5a)) 26 | 27 | #define TREEORGX (SCX(0x30)) 28 | #define TREEORGY (SCX(0x10)) 29 | 30 | #define TREEORG2X (TREEORGX+TREEXSP) 31 | #define TREEORG2Y (TREEORGY+SCY(0x10)) 32 | 33 | #define TREEORG3X (TREEORG2X+TREEXSP) 34 | #define TREEORG3Y (TREEORG2Y+SCY(0x20)) 35 | 36 | #define TREEORG4X (TREEORG3X+TREEXSP) 37 | #define TREEORG4Y (TREEORG3Y+SCY(0x30)) 38 | 39 | typedef struct 40 | { 41 | short t_x; 42 | short t_y; 43 | WORD *t_wrd; 44 | } TREES; 45 | 46 | /************************************************************************ 47 | * RAM 48 | ************************************************************************/ 49 | __EXTERN__ WORD twinners[7]; 50 | 51 | /************************************************************************ 52 | * PROTOTYPES 53 | ************************************************************************/ 54 | void mode_select(void); 55 | void move_cursor(short pa0); 56 | void change_letter_colors(WORD *pa1); 57 | void pds_coin(OBJECT **pa10,char *pa8,short x,short y); 58 | 59 | void tournament_tree(WORD pa10); 60 | void ttext_flasher(void); 61 | void ttf_sleep(OBJECT *pa0); 62 | 63 | 64 | /************************************************************************ 65 | * MACROS 66 | ************************************************************************/ 67 | 68 | #endif /* __mkcoin_h_ */ -------------------------------------------------------------------------------- /MKCOMBO.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkcombo.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III combo Player Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkcombo_h__ 14 | #define __mk_mkcombo_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define CB_HIPUNCH 0x00 20 | #define CB_LOPUNCH 0x01 21 | #define CB_BLOCK 0x02 22 | #define CB_HIKICK 0x03 23 | #define CB_LOKICK 0x04 24 | 25 | #define CB_JUMP_ADDRESS 0x1111 26 | 27 | 28 | #define STK_0 0x0000 // hit in face 29 | #define STK_1 0x0100 // stumble away 30 | #define STK_2 0x0200 // knocked on back 31 | #define STK_3 0x0300 // knocked high on back 32 | #define STK_4 0x0400 // NAILED ! 33 | #define STK_5 0x0500 // uppercutted 34 | 35 | #define C_SPEED1 0x0100 36 | #define C_SPEED2 0x0200 37 | #define C_SPEED3 0x0300 38 | 39 | #define LAST_OPTION 0x8000 40 | #define B_LAST_OPTION 15 41 | #define M_LAST_OPTION LAST_OPTION 42 | 43 | typedef struct combohdr { 44 | WORD c_time; 45 | WORD c_attack; // attack animation 46 | WORD c_speed; // anim speed, button # 47 | WORD c_retr; // retract ani: [offset,p#] 48 | WORD c_stk; // strike offset 49 | WORD c_pad; // padding for alignment 50 | JUMPTBL c_next; // success ptr to next combo table entry 51 | } COMBO; 52 | 53 | #define c_req c_stk // requirement routine 54 | 55 | #define REQ_NONE 0 // requirement: none 56 | #define REQ_STKAWAY 1 // requirement: joystick away 57 | #define REQ_STKTOW 3 // requirement: joystick towards 58 | #define REQ_STKDOWN 4 59 | 60 | #define RETRACT_ELBOW 0x1002 61 | #define RETRACT_KNEE 0x1302 62 | 63 | #define ATK_ELBOW1 0x1001 64 | #define ATK_ELBOW2 0x1003 65 | #define ATK_ELBOW3 0x1004 66 | #define ATK_ELBOW4 0x1005 67 | #define ATK_KNEE1 0x1301 68 | #define ATK_KNEE2 0x1303 69 | #define ATK_KNEE3 0x1304 70 | #define ATK_KNEE4 0x1305 71 | #define ATK_HIKICK 0x1101 72 | #define ATK_LOKICK 0x1201 73 | #define ATK_ROUNDH 0x1501 74 | 75 | 76 | 77 | /* 78 | * RAM 79 | */ 80 | 81 | /* 82 | * PROTOTYPES 83 | */ 84 | void do_knee(void); 85 | void do_elbow(void); 86 | void knee_elbow_blocked(WORD pa0); 87 | 88 | void process_combo_table(COMBO *); 89 | WORD combo_scan_a11(COMBO **ctbl); 90 | inline void a9_combo_ani(WORD); 91 | void clear_combo_butn(void); 92 | WORD check_axe_up_combo(void); 93 | WORD combo_is_stick_away(void); 94 | WORD combo_is_stick_down(void); 95 | WORD combo_is_stick_up(void); 96 | WORD combo_is_stick_toward(void); 97 | WORD combo_q_no(void); 98 | WORD set_his_half_damage(void); 99 | WORD set_his_quarter_damage(void); 100 | 101 | /* combo tables externs (mkscombo.s) */ 102 | extern COMBO ct_kano_elbow2[]; 103 | extern COMBO ct_sonya_elbow2[]; 104 | extern COMBO ct_jax_elbow2[]; 105 | extern COMBO ct_ind_elbow2[]; 106 | extern COMBO ct_sz_elbow2[]; 107 | extern COMBO ct_swat_elbow2[]; 108 | extern COMBO ct_lia_elbow2[]; 109 | extern COMBO ct_sektor_elbow2[]; 110 | extern COMBO ct_cyrax_elbow2[]; 111 | extern COMBO ct_lao_elbow2[]; 112 | extern COMBO ct_tusk_elbow2[]; 113 | extern COMBO ct_sg_elbow2[]; 114 | extern COMBO ct_st_elbow2[]; 115 | extern COMBO ct_lk_elbow2[]; 116 | extern COMBO ct_smoke_elbow2[]; 117 | extern COMBO ct_kitana_elbow2[]; 118 | extern COMBO ct_jade_elbow2[]; 119 | extern COMBO ct_mileena_elbow2[]; 120 | extern COMBO ct_scorp_elbow2[]; 121 | extern COMBO ct_rep_elbow2[]; 122 | extern COMBO ct_ermac_elbow2[]; 123 | extern COMBO ct_osz_elbow2[]; 124 | extern COMBO ct_scorp_elbow2[]; 125 | extern COMBO ct_kano_elbow2[]; 126 | extern COMBO ct_kano_knee2[]; 127 | extern COMBO ct_sonya_knee2[]; 128 | extern COMBO ct_jax_knee2[]; 129 | extern COMBO ct_ind_knee2[]; 130 | extern COMBO ct_sz_knee2[]; 131 | extern COMBO ct_swat_knee2[]; 132 | extern COMBO ct_lia_knee[]; 133 | extern COMBO ct_sektor_knee2[]; 134 | extern COMBO ct_cyrax_knee2[]; 135 | extern COMBO ct_lao_knee2[]; 136 | extern COMBO ct_tusk_knee2[]; 137 | extern COMBO ct_sg_knee2[]; 138 | extern COMBO ct_st_knee2[]; 139 | extern COMBO ct_lk_knee2[]; 140 | extern COMBO ct_smoke_knee2[]; 141 | extern COMBO ct_kitana_knee2[]; 142 | extern COMBO ct_jade_knee2[]; 143 | extern COMBO ct_mileena_knee2[]; 144 | extern COMBO ct_scorp_knee2[]; 145 | extern COMBO ct_rep_knee2[]; 146 | extern COMBO ct_ermac_knee2[]; 147 | extern COMBO ct_osz_knee2[]; 148 | extern COMBO ct_kano_knee2[]; 149 | extern COMBO ct_kano_knee2[]; 150 | 151 | /* 152 | * MACROS 153 | */ 154 | 155 | #endif /* __mk_mkcombo_h__ */ 156 | 157 | -------------------------------------------------------------------------------- /MKDIAG.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkdiag.c 3 | 4 | Date: March 1995 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Various Diag????.asm Routines 9 | ******************************************************************************/ 10 | 11 | /* INCLUDES */ 12 | #include "system.h" 13 | 14 | #ifdef SONY_PSX 15 | #include "mksony.h" 16 | #endif 17 | 18 | #include "mkbkgd.h" 19 | #include "mkobj.h" 20 | #include "mkos.h" 21 | #include "mkgame.h" 22 | #include "mkutil.h" 23 | #include "mkani.h" 24 | #include "mkdiag.h" 25 | /****************************************************************************** 26 | DIAGCOIN ROUTINES 27 | ******************************************************************************/ 28 | 29 | /****************************************************************************** 30 | DIAGCMOS ROUTINES 31 | ******************************************************************************/ 32 | 33 | 34 | /****************************************************************************** 35 | DIAGDTST ROUTINES (MEMORY CARD) 36 | ******************************************************************************/ 37 | -------------------------------------------------------------------------------- /MKDIAG.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkdiag.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III diags header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkdiag_h__ 14 | #define __mk_mkdiag_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define GAME_CREDITS 5 // # of credits to start 20 | 21 | /* dipswitch equates */ 22 | #define DIP_VIOLENCE 0x0001 23 | #define DIP_BLOOD 0x0002 24 | #define DIP_LOW_BLOW 0x0004 25 | #define DIP_AMSOUNDS 0x0008 26 | 27 | /* 28 | * RAM 29 | */ 30 | 31 | /* 32 | * PROTOTYPES 33 | */ 34 | 35 | /* diagcoin, coinage */ 36 | //void p_start(void); 37 | //void p_cont(void); 38 | //WORD cr_strtp(void); 39 | //WORD cr_contp(void); 40 | //WORD get_credits(void); 41 | 42 | /* diagcmos, audits */ 43 | inline short get_adj_diff_word(short *); 44 | 45 | /* diagdtst, dip switch/memory card */ 46 | WORD read_dip(void); 47 | 48 | 49 | /* 50 | * MACROS 51 | */ 52 | 53 | #endif /* __mk_mkdiag_h__ */ 54 | 55 | -------------------------------------------------------------------------------- /MKEND.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkend.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III endship header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkend_h__ 14 | #define __mk_mkend_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define BPAL_WHITE 0x7fff 20 | #define BPAL_BLACK 0x8000 21 | 22 | typedef struct sk_ray 23 | { 24 | void *a_ray; 25 | short x,y; 26 | } SK_RAY; 27 | 28 | typedef struct thankx 29 | { 30 | char *txt; 31 | WORD sleep; 32 | } THANKX; 33 | 34 | typedef struct dteam 35 | { 36 | void *t1; 37 | short x1,y1; 38 | } DTEAM; 39 | 40 | #define MAX_ARCADE_CODES 3 41 | #define ARCADE_L1_PROB 2 // depth of easy table to allowed 42 | #define ARCADE_L2_PROB 4 // depth of med table to allowed 43 | #define ARCADE_L3_PROB 6 // depth of hard table allowed 44 | /* 45 | * RAM 46 | */ 47 | 48 | /* 49 | * PROTOTYPES 50 | */ 51 | 52 | void smoke_page(void); 53 | void arcade_page(void); 54 | void ultimate_exit(void); 55 | void smoke_jackpot(void); 56 | void count_down_timer(void); 57 | void count_shape(OBJECT *); 58 | void smoke_check_button(OBJECT *obj); 59 | 60 | void shao_kahn_death_fx(void); 61 | void sk_die_tower(WORD pa10,WORD pa11h,WORD pa11l); 62 | void sk_die_pit(WORD pa10,WORD pa11h,WORD pa11l); 63 | void init_and_multi_plane(WORD pa0); 64 | void shao_kahn_dying2(void); 65 | void shao_kahn_dying(void); 66 | void sk_die_setup(void); 67 | void kahn_flash(WORD pa0,void *pa1); 68 | void victory_message(void); 69 | void msg_rise(void); 70 | void winner_msg_rise(void); 71 | void end_of_tournament(void); 72 | void set_objlst2_vel(long pa1); 73 | void sk_ray1(void); 74 | void sk_ray2(void); 75 | void sk_ray3(void); 76 | void sk_ray_setup(void); 77 | 78 | void mk3_cast_o_characters(void); 79 | void take_a_bow(void); 80 | void wake_me_up(void); 81 | void run_away(void); 82 | 83 | 84 | void mk3_thank_you(void); 85 | void set_letter_vel(void); 86 | void text_deleter(void); 87 | 88 | void mk3_design_team(DTEAM *); 89 | void team_print(DTEAM *pa0); 90 | 91 | /* 92 | * MACROS 93 | */ 94 | extern DTEAM arcade_team_table[]; 95 | extern DTEAM sony_team_table[]; 96 | 97 | #endif /* __mk_mkend_h__ */ 98 | 99 | -------------------------------------------------------------------------------- /MKFADE.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkfade.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III fade Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkfade_h__ 14 | #define __mk_mkfade_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define PRE_A4 0x001f // a4 - pre mult mask for 5 bits of red 20 | #define PRE_A6 0x03e0 // a6 - pre mult mask for 5 bits of green 21 | #define PRE_A8 0x7c00 // a8 - pre mult mask for 5 bits of blue 22 | 23 | #define POST_A9 (PRE_A4<<7) // a9 - post mult max for 5 bits of red 24 | #define POST_A10 (PRE_A6<<7) // a10 - post mult max for 5 bits of green 25 | #define POST_A11 (PRE_A8<<7) // a11 - post mult max for 5 bits of blue 26 | 27 | #define WTOP 700 28 | #define DTOP 8 29 | 30 | /* 31 | * RAM 32 | */ 33 | 34 | /* 35 | * PROTOTYPES 36 | */ 37 | void fade_this_pal(WORD pa0,WORD pa5,WORD pa10,WORD *pa11); 38 | void single_pal_fader(void); 39 | void newfade(WORD *pa0,WORD *pa1); 40 | void fast_fadeout_jsrp(WORD pa10); 41 | void fadeout_jsrp(WORD pa10); 42 | void fadein_white_jsrp(void); 43 | void fadewhite(WORD **pa0); 44 | void white_2_blax(void); 45 | void fadein_white(WORD **pa0); 46 | void fade_white(WORD **pa0); 47 | void fadeout_mercy(WORD **pa0); 48 | void fast_fadein_jsrp(WORD pa10); 49 | void fadein_jsrp(WORD pa10); 50 | void fade_sleep_a0(WORD pa0); 51 | void fade_all_sky(void); 52 | void raiden_dimmer(void); 53 | void raiden_undimmer(void); 54 | void pause_dimmer(void); 55 | void pause_undimmer(void); 56 | void fadeblak(WORD **); 57 | void fadeins(WORD **pa0); 58 | void fadein(WORD **pa0); 59 | void join_in_fade1(WORD **pa0); 60 | void join_in_fade2(WORD **pa0); 61 | void fade_in_fast(void); 62 | void fade_all_fast(void); 63 | void fadein_all_fast(void); 64 | void fadeout(WORD **pa0); 65 | void fader(WORD **pa0,WORD *pa11); 66 | void fadeproc(void); 67 | void fadepal(WORD *pa0,WORD *pa1,WORD pa2); 68 | void skydown(void); 69 | void skyup(void); 70 | WORD xcolor(WORD pa0,LONG pa1); 71 | 72 | /* 73 | * MACROS 74 | */ 75 | #define fadeall(_la0,_la11) fader(_la0,_la11) 76 | #define skydie(_ta1) xcolor(irqskye,_ta1),process_suicide() 77 | #endif /* __mk_mkfade_h__ */ 78 | 79 | -------------------------------------------------------------------------------- /MKFILE.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkfile.h 3 | 4 | By: David Schwartz 5 | 6 | Date: March 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III file Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkfile_h__ 14 | #define __mk_mkfile_h__ 15 | 16 | #include "psxcd.h" 17 | 18 | /* 19 | * DEFINITIONS 20 | */ 21 | #define CD_FILE _CD_VERSION_ 22 | #define PC_FILE (CD_FILE^1) 23 | 24 | #if _CD_VERSION_ == 1 25 | typedef PsxCd_File File_IO_Struct; 26 | #else 27 | typedef int File_IO_Struct; 28 | #endif 29 | 30 | typedef struct ovl 31 | { 32 | char **ovl_addr; 33 | char *ovl_file; 34 | } OVL; 35 | 36 | /* character data type */ 37 | #define CHAR_BABY 0 38 | #define CHAR_NORMAL 1 39 | #define CHAR_ANIMAL 2 40 | #define CHAR_FRIEND 3 41 | #define CHAR_FATAL1 4 42 | #define CHAR_FATAL2 5 43 | #define CHAR_VS 6 44 | 45 | /* special character loads */ 46 | #define NO_FILE 0xffff // EQUIVALENT TO NULL 47 | #define CHAR_SPECIAL_1 0xfff1 // KANO SKEL REACH 48 | #define CHAR_SPECIAL_2 0xfff2 // LIA SKIN RIP 49 | #define CHAR_SPECIAL_3 0xfff3 // KABAL INFLATE 50 | #define CHAR_SPECIAL_4 0xfff4 // SHEEVA SKIN RIP 51 | #define CHAR_SPECIAL_5 0xfff5 // SHANG FLOAT 52 | #define CHAR_SPECIAL_6 0xfff6 // SMOKE ARM BOMB 53 | #define CHAR_SPECIAL_7 0xfff7 54 | 55 | /* load types */ 56 | #define SYNC_LOAD 0x0000 // normal sync load 57 | #define ASYNC_LOAD 0x0001 // async load 58 | #define FATAL_LOAD 0x0002 // load at dest-length addr 59 | 60 | /* generic overlay indexs, overlays for various stuff */ 61 | #define OVL_SELECT 0x00 // select screen fighter data 62 | #define OVL_OPTIONS 0x01 // option screen data 63 | #define OVL_SINVADE 0x02 // hidden game overlay 64 | 65 | /* special end of figght fxs load */ 66 | #define FX_FATAL_LOAD 0 67 | #define FX_ANIMAL_LOAD 1 68 | #define FX_FRIEND_LOAD 2 69 | #define FX_BABY_LOAD 3 70 | 71 | /* level textures & code file index */ 72 | #define LVL_NONE 0xff 73 | #define LVL_SUBWAY_STREET 0 74 | #define LVL_UNUSED1 1 75 | #define LVL_BANK 2 76 | #define LVL_CITY 2 77 | #define LVL_BALCONY 3 78 | #define LVL_SOUL 3 79 | #define LVL_BRIDGE 4 80 | #define LVL_BELL 5 81 | #define LVL_TEMPLE 6 82 | #define LVL_GRAVE 7 83 | #define LVL_PIT 8 84 | #define LVL_WATER 9 85 | #define LVL_HADES_CAVE 10 86 | #define LVL_DESERT 11 87 | #define LVL_BUYIN 12 88 | #define LVL_LOST 13 89 | #define LVL_PORTAL 14 90 | #define LVL_HSCORE 15 91 | #define LVL_LADDER 16 92 | #define LVL_VERSE 17 93 | #define LVL_COIN 18 94 | #define LVL_FIRE 19 95 | #define LVL_GRADIENT 20 96 | #define LVL_TITLE 21 97 | #define LVL_SELECT LVL_LADDER 98 | #define LVL_OPTIONS 23 99 | #define LVL_OPTTEXT 24 100 | #define LVL_CONTROL 25 101 | #define LVL_FONTS 26 102 | #define LVL_LOADING 27 103 | #define LVL_SKEND 28 104 | #define LVL_MOCKPIT 29 105 | #define LVL_DTEAM 30 106 | 107 | /* 108 | * RAM 109 | */ 110 | __EXTERN__ File_IO_Struct module_int; 111 | 112 | __EXTERN__ BYTE load_level; // current level in load_addr area 113 | __EXTERN__ BYTE load_pal; // current img palette overlay loaded (0-NTSC, 1-RGB) 114 | 115 | __EXTERN__ void *finish_heap_ptr; // ptr for finishing heap info 116 | __EXTERN__ void *player_heap_ptr; // remember what my heap ptr was before fatality 117 | /* 118 | * PROTOTYPES 119 | */ 120 | int module_io_init(void); 121 | File_IO_Struct *module_os_open(char *filename); 122 | int module_os_read(void *destptr,int readbytes,File_IO_Struct *fileptr); 123 | int module_os_seek(File_IO_Struct *fileptr,int seekpos,int seekmode); 124 | int module_os_size(File_IO_Struct *fileptr); 125 | //int module_os_close(File_IO_Struct *fileptr); 126 | 127 | int texture_level_load(WORD level,WORD sync); 128 | int character_texture_load(WORD pchar,WORD type,void *dest,WORD sync); 129 | int generic_overlay_load(WORD overnum); 130 | BYTE *special_fx_load(WORD fxtype); 131 | int level_overlay_load(WORD level); 132 | void file_load_message(WORD); 133 | 134 | 135 | 136 | /* 137 | * MACROS 138 | */ 139 | 140 | #endif /* __mk_mkfile_h__ */ 141 | -------------------------------------------------------------------------------- /MKFRIEND.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkfriend.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III friendship header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkfriend_h__ 14 | #define __mk_mkfriend_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void do_friendship(void); 29 | void friendship_start_pause(void); 30 | void friendship_complete(void); 31 | 32 | void fr_mileena(void); 33 | 34 | void f_null_friendship(void); 35 | 36 | void f_scorpion(void); 37 | void f_reptile(void); 38 | void pop_up_my_toy(void); 39 | void jax_n_box_start(void); 40 | 41 | void f_jade(void); 42 | void friend_ender(void); 43 | 44 | void f_kitana(void); 45 | void spawn_bubble(void); 46 | void bubble_proc(void); 47 | void bub_1_proc(void); 48 | 49 | void f_kano(void); 50 | void f_sonya(void); 51 | void sonya_flower_proc(void); 52 | void f_jax(void); 53 | void end_friend_proc(void); 54 | 55 | void f_indian(void); 56 | void other_ochar_sound(WORD pa0,WORD pa1); 57 | 58 | void f_sz(void); 59 | 60 | void f_swat(void); 61 | void swat_friend_proc(void); 62 | void swat_crossing_people(void); 63 | 64 | void f_sindel(void); 65 | void football_proc(void); 66 | 67 | void f_sektor(void); 68 | void dinger_proc(void); 69 | 70 | void f_cyrax(void); 71 | 72 | void f_lao(void); 73 | void lao_dog_sounds(void); 74 | void cute_lil_doggy(void); 75 | void hat_proc(void); 76 | 77 | void f_kabal(void); 78 | void f_sheeva(void); 79 | 80 | void f_shang(void); 81 | void bounce(void); 82 | 83 | void f_liu(void); 84 | void wall_dragon_proc(void); 85 | 86 | void f_smoke_ninja(void); 87 | 88 | /* 89 | * MACROS 90 | */ 91 | #define mframew_5 mframew(5) 92 | #define mframew_4 mframew(4) 93 | #define mframew_3 mframew(3) 94 | 95 | /* notes about new friendships 96 | 97 | MILEENA 98 | a_mirror_mirror -> ANIM_F1_FRIEND (0x1a) 99 | tsound(1); 100 | tsound(0x66); 101 | 102 | SCORPION 103 | a_skull_in_da_box -> ANIM_F1_FRIEND (done) 104 | a_crank_box -> ANIM_F2_FRIEND (done) 105 | tsound(0x92) 106 | 107 | REPTILE 108 | a_snake_in_da_box -> ANIM_F1_FRIEND (done) 109 | a_crank_box -> ANIM_F2_FRIEND (done) 110 | tsound(0x92) 111 | 112 | JADE 113 | a_pogo_stick ->ANIM_F1_FRIEND 114 | tsound(0xc) 115 | 116 | 117 | KITANA 118 | a_kitana_bubbles ->ANIM_F1_FRIEND 119 | a_kitana_kiss -> ANIM_F2_FRIEND 120 | 121 | 122 | SONYA 123 | a_flower -> ANIM_F1_FRIEND 124 | */ 125 | 126 | #endif /* __mk_mkfriend_h__ */ 127 | 128 | -------------------------------------------------------------------------------- /MKGLOBAL.C: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkglobal.c 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III GLOBAL RAM 9 | ******************************************************************************/ 10 | 11 | #define DECLARE_GLOBALS 12 | 13 | 14 | #include "system.h" 15 | 16 | #ifdef SONY_PSX 17 | #include "mksony.h" 18 | #endif 19 | 20 | #include "mkbkgd.h" 21 | #include "mkos.h" 22 | #include "mkinit.h" 23 | #include "mkutil.h" 24 | #include "mkobj.h" 25 | #include "mkgame.h" 26 | #include "mkcombo.h" 27 | #include "moves.h" 28 | #include "mkamode.h" 29 | #include "mkmain.h" 30 | #include "mksel.h" 31 | #include "mkreact.h" 32 | #include "mkjoy.h" 33 | #include "mkdrone.h" 34 | #include "mkguys.h" 35 | #include "mkpal.h" 36 | #include "mkvs.h" 37 | #include "mkrepell.h" 38 | #include "mkslam.h" 39 | #include "mkblood.h" 40 | #include "mkani.h" 41 | #include "mkprop.h" 42 | #include "mkzap.h" 43 | #include "mksound.h" 44 | #include "mkcanned.h" 45 | #include "mkbonus.h" 46 | #include "valloc.h" 47 | #include "mkscore.h" 48 | #include "mktext.h" 49 | #include "mkfatal.h" 50 | #include "mkanimal.h" 51 | #include "mkfriend.h" 52 | #include "mkend.h" 53 | #include "mkmark.h" 54 | #include "mkdiag.h" 55 | #include "mkfade.h" 56 | #include "mkladder.h" 57 | #include "mkfile.h" 58 | #include "mkbio.h" 59 | #include "mkboss.h" 60 | #include "mkstat.h" 61 | #include "mkopt.h" 62 | #include "mkmode.h" 63 | -------------------------------------------------------------------------------- /MKHSTD.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkhstd.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III High SCore header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkhstd_h__ 14 | #define __mk_mkhstd_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | typedef struct hscore 20 | { 21 | char hinit[4]; // initials 22 | WORD wiar; // # of wins in a row 23 | } HSCORE; 24 | 25 | #define ENTRIES_PER_PAGE 10 26 | 27 | #define ABC_STARTX SCX(0x5d) 28 | #define ABC_STARTY (SCY(0x50)+12) 29 | 30 | #define ABC_PER_LINE 9 31 | 32 | #define P1_BMASK P1_BUTTON_MASK 33 | #define P2_BMASK P2_BUTTON_MASK 34 | #define P_JMASK (MASK_JUP|MASK_JDOWN|MASK_JLEFT|MASK_JRIGHT) 35 | 36 | #define ABC_SPACEX SCX(0x1a) 37 | #define ABC_SPACEY SCX(0x1b) 38 | 39 | /* 40 | * RAM 41 | */ 42 | 43 | /* 44 | * PROTOTYPES 45 | */ 46 | void enter_initials(void); 47 | void print_1_character(char ta0,short ta2x,short ta2y); 48 | void get_initial_proc(void); 49 | WORD check_for_rub(void); 50 | 51 | void high_score_background(void); 52 | void high_score_text(void); 53 | OBJECT *get_one_initial(WORD *pa2x,WORD *pa2y,WORD letnum); 54 | void button_wait(void); 55 | void box_entry(void); 56 | void boxme(RECT *box); 57 | void valid_move(void); 58 | void erasebox(void); 59 | void insert_entry(void); 60 | void print_rankings(void); 61 | void print_line(WORD i); 62 | WORD does_a0_cut_it(WORD pa0); 63 | 64 | /* 65 | * MACROS 66 | */ 67 | 68 | #endif /* __mk_mkhstd_h__ */ 69 | 70 | -------------------------------------------------------------------------------- /MKINIT.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkinit.h 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Initialization and Main Routine Headers 9 | ******************************************************************************/ 10 | 11 | #ifndef __mk_init_h__ 12 | #define __mk_init_h__ 13 | 14 | /* 15 | * DEFINITIONS 16 | */ 17 | #define SWSTCK_SIZE 16 /* # of entries in switch stack */ 18 | 19 | /* 20 | * RAM 21 | */ 22 | __EXTERN__ WORD f_load; 23 | 24 | __EXTERN__ LONG system_marker; /* set to coded # to indicate initialized system */ 25 | 26 | __EXTERN__ volatile JOYPAD swcurr; /* current switch value (P2:P1) */ 27 | __EXTERN__ JOYPAD swtemp1; /* previous switch state(P2:P1) */ 28 | __EXTERN__ JOYPAD swtemp2; /* previous previous switch state (P2:P1) */ 29 | __EXTERN__ WORD *swstack; /* ptr to current switch stack entry */ 30 | __EXTERN__ WORD swstmn[SWSTCK_SIZE]; /* switch stack memory */ 31 | __EXTERN__ WORD f_gridon; // flag to turn grid on 32 | __EXTERN__ WORD f_profile; // flag: turn on profile 33 | 34 | __EXTERN__ XYTYPE disp_world; // current position for world during display 35 | __EXTERN__ void *dlists_ptr; // current entry in dlists to process 36 | 37 | #if PROFILE 38 | __EXTERN__ int prof_start; // start time of profiler 39 | __EXTERN__ int prof_end; // end time of profiler 40 | __EXTERN__ int prof_max; 41 | __EXTERN__ int prof_draw_start; 42 | __EXTERN__ int prof_draw_end; 43 | #endif 44 | 45 | 46 | /* 47 | * PROTOTYPES 48 | */ 49 | void main(void); 50 | void main_init(void); 51 | void dipinit(void); 52 | void wipeout(void); 53 | 54 | void queue_and_jump(WORD,LONG *,WORD,WORD); 55 | void player_die_check(WORD); 56 | void switch_queue(WORD,LONG *); 57 | void update_bar_common(WORD *,WORD *,WORD *,WORD); 58 | void shadow_p1p2(void); 59 | 60 | void p1_button0_open(void); 61 | void p1_button1_open(void); 62 | void p1_button2_open(void); 63 | void p1_button3_open(void); 64 | void p1_button4_open(void); 65 | void p1_button5_open(void); 66 | void p2_button0_open(void); 67 | void p2_button1_open(void); 68 | void p2_button2_open(void); 69 | void p2_button3_open(void); 70 | void p2_button4_open(void); 71 | void p2_button5_open(void); 72 | void p1_button0(void); 73 | void p1_button1(void); 74 | void p1_button2(void); 75 | void p1_button3(void); 76 | void p1_button4(void); 77 | void p1_button5(void); 78 | void p2_button0(void); 79 | void p2_button1(void); 80 | void p2_button2(void); 81 | void p2_button3(void); 82 | void p2_button4(void); 83 | void p2_button5(void); 84 | void p1_start_button(void); 85 | void p1_joy_up(void); 86 | void p1_joy_right(void); 87 | void p1_joy_down(void); 88 | void p1_joy_left(void); 89 | void p2_start_button(void); 90 | void p2_joy_up(void); 91 | void p2_joy_right(void); 92 | void p2_joy_down(void); 93 | void p2_joy_left(void); 94 | void p_grid(void); 95 | void p_profile(void); 96 | void p_colbox(void); 97 | void pdie2(WORD pb0,WORD pb1,WORD pa3,WORD); 98 | void p1_start_open(void); 99 | void p2_start_open(void); 100 | extern WORD *last_switch_ram[]; 101 | /* 102 | * MACROS 103 | */ 104 | #define update_bar(_la0,_la1) update_bar_common((_la0),(_la1),NULL,0) 105 | #define raise_turbo_bar(_la0,_la1,_la2) update_bar_common((_la0),(_la1),(_la2),1) 106 | 107 | #define PAUSE_CHECK if (f_pause) process_suicide() 108 | 109 | #endif /* __mk_init_h__ */ 110 | -------------------------------------------------------------------------------- /MKLADDER.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkladder.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Mar 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III ladder Player Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkladder_h__ 14 | #define __mk_mkladder_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define PANDOWN SCY(0x30000) 20 | 21 | #define ENTRIES_EASY 8 22 | #define ENTRIES_MED 10 23 | #define ENTRIES_HARD 12 24 | 25 | #define LAST_HARD_ENTRY ((ENTRIES_EASY+ENTRIES_MED+ENTRIES_HARD-1)+1+1) 26 | #define LAST_MED_ENTRY ((ENTRIES_EASY+ENTRIES_MED-1)+1) 27 | #define LAST_EASY_ENTRY (ENTRIES_EASY-1) 28 | 29 | typedef struct mhe_ord 30 | { 31 | OBJECT *olist; // object list 32 | short bskip; // # of blocks to skip 33 | FUNC routine; // routine to run 34 | } MHE_ORD; 35 | 36 | 37 | /* 38 | * RAM 39 | */ 40 | __EXTERN__ XYTYPE ladder_scale; 41 | __EXTERN__ POS ladder_y; 42 | __EXTERN__ POS ladder_y_vel; 43 | __EXTERN__ POS ladder_x; 44 | __EXTERN__ POS ladder_x_vel; 45 | __EXTERN__ short ladder_left_x; 46 | __EXTERN__ short ladder_right_x; 47 | __EXTERN__ LONG ladder_order; //-DHS- change 16 bit -> 32 bit 48 | __EXTERN__ WORD *ladder_base; 49 | __EXTERN__ short ladder; 50 | 51 | /* 52 | * PROTOTYPES 53 | */ 54 | void mk_ladder(void); 55 | 56 | void setup_close_ladder(void); 57 | void setup_distant_ladder(void); 58 | void build_middle_tower(void); 59 | void build_left_tower(void); 60 | void build_right_tower(void); 61 | void ladder_switch_scan(void); 62 | void spin_the_mk_badge(void); 63 | void pan_to_pick_tower(void); 64 | void zoom_in(void); 65 | void pan_down(void); 66 | OBJECT *solid_backdrop_box(void); 67 | ADDRESS get_player_ochar_a5(void); 68 | void create_base_object(void); 69 | void move_dragon_logo(short pa1); 70 | OBJECT *get_current_1st_obj(void); 71 | OBJECT *get_current_objlst(void); 72 | void base_offset_obj(ADDRESS pa5,short pa6,short pa7); 73 | void base_insert(void); 74 | void ladder_irq(void); 75 | void process_a_ladder(MHE_ORD *pa0,short pa2); 76 | void get_a_brick(WORD pa7,OBJECT **olist); 77 | 78 | void easy_to_hard(void); 79 | #define hard_to_med easy_to_hard 80 | 81 | void med_to_hard(void); 82 | #define hard_to_easy med_to_hard 83 | 84 | void set_match_1_diff(void); 85 | void init_map_start(void); 86 | void ladder_badge_spinner(void); 87 | 88 | /* 89 | * MACROS 90 | */ 91 | #define medium_1st (&mhe_table[0]) 92 | #define hard_1st (&mhe_table[3]) 93 | #define easy_1st (&mhe_table[6]) 94 | 95 | #endif /* __mk_mkladder_h__ */ 96 | 97 | -------------------------------------------------------------------------------- /MKMAIN.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkmain.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Main Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkmain_h__ 14 | #define __mk_mkmain_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define FULL_STRENGTH 0xa6 /* power bars at max */ 20 | 21 | /* pause flags */ 22 | #define PAUSE_CLEAR 0x00 23 | #define PAUSE_P1_THAW 0x01 24 | #define PAUSE_P2_THAW 0x02 25 | #define PAUSE_OFF 0x03 // pause is off but waiting for player to clear for debounce 26 | #define PAUSE_P1_SET 0x03 27 | #define PAUSE_P2_SET 0x04 28 | #define PAUSE_P1_INIT 0x05 29 | #define PAUSE_P2_INIT 0x06 30 | 31 | /* clock stuff */ 32 | #define CLOCK_SPEED 11 /* # of ticks before dec clock counters */ 33 | #define CLOCK_INIT_DIGIT 9 /* clock digit init */ 34 | 35 | /* round status */ 36 | #define ROUND_P1_WON 0 /* player 1 won round */ 37 | #define ROUND_P2_WON 1 /* player 2 won round */ 38 | #define ROUND_P1_P2_TIE 2 /* player 1 tied player 2 */ 39 | #define ROUND_TIMEOUT 3 /* ran out of time */ 40 | 41 | /* adjustment value offsets */ 42 | #define ADJCCONT 12 /* # of coins to continue */ 43 | 44 | /* 45 | * RAM 46 | */ 47 | __EXTERN__ WORD f_play3; // set when at PLAY3 label 48 | __EXTERN__ FUNC play3_pa14; // if set then return to this point instead of continue (nasty hack for C) 49 | __EXTERN__ WORD round_results; 50 | __EXTERN__ volatile WORD f_sync; // semaphore type var 51 | __EXTERN__ WORD f_victory_start; 52 | 53 | /* 54 | * PROTOTYPES 55 | */ 56 | void force_it(void); 57 | void start_entry(WORD *,WORD); 58 | void goto_mode_select(WORD *pstate,WORD poffset); 59 | void post_mode_select(void); 60 | void buyin_to_1_on_1(void); 61 | void two_on_two(void); 62 | WORD round_is_over(void); 63 | void tournament_play(void); 64 | void round_1_vs(void); 65 | void game_loop(void); 66 | void round_loop(void); 67 | void one_on_one(void); 68 | void game_init(void); 69 | void set_winner_status(void); 70 | void play_1_match(void); 71 | void spawn_endurance_guy(WORD pa0); 72 | WORD is_endurance_possible(void); 73 | short a0_next_endurance_guy(void); 74 | void fatal_demo_loop(void); 75 | void game_over(void); 76 | inline void init_player_variables(void); 77 | void master_proc_mercy(void); 78 | inline WORD count_active_players(void); 79 | WORD set_drone_ochar(void); 80 | WORD *drone_char_point_a6(void); 81 | short current_drone_a0(void); 82 | WORD who_is_alone(void); 83 | WORD play_1_round(void); 84 | void play3(void); 85 | WORD master_mercy_entry(void); 86 | #define continue_fighting master_mercy_entry 87 | void restore_power(WORD *pa5,WORD *pa6); 88 | void mercy_start(void); 89 | void wait_for_wingman(WORD *pbar); 90 | PROCESS *spawn_wingman(PROCESS *pa1,WORD pa5); 91 | void results_of_round(WORD); 92 | void match_init(void); 93 | void round_init(void); 94 | void round_intro_fx(void); 95 | void start_tune(void); 96 | void try_kombat_kodes(void); 97 | void clear_combo_ram(void); 98 | void print_round_num(void); 99 | void zero_round_init_words(void); 100 | void zero_round_init_longs(void); 101 | void inc_winners_wiar(void); 102 | WORD fatality_wait(WORD); 103 | WORD is_finish_him_allowed(void); 104 | void finish_him_sequence(void); 105 | void loser_in_buyin(void); 106 | void print_timeout_msg(void); 107 | void ochar_force_curback(void); 108 | void adv_winner_map(void); 109 | void end_of_match_chores(void); 110 | void amode_demo_game(void); 111 | void stuff_a0_diff(void); 112 | void add_to_diff(short); 113 | void diff_adjust(void); 114 | WORD ladderorder_a1(void); 115 | void boss_minimum_diff(void); 116 | void check_battle_milestone(void); 117 | void weed_out_cheaters(void); 118 | void flash_pmsg(void); 119 | void flash_pmsg2(void); 120 | void finish_him_or_her(void); 121 | void check_enter_initials1(void); 122 | void check_enter_initials2(void); 123 | void barge_in_message(void); 124 | void advance_curback(void); 125 | short get_adj(WORD); 126 | short get_adj_diff(void); 127 | void reset_map_variables(void); 128 | 129 | void player_heap_adj(void); 130 | 131 | void pause_setup(WORD poffset); 132 | void pause_hold(WORD poffset); 133 | WORD get_background_tune(void); 134 | void play_background_tune(void); 135 | void play_finish_tune(void); 136 | void play_ending_chord(void); 137 | 138 | void hidden_game_load(void); 139 | 140 | /* 141 | * MACROS 142 | */ 143 | #define SHOW_SCORES f_doscore=1 144 | #define DONT_SHOW_SCORES f_doscore=0 145 | 146 | #define corpse_a9_proc(_proc) (_proc)->pdata.p_flags|=PM_CORPSE 147 | 148 | #endif /* __mk_mkmain_h__ */ 149 | 150 | -------------------------------------------------------------------------------- /MKMAINOD.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkmain.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Main Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkmain_h__ 14 | #define __mk_mkmain_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define FULL_STRENGTH 0xa6 /* power bars at max */ 20 | 21 | /* pause flags */ 22 | #define PAUSE_CLEAR 0x00 23 | #define PAUSE_P1_THAW 0x01 24 | #define PAUSE_P2_THAW 0x02 25 | #define PAUSE_OFF 0x03 // pause is off but waiting for player to clear for debounce 26 | #define PAUSE_P1_SET 0x03 27 | #define PAUSE_P2_SET 0x04 28 | #define PAUSE_P1_INIT 0x05 29 | #define PAUSE_P2_INIT 0x06 30 | 31 | /* clock stuff */ 32 | #define CLOCK_SPEED 11 /* # of ticks before dec clock counters */ 33 | #define CLOCK_INIT_DIGIT 9 /* clock digit init */ 34 | 35 | /* round status */ 36 | #define ROUND_P1_WON 0 /* player 1 won round */ 37 | #define ROUND_P2_WON 1 /* player 2 won round */ 38 | #define ROUND_P1_P2_TIE 2 /* player 1 tied player 2 */ 39 | #define ROUND_TIMEOUT 3 /* ran out of time */ 40 | 41 | /* adjustment value offsets */ 42 | #define ADJCCONT 12 /* # of coins to continue */ 43 | 44 | /* briefcase code structure */ 45 | typedef struct bcc 46 | { 47 | LONG b_code; 48 | JUMPTBL b_func; 49 | } BCC; 50 | 51 | /* 52 | * RAM 53 | */ 54 | __EXTERN__ WORD f_play3; // set when at PLAY3 label 55 | __EXTERN__ FUNC play3_pa14; // if set then return to this point instead of continue (nasty hack for C) 56 | __EXTERN__ WORD round_results; 57 | __EXTERN__ volatile WORD f_sync; // semaphore type var 58 | __EXTERN__ WORD f_victory_start; 59 | 60 | /* 61 | * PROTOTYPES 62 | */ 63 | void start_entry(WORD *,WORD); 64 | void start_a_game(WORD *pstate,WORD poffset); 65 | void game_loop(void); 66 | void round_loop(void); 67 | void game_init(void); 68 | void endurance_round(void); 69 | void set_winner_status(void); 70 | WORD is_endurance_possible(WORD pa11,WORD *pa0); 71 | void game_over(void); 72 | inline void init_player_variables(void); 73 | void master_proc_mercy(void); 74 | inline WORD count_active_players(void); 75 | WORD set_drone_ochar(void); 76 | WORD *drone_char_point_a6(void); 77 | WORD current_drone_a0(void); 78 | WORD who_is_alone(void); 79 | WORD play_1_round(void); 80 | void play3(void); 81 | WORD master_mercy_entry(void); 82 | void restore_power(WORD *pa5,WORD *pa6); 83 | void mercy_start(void); 84 | void results_of_round(WORD); 85 | void match_init(void); 86 | void round_init(void); 87 | void round_intro_fx(void); 88 | void start_tune(void); 89 | void try_briefcase(void); 90 | void clear_combo_ram(void); 91 | void print_round_num(void); 92 | void zero_round_init_words(void); 93 | void zero_round_init_longs(void); 94 | void inc_winners_wiar(void); 95 | WORD fatality_wait(WORD); 96 | WORD is_finish_him_allowed(void); 97 | void finish_him_sequence(void); 98 | void loser_in_buyin(void); 99 | void print_timeout_msg(void); 100 | void adv_winner_map(void); 101 | void end_of_match_chores(void); 102 | void amode_demo_game(void); 103 | void add_to_diff(short); 104 | void diff_adjust(void); 105 | WORD ladderorder_a1(void); 106 | void boss_minimum_diff(void); 107 | void check_battle_milestone(void); 108 | void weed_out_cheaters(void); 109 | void flash_pmsg(void); 110 | void flash_pmsg2(void); 111 | void finish_him_or_her(void); 112 | void check_enter_initials1(void); 113 | void check_enter_initials2(void); 114 | void barge_in_message(void); 115 | void advance_curback(void); 116 | short get_adj(WORD); 117 | short get_adj_diff(void); 118 | void reset_map_variables(void); 119 | 120 | void player_heap_adj(void); 121 | 122 | void pause_setup(WORD poffset); 123 | void pause_hold(WORD poffset); 124 | WORD get_background_tune(void); 125 | void play_background_tune(void); 126 | void play_finish_tune(void); 127 | void play_ending_chord(void); 128 | 129 | void bc_real_kombat(void); 130 | void bc_super_endur(void); 131 | void bc_bar_regenerate(void); 132 | void bc_p1p2_half_damage(void); 133 | void bc_p2_half_damage(void); 134 | void bc_p1_half_damage(void); 135 | void bc_no_special_moves(void); 136 | void bc_superjumps(void); 137 | void bc_no_combos(void); 138 | void bc_wf_smoke(void); 139 | void bc_intro_message(void); 140 | void bc_psycho_kombat2(void); 141 | void bc_unlim_run(void); 142 | void bc_uppercut_recovery(void); 143 | void bc_no_powerbars(void); 144 | void bc_nofear_clue(void); 145 | void bc_wf_noob(void); 146 | void bc_wf_sk(void); 147 | void bc_wf_motaro(void); 148 | void bc_space_game(void); 149 | void bc_p2_supercap(void); 150 | void bc_p1_supercap(void); 151 | void bc_jackbot(void); 152 | void bc_switcheroo(void); 153 | void bc_dark_fighting(void); 154 | void bc_p2_handicap(void); 155 | void bc_p1_handicap(void); 156 | void bc_blocking_disabled(void); 157 | void bc_throwing_disabled(void); 158 | void stuff_round_123(WORD pa0); 159 | 160 | void hidden_game_load(void); 161 | 162 | /* 163 | * MACROS 164 | */ 165 | #define SHOW_SCORES f_doscore=1 166 | #define DONT_SHOW_SCORES f_doscore=0 167 | 168 | #define corpse_a9_proc(_proc) (_proc)->pdata.p_flags|=PM_CORPSE 169 | 170 | #endif /* __mk_mkmain_h__ */ 171 | 172 | -------------------------------------------------------------------------------- /MKMARK.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkmark.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III hidden game header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkmark_h__ 14 | #define __mk_mkmark_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | typedef struct pathptr 20 | { 21 | long p_xvel; // xvel 22 | long p_yvel; // yvel 23 | WORD p_time; // time 24 | WORD p_shot; // shot % 25 | } PATHPTR; 26 | 27 | typedef struct baitpos 28 | { 29 | short b_xpos; 30 | short b_ypos; 31 | OIMGTBL *b_frame; 32 | } BAITPOS; 33 | 34 | 35 | #define BPAL_YELLOW 0x7fe0 36 | #define BPAL_RED 0x001f 37 | /* 38 | * RAM 39 | */ 40 | __EXTERN__ WORD player_1_ships; 41 | __EXTERN__ OBJECT *player_1_ship; 42 | __EXTERN__ OBJECT *player_1_missile; 43 | __EXTERN__ OBJECT *player_1_missile2; 44 | __EXTERN__ OBJECT *player_1_missile3; 45 | __EXTERN__ OBJECT *player_1_missile4; 46 | __EXTERN__ WORD player_1_bstate; 47 | 48 | __EXTERN__ WORD player_2_ships; 49 | __EXTERN__ OBJECT *player_2_ship; 50 | __EXTERN__ OBJECT *player_2_missile; 51 | __EXTERN__ OBJECT *player_2_missile2; 52 | __EXTERN__ OBJECT *player_2_missile3; 53 | __EXTERN__ OBJECT *player_2_missile4; 54 | __EXTERN__ WORD player_2_bstate; 55 | 56 | __EXTERN__ short wave_x_position; 57 | __EXTERN__ short wave_y_position; 58 | __EXTERN__ short wave_x_velocity; 59 | __EXTERN__ short wave_y_velocity; 60 | __EXTERN__ WORD dive_randper; 61 | __EXTERN__ WORD shoot_randper; 62 | __EXTERN__ WORD count_left; 63 | __EXTERN__ OBJECT *last_star; 64 | __EXTERN__ WORD ok_exit; 65 | 66 | /* 67 | * PROTOTYPES 68 | */ 69 | void hidden_game(void); 70 | 71 | 72 | /* 73 | * MACROS 74 | */ 75 | //#define safe32mult(_la0,_la1) ((_la0)*(_la1)) 76 | 77 | #define be_99 be_9(0) 78 | #define be_9d be_9(1) 79 | 80 | #endif /* __mk_mkmark_h__ */ 81 | -------------------------------------------------------------------------------- /MKMODE.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: filename (this file) 3 | 4 | Date: date 5 | 6 | Source: arcade filename 7 | 8 | (C) Williams Entertainment 9 | 10 | -COMMENT- 11 | ******************************************************************************/ 12 | 13 | /************************************ 14 | Revisions: 15 | DHS 11/20/95 Created file 16 | ************************************/ 17 | #ifndef __mkmode_h__ 18 | #define __mkmode_h__ 19 | 20 | 21 | /************************************************************************* 22 | * DEFINES 23 | *************************************************************************/ 24 | #define TREEYSP (SCY(0x1d)) 25 | #define TREEXSP (SCX(0x5d)) 26 | 27 | #define TREEORGX (SCX(0x10)) 28 | #define TREEORGY (SCY(0x18)+TREEYSP) 29 | 30 | #define TREEORG2X (TREEORGX+TREEXSP) 31 | #define TREEORG2Y (TREEORGY+SCY(0x10)) 32 | 33 | #define TREEORG3X (TREEORG2X+TREEXSP) 34 | #define TREEORG3Y (TREEORG2Y+SCY(0x20)) 35 | 36 | #define TREEORG4X (TREEORG3X+TREEXSP) 37 | #define TREEORG4Y (TREEORG3Y+SCY(0x30)) 38 | 39 | typedef struct 40 | { 41 | short t_x; 42 | short t_y; 43 | WORD *t_wrd; 44 | } TREES; 45 | 46 | /************************************************************************ 47 | * RAM 48 | ************************************************************************/ 49 | __EXTERN__ WORD twinners[7]; 50 | 51 | /************************************************************************ 52 | * PROTOTYPES 53 | ************************************************************************/ 54 | void mode_select(void); 55 | void coinpage_setup(void); 56 | void mode_mood_sounds(void); 57 | WORD look_or_ignore(WORD pa0,WORD pa7); 58 | void move_cursor(short pa0); 59 | void change_letter_colors(WORD *pa1); 60 | void shift_letters(short pa1); 61 | void mode_shaker(void); 62 | void mode_select_timeout(void); 63 | void coinpage_setup(void); 64 | void p15_coin(OBJECT **pa10,char *pa8,short x,short y); 65 | void pds_coin(OBJECT **pa10,char *pa8,short x,short y); 66 | void player_prompts_proc(void); 67 | 68 | void tournament_tree(WORD pa10); 69 | void ttext_flasher(void); 70 | void ttf_sleep(OBJECT *pa0); 71 | 72 | 73 | /************************************************************************ 74 | * MACROS 75 | ************************************************************************/ 76 | 77 | #endif /* __mkmode_h_ */ -------------------------------------------------------------------------------- /MKOPT.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkopt.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Apr 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Options Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkopt_h__ 14 | #define __mk_mkopt_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define OPT_START 0x00 // option - start the game 20 | #define OPT_GAME 0x01 // option - game setup 21 | #define OPT_CONTROL 0x02 // option - joy configuration 22 | #define OPT_MUSIC 0x03 // option - music controls 23 | #define OPT_MAX_SEL 0x03 // max # of option selections 24 | #define OPT_CREDIT 0x04 // option - secret credits 25 | 26 | /* cube controls */ 27 | #define OPT_CUBE_X 114 28 | #define OPT_CUBE_Y 130 29 | 30 | #define CUBE_SPIN 0x3 31 | 32 | /* dragon controls */ 33 | #define DRAGON_SPIN 0x00 // continue spinning 34 | #define DRAGON_FINISH 0x01 // hurry up and finish 35 | #define DRAGON_STOP 0x02 // stop moving 36 | 37 | #define DRAGON_SPIN_SLOW 0x03 // normal spin speed 38 | #define DRAGON_SPIN_FAST 0x01 // fast spin speed 39 | 40 | #define OPT_DRAGON_X 98 41 | #define OPT_DRAGON_Y 36 42 | 43 | /* start of screen positions */ 44 | #define OPT_TOP_X_L 16 45 | #define OPT_TOP_Y 96 46 | #define OPT_TOP_X_C 238 47 | #define OPT_EXIT_X 138 48 | #define OPT_CC_X_L 152 49 | #define OPT_CC_X1_C 60 50 | #define OPT_CC_X2_C (SCRRGT-60) 51 | 52 | /* option joy control */ 53 | #define OPTION_EXIT P1P2_ACTION 54 | #define OPT_P1MASK (0x0000ffff) 55 | #define OPT_P2MASK (0xffff0000) 56 | 57 | /* option screen index */ 58 | #define OPT_SCRN_GAME 0 59 | #define OPT_SCRN_MUSIC 1 60 | #define OPT_SCRN_CONTROLS 2 61 | #define OPT_SCRN_CONTROLS2 3 62 | #define OPT_SCRN_CHEAT 4 63 | #define OPT_SCRN_CHEAT1 5 64 | 65 | /* Indexes into option text */ 66 | #define OIND_VIOLENCE 0x00 67 | #define OIND_ON 0x01 68 | #define OIND_OFF 0x02 69 | #define OIND_BLOOD 0x03 70 | #define OIND_DIFF 0x04 71 | #define OIND_MED 0x05 72 | #define OIND_VEASY 0x06 73 | #define OIND_EASY 0x07 74 | #define OIND_VHARD 0x08 75 | #define OIND_HARD 0x09 76 | //#define OIND_RGB 0x0a 77 | //#define OIND_NTSC 0x0b 78 | #define OIND_MONO 0x0c 79 | #define OIND_STEREO 0x0d 80 | #define OIND_EXIT 0x0e 81 | #define OIND_MASTER_VC 0x0f 82 | //#define OIND_MUSIC_TEST 0x18 83 | #define OIND_MUSIC 0x11 84 | #define OIND_SOUND 0x12 85 | //#define OIND_SOUND_TEST 0x17 86 | #define OIND_SOUND_FX 0x14 87 | #define OIND_PAN 0x15 88 | #define OIND_MONITOR 0x16 89 | #define OIND_SILENT 0x19 90 | #define OIND_QUIET 0x1a 91 | #define OIND_ROCKIN 0x1b 92 | #define OIND_KRANKED 0x1c 93 | #define OIND_HP 0x1d 94 | #define OIND_LP 0x1e 95 | #define OIND_HK 0x1f 96 | #define OIND_LK 0x20 97 | #define OIND_RUN 0x21 98 | #define OIND_BLOCK 0x22 99 | #define OIND_SQUARE 0x23 100 | #define OIND_TRIANGLE 0x24 101 | #define OIND_CIRCLE 0x25 102 | #define OIND_X 0x26 103 | #define OIND_L1 0x27 104 | #define OIND_L2 0x28 105 | #define OIND_R1 0x29 106 | #define OIND_R2 0x2a 107 | #define OIND_NOTASSIGN 0x2b 108 | #define OIND_SHANG 0x2c // shang morph 109 | #define OIND_DISABLED 0x2d 110 | #define OIND_OPPONENT 0x2e 111 | #define OIND_ALL 0x2f 112 | #define OIND_CLOCK 0x30 113 | #define OIND_FREEPLAY 0x31 114 | #define OIND_SMOKE 0x32 115 | #define OIND_ENABLED 0x33 116 | #define OIND_LR 0x34 117 | #define OIND_RL 0x35 118 | #define OIND_FATAL_TIME 0x36 119 | #define OIND_ROUND 0x37 120 | #define OIND_MATCH_DEAD 0x38 121 | #define OIND_SELECT 0x39 122 | #define OIND_VS 0x3a 123 | #define OIND_VOICE 0x3b 124 | 125 | #define OIND_END 0xff 126 | 127 | /* valid buttons for SONY PSX */ 128 | #define M_TRI 0x0010 129 | #define M_X 0x0040 130 | #define M_CIRCLE 0x0020 131 | #define M_SQUARE 0x0080 132 | #define M_L2 0x0002 133 | #define M_L1 0x0008 134 | #define M_R2 0x0000 135 | #define M_R1 0x0004 136 | 137 | #define B_TRI 4 138 | #define B_X 6 139 | #define B_CIRCLE 5 140 | #define B_SQUARE 7 141 | #define B_L1 3 142 | #define B_L2 1 143 | #define B_R1 2 144 | #define B_R2 0 145 | 146 | /* opt control lookup values */ 147 | #define OCL_HP 0 148 | #define OCL_LP 1 149 | #define OCL_HK 2 150 | #define OCL_LK 3 151 | #define OCL_RUN 4 152 | #define OCL_BLOCK 5 153 | #define OCL_OFF 6 154 | 155 | /* list structures for options */ 156 | typedef struct optlst 157 | { 158 | OBJECT *lobj; // label object 159 | OBJECT *cobj; // choice object 160 | WORD *var; // ptr to varible that will store results 161 | short y; // line text is located on 162 | short xlabel; // x position of label 163 | short xchoice; // x posiiton of choices 164 | WORD lab_index; // label index into graphics info list 165 | BYTE *choicetbl; // ptr to a list of choices 166 | FUNC toggle_func; // toggle function 167 | WORD index; // index into choice table 168 | } OPTLIST; 169 | 170 | typedef struct optpage 171 | { 172 | BYTE u0,v0; // offset within tpage (u0 even) 173 | BYTE w,h; // width & height of sprite 174 | } OPTPAGE; 175 | 176 | typedef struct optmap 177 | { 178 | WORD b_index; // button index value (hardware bit value) 179 | WORD *storage; // variable to store remap 180 | } OPTMAP; 181 | 182 | /* color scheme */ 183 | #define OPT_NORMAL_COLOR optextbg_PAL 184 | #define OPT_HILITE_COLOR YELLOW_p 185 | 186 | /* active process for test */ 187 | #define OPT_ACTIVE_NONE 0x00 188 | #define OPT_ACTIVE_MUSIC PID_OPTMUSIC 189 | #define OPT_ACTIVE_SOUND PID_OPTSOUND 190 | 191 | #define OPT_MAX_MUSIC 5 // max # of songs 192 | #define OPT_MAX_SOUND 50 // max # of sfx 193 | 194 | /* 195 | * RAM 196 | */ 197 | __EXTERN__ WORD option_tpage; 198 | __EXTERN__ WORD opt_mnum; // current music # 199 | __EXTERN__ WORD opt_snum; // sound # 200 | __EXTERN__ WORD opt_active; // (0=none active, 1=music active, 2=sound active) 201 | __EXTERN__ WORD opt_done; // flag: option select done 202 | 203 | /* 204 | * PROTOTYPES 205 | */ 206 | void opt_main(void); 207 | void opt_dragon(void); 208 | void opt_logo(void); 209 | 210 | void option_select(WORD scrnindex); 211 | void option_toggle(void); 212 | void option_exit(void); 213 | void option_test_toggle(WORD aflag,WORD max); 214 | void option_mtest(void); 215 | void option_stest(void); 216 | void soundtest_proc(void); 217 | void option_toggle_sound(void); 218 | 219 | WORD init_option_table(OPTLIST *otbl); 220 | OBJECT *get_option_object(short x,short y,WORD lindex); 221 | void opt_disp_num(WORD sndnum,WORD x,WORD y,WORD id); 222 | void opt_pad_setup(OPTMAP *omap, WORD *padmap); 223 | void opt_pad_remap(OPTMAP *omap, WORD *padmap); 224 | void opt_proc(void); 225 | void opt_p2control(void); 226 | 227 | /* 228 | * MACROS 229 | */ 230 | #define center_opt_obj(_ta8) (_ta8)->oxpos.u.intpos=(_ta8)->oxvel.u.intpos-(_ta8)->header.t_width/2; 231 | 232 | /* sony psx hardware joypad */ 233 | #define pad_tri l_hp 234 | #define pad_x l_lk 235 | #define pad_circle l_hk 236 | #define pad_square l_lp 237 | #define pad_r1 l_block 238 | #define pad_r2 l_up 239 | #define pad_l1 l_down 240 | #define pad_l2 l_left 241 | 242 | #endif /* __mk_mkopt_h__ */ 243 | 244 | -------------------------------------------------------------------------------- /MKOS.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkos.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Operating System Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_os_h__ 14 | #define __mk_os_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define NUM_PROCESS 94 /* total # of process in the system */ 20 | 21 | /* p_comp_flag sync values */ 22 | #define PC_CLEAR 0x0000 // no sync 23 | #define PC_DIZZY 0x0002 // dude dizzy sync 24 | #define PC_ROBO_AIR 0x0003 // robo2 air grab slam sync 25 | #define PC_SCREAM_WAKE 0x0004 // lia scream sync 26 | #define PC_PSEL_JOIN 0x0005 // psel join in sync 27 | #define PC_FLASH_WAKE 0x0006 // psel white box flash sync 28 | #define PC_SPEECH_WAKE 0x0007 // psel speech call sync 29 | #define PC_ROBO_LIMB_WAKE 0x0008 // robot tele explode limb sync 30 | #define PC_NET_WAKE 0x0009 // robot net sync 31 | #define PC_SUSPEND_WAKE 0x000a // general suspend wake sync 32 | #define PC_TARGET_WAKE 0x000b // robot cruise missle target sync 33 | #define PC_RHAT_WAKE 0x000c // kung lao hat wake 34 | #define PC_PSEL_WAIT 0x000d // waiting for psel wake 35 | #define PC_CURSOR_LOOP 0x000e // select cursor loop 36 | #define PC_WAITF_WAKE 0x000f // wait forever wakeup 37 | #define PC_WAIT_SPEAR2 0x0010 // at waiting_for_spear2 38 | #define PC_WAIT_SPEAR 0x0011 // at waiting_for_spear 39 | #define PC_BLOCK_SHAKE_WAKE 0x0012 // wake from block_shake_ani 40 | #define PC_FATAL_WAIT 0x0013 // fataility waiting 41 | #define PC_PIT_STOP 0x0014 // end of pit scroll 42 | #define PC_INIT_DONE 0x0015 // initials done 43 | #define PC_SCORP_WAIT 0x0016 // scorp_waiting 44 | #define PC_MULTI_DUMMY 0x0017 // multi proc dummy sleep 45 | /* Process strorage */ 46 | typedef struct ps_data { 47 | WORD *p_joyport; /* points to joystick switch port location */ 48 | struct object *p_otherguy; /* ptr to other guys object */ 49 | struct process *p_otherproc; /* other guys process */ 50 | OBJECT *p_slave; /* slave object */ 51 | ADDRESS *p_anitab; /* current animation table */ 52 | ADDRESS p_store1; /* long storage #1 */ 53 | ADDRESS p_store2; /* long storage #2 */ 54 | ADDRESS p_store3; /* long storage #3 */ 55 | ADDRESS p_store4; /* long storage #4 */ 56 | ADDRESS p_store5; /* long storage #5 */ 57 | ADDRESS p_store6; /* long storage #6 */ 58 | ADDRESS p_store7; /* long storage #7 */ 59 | ADDRESS p_store8; /* long storage #8 */ 60 | LONG p_dronevar1; /* drone variable 1 */ 61 | WORD p_otheract; /* drone info: other dudes last action */ 62 | WORD p_anirate; /* animation speed */ 63 | WORD p_anicount; /* animation count */ 64 | WORD p_action; /* current action */ 65 | short p_ganiy; /* grounded animation point y */ 66 | WORD p_flags; /* more flags */ 67 | WORD p_downcount; /* # of ticks i have been ducking */ 68 | WORD p_stk; /* strike table i am using */ 69 | WORD p_hitby; /* i was "hit by" this last */ 70 | WORD p_damage; // (16) - damage (for combo message) 71 | WORD p_power; // (8) - power (for invincibilities) 72 | WORD p_block; // (8) - block count 73 | WORD p_hit; // (8) - hit count 74 | } PDATA; 75 | 76 | /* Process Structure */ 77 | typedef struct process { 78 | struct process *plink; /* link to next process, THIS MUST BE FIRST FIELD IN STRUCTURE */ 79 | 80 | CONTEXT p_context; /* needed for context switching, this must be 81 | the first things in any context structure, otherwise 82 | context switching code will not work! */ 83 | 84 | PDATA pdata; /* process data */ 85 | WORD procid; /* process ID */ 86 | WORD ptime; /* sleep timer */ 87 | WORD joyindex; /* joy jump table index */ 88 | WORD p_comp_flag; /* used in place of looking if a process is at a code point */ 89 | 90 | struct object *pa8; /* ptr to object */ 91 | void *pa9; /* ptr to animation table */ 92 | 93 | ADDRESS a0; /* temp storage for parameter passing */ 94 | ADDRESS a1; /* temp storage for parameter passing */ 95 | ADDRESS a2; /* temp storage for parameter passing */ 96 | ADDRESS a3; /* temp storage for parameter passing */ 97 | ADDRESS a4; /* temp storage for parameter passing */ 98 | ADDRESS a5; /* temp storage for parameter passing */ 99 | ADDRESS a6; /* temp storage for parameter passing */ 100 | ADDRESS a7; /* temp storage for parameter passing */ 101 | ADDRESS a10; /* temp storage for parameter passing */ 102 | ADDRESS a11; /* temp storage for parameter passing */ 103 | ADDRESS a14; /* temp storage for parameter passing */ 104 | } PROCESS; 105 | 106 | /* 107 | * RAM 108 | */ 109 | __EXTERN__ PROCESS *active_head; /* ptr to head of active process list */ 110 | __EXTERN__ PROCESS *free_head; /* ptr to head of available process list */ 111 | __EXTERN__ PROCESS *current_proc; /* ptr to the ptr of the current process */ 112 | __EXTERN__ PROCESS process_ram[NUM_PROCESS]; /* memory allocation for all processes */ 113 | __EXTERN__ MCONTEXT main_context; /* storage for main context switcher */ 114 | __EXTERN__ volatile WORD irq_timer; /* irq timer */ 115 | __EXTERN__ volatile WORD tick; /* game clock tick counter */ 116 | 117 | #if MK_EJBBUG 118 | __EXTERN__ WORD pcount; 119 | __EXTERN__ WORD pmax; 120 | #endif 121 | 122 | /* 123 | * PROTOTYPES 124 | */ 125 | void process_initialize(void); 126 | PROCESS *process_create(WORD,void (*func)(void)); 127 | void process_kill(PROCESS *); 128 | void process_kill_class(WORD,WORD); 129 | PROCESS *process_exist(WORD,WORD); 130 | void process_suicide(void); 131 | void process_dispatch(void); 132 | void process_sleep(WORD); 133 | void timer_interrupt(void); 134 | 135 | /* IN CONTEXT.S */ 136 | void context_switch(CONTEXT *,CONTEXT *); 137 | void context_kill_switch(CONTEXT *); 138 | void context_init_main(CONTEXT *); 139 | void context_jump(CONTEXT *); 140 | 141 | /* 142 | * MACROS 143 | */ 144 | #define CREATE(id,func) process_create(id,func) 145 | 146 | /* stack_jump, this routine resets the stack and jumps to the 147 | specified routine, essentially starting from scratch 148 | */ 149 | #define stack_jump_joy(_wake,_joy) \ 150 | { \ 151 | current_proc->joyindex=(_joy); \ 152 | stack_jump(_wake); \ 153 | } 154 | 155 | #define stack_jump(_wakeup) \ 156 | { \ 157 | current_proc->p_context.c_frameptr=current_proc->p_context.c_stackptr=(ADDRESS)&(current_proc->p_context.c_stack[STKSIZE-3]); \ 158 | current_proc->p_context.c_wakeup=(ADDRESS)(_wakeup); \ 159 | context_jump(&(current_proc->p_context)); \ 160 | } 161 | 162 | 163 | #endif /* __mk_os_h__ */ 164 | 165 | -------------------------------------------------------------------------------- /MKPAL.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkpal.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III pal Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkpal_h__ 14 | #define __mk_mkpal_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define NUM_F_PALS 30 //128 /* # of foreground palettes */ 20 | #define NUM_B_PALS 34 //128 /* # of background palettes */ 21 | #define NUM_PALS (NUM_F_PALS+NUM_B_PALS) /* # of dynamic allocated palettes */ 22 | 23 | #define CLUT_SIZE 256 //64 /* # of colors in a clut */ 24 | #define CLUT_SHIFT_SIZE 8 //6 /* 2^x=CLUT_SIZE, used for shifting */ 25 | #define CLUT_FACTOR 4 //16 /* # of cluts per row */ 26 | #define CLUT_ID_SHIFT 4 //2 /* shift conversion factor id->palram index */ 27 | 28 | #define FORE_CLUT_START_X CLUT_BASE_PAL_X /* vram start for Foreground CLUTS X addr */ 29 | #define FORE_CLUT_START_Y CLUT_BASE_PAL_Y /* vram start for Foreground CLUTS Y addr */ 30 | 31 | #define BKGD_CLUT_START_X (FORE_CLUT_START_X+((NUM_F_PALS%CLUT_FACTOR)<opal) 110 | 111 | #endif /* __mk_mkpal_h__ */ 112 | 113 |  -------------------------------------------------------------------------------- /MKPROP.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkprop.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III BODY Propelled Moves 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkprop_h__ 14 | #define __mk_mkprop_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* prop offsets */ 21 | #define PROP_KANO_CANNON 0x00 // kano cannonball 22 | #define PROP_SONYA_BIKE 0x01 // sonya bike kick 23 | #define PROP_IND_CHARGE 0x02 // indian charge 24 | #define PROP_JAX_DASH 0x03 // jax dash punch 25 | #define PROP_SZ_DECOY 0x04 // sub zero decoy 26 | #define PROP_LIA_FLY 0x05 // lia fly 27 | #define PROP_LAO_TELE 0x06 28 | #define PROP_LAO_ANGLE_KICK 0x07 29 | #define PROP_ROBO_TELE 0x08 30 | #define PROP_ROBO_AIR_GRAB 0x09 31 | #define PROP_TELE_EXP 0x0a 32 | #define PROP_LIA_AFLOAT 0x0b 33 | #define PROP_SONYA_SWAVE 0x0c 34 | #define PROP_LK_BIKE 0x0d 35 | #define PROP_LK_SUPER 0x0e 36 | #define PROP_SG_POUNCE 0x0f 37 | #define PROP_SZ_SLIDE 0x10 38 | #define PROP_SW_ZOOM 0x11 39 | #define PROP_SW_STICK 0x12 40 | #define PROP_TUSK_BLUR 0x13 41 | #define PROP_SG_QUAKE 0x14 42 | #define PROP_NJ_SLIDE 0x15 43 | #define PROP_SCORP_TELE 0x16 44 | #define PROP_REP_DASH 0x17 45 | #define PROP_JADE_PROP 0x18 46 | #define PROP_MIL_TELE 0x19 47 | #define PROP_MIL_ROLL 0x1a 48 | #define PROP_ERMAC_TELE 0x1b 49 | #define PROP_KANO_UBALL 0x1c 50 | 51 | #define LSPEED (0x70000) // robo limb explosion speed 52 | 53 | /* 54 | * RAM 55 | */ 56 | 57 | /* 58 | * PROTOTYPES 59 | */ 60 | void do_body_propell(WORD); 61 | 62 | void prop_do_kano_upball(void); 63 | void upball_x_damping(OBJECT *obj); 64 | 65 | void prop_do_mileena_prop(void); 66 | void mileena_prop_hit(void); 67 | void post_mileena_prop(void); 68 | void mileena_prop_blocked(void); 69 | 70 | void prop_do_mileena_tele(void); 71 | void mileena_teleport_call(void); 72 | 73 | void prop_do_jade_prop(void); 74 | void jade_prop_hit(void); 75 | void jade_prop_damping(OBJECT *obj); 76 | 77 | void prop_do_reptile_dash(void); 78 | void reptile_dash_hit(void); 79 | 80 | void prop_do_ermac_tele(void); 81 | void prop_do_scorp_tele(void); 82 | void sctele_scalla_1(void); 83 | void sctele_scalla_2(void); 84 | void redirect_scroller(FUNC p_ar7); 85 | 86 | void new_float_ani(void); 87 | void prop_jax_dash_punch(void); 88 | void dash_hit(OBJECT *); 89 | void dash_unblur(OBJECT *); 90 | 91 | void prop_sonya_bike_kick(void); 92 | void bike_hit(OBJECT *); 93 | void bike_scan_call(void); 94 | void bike_hit_call(OBJECT *); 95 | 96 | void prop_do_lao_angle(void); 97 | void lao_angle_scan(void); 98 | 99 | void prop_do_lao_tele(void); 100 | 101 | void prop_kano_cannon_ball(void); 102 | void kroll_hit(OBJECT *); 103 | 104 | void prop_ind_charge(void); 105 | void icharge_hit(OBJECT *); 106 | 107 | void prop_do_sz_decoy(void); 108 | void decoy_proc(void); 109 | void shake_collision_check(short); 110 | WORD decoy_collision_check(void); 111 | void decoy9(void); 112 | 113 | void prop_do_tele_explode(void); 114 | void robo_limb_in(void); 115 | void robo_limb_out(void); 116 | void teleport_next_to(void); 117 | void cyrax_implode(void); 118 | 119 | void prop_do_robo_air_grab(void); 120 | void prop_do_robo_tele(void); 121 | void tele_scan(void); 122 | void tele_scan2(void); 123 | 124 | void prop_do_lia_fly(void); 125 | void prop_do_lia_stay_afloat(void); 126 | void main_hover_loop(void); 127 | void settle_down(OBJECT *); 128 | void flight_move_ani(OBJECT *); 129 | void accelerate_x(OBJECT *,long); 130 | void hover_sleep_1(OBJECT *); 131 | void set_float_ani(WORD); 132 | void hover_land(OBJECT *); 133 | 134 | void prop_do_sonya_square_wave(void); 135 | 136 | void prop_do_slide(void); 137 | #define prop_do_ninja_slide prop_do_slide 138 | void slide_is_over(OBJECT *obj); 139 | 140 | void prop_do_sg_quake(void); 141 | void prop_do_sg_pounce(void); 142 | void pounce_jsrp(long pa0,FUNC pa11); 143 | void blur_catchup(OBJECT *obj); 144 | void pounce_scan(void); 145 | void pounce_adjust_him(void); 146 | void pounce_ground_him(OBJECT *pa8); 147 | 148 | void prop_do_super_kang(void); 149 | void super_kick_land(OBJECT *obj); 150 | 151 | void prop_do_lk_bike(void); 152 | void bike_call(void); 153 | void biked_suspend(void); 154 | 155 | void prop_do_tusk_blur(void); 156 | void tusk_blur_block(OBJECT *pa8); 157 | void reptile_dash_blocked(OBJECT *pa8); 158 | void blur_blocked_setup(void); 159 | 160 | 161 | void prop_do_stick_sweep(void); 162 | 163 | void prop_do_swat_zoom(void); 164 | void zoom_hit(OBJECT *pa8); 165 | void zoom_blocked(OBJECT *pa8); 166 | void zoom_damping(OBJECT *pa8); 167 | void zoom_ground_scan(OBJECT *pa8); 168 | #define scorpion_tele_blocked zoom_blocked 169 | 170 | 171 | /* 172 | * MACROS 173 | */ 174 | #define local_ochar_sound(_off) ochar_sound(_off) 175 | 176 | // #define no_action(_proc) (_proc)->pdata.p_action=0 177 | 178 | #define set_his_p_action(_la0,_la1) (((_la0)->pdata.p_otherproc)->pdata.p_action=(_la1)) 179 | 180 | #endif /* __mk_mkprop_h__ */ 181 | 182 | -------------------------------------------------------------------------------- /MKR1.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkr1.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Mar 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Round Intro Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkr1_h__ 14 | #define __mk_mkr1_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* 21 | * RAM 22 | */ 23 | 24 | /* 25 | * PROTOTYPES 26 | */ 27 | void do_round_jsrps(void); 28 | void psycho_score_onoff(void); 29 | WORD pso3(void); 30 | void wf3(char *pa8,FUNC pa14); 31 | void p1_supercap_proc(void); 32 | void p2_supercap_proc(void); 33 | void p1_hadicap_proc(void); 34 | void p2_hadicap_proc(void); 35 | void p1_nopower_proc(void); 36 | void p2_nopower_proc(void); 37 | void hand2(WORD pa11,WORD pa10); 38 | PROCESS *wait_for_charge(void); 39 | void msg1(char *msg); 40 | void msg_round1(void); 41 | void switcheroo_proc(void); 42 | void switcheroo_check(ADDRESS *pa11); 43 | void dark_fight_proc(void); 44 | void dark_sleep(void); 45 | void lights_out(void); 46 | void lights_on(void); 47 | void dark_velocities(void); 48 | void lights_on_hit(void); 49 | void lights_on_slam(void); 50 | void space_game(void); 51 | void post_wf_smoke(void); 52 | void post_wf_noob(void); 53 | void post_wf_shao(void); 54 | void post_wf_motaro(void); 55 | void postw2(WORD pa0); 56 | void special_game_init(void); 57 | void regenerate_proc(void); 58 | void r_shadow_fighting(void); 59 | void r_force_curback(char *pa8, WORD pa11); 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | /* 69 | * MACROS 70 | */ 71 | 72 | #endif /* __mk_mkr1_h__ */ 73 | 74 | -------------------------------------------------------------------------------- /MKREPELL.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkrepell.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Repell Player Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkrepell_h__ 14 | #define __mk_mkrepell_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | #define REPELL_DISTANCE SCX(0x40) /* repell distance for players */ 21 | #define SCREEN_DISTANCE SCX(0x130) /* screen distance allowed for players */ 22 | #define GRACE_PIXELS SCX(0x30) /* grace factor for distances */ 23 | 24 | /* 25 | * RAM 26 | */ 27 | 28 | /* 29 | * PROTOTYPES 30 | */ 31 | void repell(void); 32 | void get_player_hilo(OBJECT *); 33 | inline void get_player_anis(void); 34 | void stuff_a6a7(void); 35 | 36 | 37 | /* 38 | * MACROS 39 | */ 40 | 41 | #endif /* __mk_mkrepell_h__ */ 42 | 43 | -------------------------------------------------------------------------------- /MKSEL.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mksel.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III PLAYER SELECT HEADER 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mksel_h__ 14 | #define __mk_mksel_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define MAX_MAP_SELECT 6 /* # of maps/mountains to select from */ 20 | 21 | 22 | #define CTHICK 4 23 | 24 | #define X_SIZE 44 25 | #define Y_SIZE 60 26 | 27 | #define MUG1_X (SCX(0x45)+1-3) 28 | #define MUG1_Y (SCY(0x25)+7) 29 | #define X_SPACE (SCX(53)) 30 | #define Y_SPACE (SCY(65)) 31 | 32 | #define S2_OCHAR 2 33 | #define S12_OCHAR 12 34 | #define S6_OCHAR 6 35 | #define S8_OCHAR 8 36 | 37 | #define DRONE1_X (SCX(0x25)-8) 38 | #define DRONE2_X (SCRRGT-SCX(0x24)+2) 39 | 40 | typedef struct mugs 41 | { 42 | OIMGTBL *m_mug; // ptr to mug info for character 43 | short m_xpos; // x pos of mug 44 | short m_ypos; // y pos of mug 45 | WORD m_char; // char id of character 46 | WORD m_pad; // padding 47 | } MUGS; 48 | 49 | 50 | /* auto select directions */ 51 | #define A_UP 1 52 | #define A_DOWN 2 53 | #define A_LEFT 3 54 | #define A_RIGHT 4 55 | 56 | /* 57 | * RAM 58 | */ 59 | __EXTERN__ volatile WORD f_fighter_load; /* set when fighter data is loaded */ 60 | __EXTERN__ WORD f_speech; /* fix double repeat name bug (1=p1 spoken, 2=p2 spoken) */ 61 | 62 | /* 63 | * PROTOTYPES 64 | */ 65 | void join_in_during_psel(WORD *); 66 | void player_select(void); 67 | void player_joinin(void); 68 | void psel6(void); 69 | void create_cursor_procs(void); 70 | inline void force_psel_choice(WORD); 71 | void box_flip_proc(void); 72 | void p1_select(void); 73 | void p2_select(void); 74 | void cmove9(void); 75 | void curs3(WORD); 76 | WORD is_move_legal(WORD *); 77 | void new_cursor_calla(WORD *,short,short); 78 | #define new_cursor_position(_tbl,_xoff,_yoff) new_cursor_calla(_tbl,_xoff,_yoff) 79 | WORD a0_ochar_to_position(WORD ochar); 80 | void show_credits(void); 81 | 82 | void print_credits(void); 83 | void psel_drone_1(void); 84 | void psel_drone_2(void); 85 | void psd4(WORD); 86 | void select_speech(void); 87 | void cursor_sound(WORD p1_snd,WORD p2_snd); 88 | void flash_sleep(void *); 89 | 90 | void auto_player_select(void); 91 | void new_auto_position(WORD *pa2,short pa3,short pa4); 92 | 93 | void position_badge(void); 94 | void badge_spinner(void); 95 | 96 | void select_background(void); 97 | 98 | 99 | /* externs */ 100 | 101 | /* 102 | * MACROS 103 | */ 104 | #define p_mychar p_store6 105 | #define p_hischar p_otherproc 106 | 107 | #endif /* __mk_mksel_h__ */ 108 | 109 | -------------------------------------------------------------------------------- /MKSELNEW.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mksel.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III PLAYER SELECT HEADER 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mksel_h__ 14 | #define __mk_mksel_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define MAX_MAP_SELECT 6 /* # of maps/mountains to select from */ 20 | 21 | 22 | #define CTHICK 4 23 | 24 | #define X_SIZE 44 25 | #define Y_SIZE 60 26 | 27 | #define MUG1_X (SCX(0x1f)+1-3) 28 | #define MUG1_Y (SCY(0x1b)+7) 29 | #define X_SPACE (SCX(49)) 30 | #define Y_SPACE (SCY(55)) 31 | 32 | #define DRONE1_X (SCX(0x25)-8) 33 | #define DRONE2_X (SCRRGT-SCX(0x24)+2) 34 | 35 | 36 | typedef struct mugs 37 | { 38 | OIMGTBL *m_mug; // ptr to mug info for character 39 | short m_xpos; // x pos of mug 40 | short m_ypos; // y pos of mug 41 | WORD m_char; // char id of character 42 | WORD m_pad; // padding 43 | } MUGS; 44 | 45 | typedef struct 46 | { 47 | WORD pd_num; 48 | void *pd_fldata; 49 | WORD *pd_joy; 50 | WORD *pd_p1char; 51 | WORD *pd_p2char; 52 | FUNC pd_func; 53 | MUGS *pd_mug; 54 | WORD pd_action; 55 | 56 | WORD *pd_pal; 57 | WORD pd_oid; 58 | WORD pd_y; 59 | WORD pd_pid; 60 | WORD pd_x; 61 | WORD pd_zval; 62 | } PDDATA; 63 | 64 | 65 | /* auto select directions */ 66 | #define MVUP 1 67 | #define MVDN 2 68 | #define MVLF 3 69 | #define MVRT 4 70 | 71 | /* 72 | * RAM 73 | */ 74 | __EXTERN__ volatile WORD f_fighter_load; /* set when fighter data is loaded */ 75 | __EXTERN__ WORD f_speech; /* fix double repeat name bug (1=p1 spoken, 2=p2 spoken) */ 76 | 77 | /* 78 | * PROTOTYPES 79 | */ 80 | void join_in_during_psel(WORD *); 81 | void player_select(void); 82 | void player_joinin(void); 83 | void psel6(void); 84 | void create_cursor_procs(void); 85 | void create_psel_proc(WORD pa0,WORD pa4,WORD *pa5,PDDATA *pa6,FUNC pa7); 86 | inline void force_psel_choice(WORD); 87 | void player_select_proc(void); 88 | void clip_psel_box(WORD pa0,OBJECT *obj); 89 | void cmove9(void); 90 | void curs3(WORD); 91 | WORD is_move_legal(WORD *); 92 | void new_cursor_calla(WORD *,short,short); 93 | #define new_cursor_position(_tbl,_xoff,_yoff) new_cursor_calla(_tbl,_xoff,_yoff) 94 | WORD a0_ochar_to_position(WORD ochar); 95 | void show_credits(void); 96 | 97 | void print_credits(void); 98 | OBJECT *make_ochar_psel_guy(WORD pa1,short pax); 99 | void psel_drone(void); 100 | void psd4(WORD); 101 | void select_speech(void); 102 | void cursor_sound(WORD p1_snd,WORD p2_snd); 103 | void flash_sleep(void *); 104 | 105 | void auto_player_select(void); 106 | void new_auto_position(WORD *pa2,short pa3,short pa4); 107 | 108 | void replace_drone(void); 109 | 110 | 111 | void position_badge(void); 112 | void badge_spinner(void); 113 | 114 | void select_background(void); 115 | 116 | 117 | /* externs */ 118 | 119 | /* 120 | * MACROS 121 | */ 122 | #define p_mychar p_store6 123 | #define p_hischar p_otherproc 124 | #define p_cursor_num p_otherguy 125 | 126 | #endif /* __mk_mksel_h__ */ 127 | 128 | -------------------------------------------------------------------------------- /MKSLAM.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkslam.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III Slam/Special Moves Routines 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkslam_h__ 14 | #define __mk_mkslam_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | 21 | /* 22 | * RAM 23 | */ 24 | 25 | /* 26 | * PROTOTYPES 27 | */ 28 | void do_air_slam(void); 29 | void do_body_slam(void); 30 | 31 | void common_slam(WORD); 32 | void xfer_him_to_flipped_pause(WORD); 33 | void flipped_pause(void); 34 | void xfer_to_thrown(FUNC); 35 | void grab_animation(WORD); 36 | void body_slam_init(OBJECT *); 37 | void air_slam_init(OBJECT *,WORD,WORD); 38 | void stick_him_with_me(OBJECT *); 39 | 40 | void jade_slam(void); 41 | void mileena_slam(void); 42 | void kitana_slam(void); 43 | 44 | void scorp_air_slam(void); 45 | 46 | void nj_smoke_slam(void); 47 | #define noob_slam nj_smoke_slam 48 | void nj_slam(void); 49 | void njs13(void); 50 | 51 | 52 | void smoke_air_slam(void); 53 | void smoke_slam(void); 54 | #define thrown_by_smoke thrown_by_tusk 55 | 56 | void do_back_breaker(void); 57 | void bb_fall_call(void); 58 | void post_broken_back(void); 59 | void last_knockdown_frame(void); 60 | 61 | 62 | void kano_air_body_slam(void); 63 | void kano_slam(void); 64 | void thrown_by_kano(void); 65 | void air_slamed_by_kano(void); 66 | 67 | void sonya_slam(void); 68 | void thrown_by_sonya(void); 69 | #define thrown_by_mileena thrown_by_sonya 70 | void thrown_by_nj(void); 71 | void slam_damage(OBJECT *obj); 72 | 73 | void lao_slam(void); 74 | #define thrown_by_lao thrown_by_lia 75 | 76 | void jax_slam(void); 77 | void jax_multi_slam_pose(WORD); 78 | void jax_slam_sleep(WORD); 79 | inline WORD read_lp_tick_state(OBJECT *); 80 | void thrown_by_jax(void); 81 | 82 | void indian_slam(void); 83 | #define thrown_by_indian thrown_by_lia 84 | 85 | void sz_slam(void); 86 | void thrown_by_sz(void); 87 | 88 | void sw_slam(void); 89 | #define thrown_by_swat thrown_by_lia 90 | 91 | void lia_slam(void); 92 | void thrown_by_lia(void); 93 | 94 | void robo2_air_slam(void); 95 | void thrown_by_robo2(void); 96 | #define thrown_by_robo thrown_by_lia 97 | void robo2_slam(void); 98 | void robo1_slam(void); 99 | #define thrown_by_jade thrown_by_lia 100 | #define thrown_by_kitana thrown_by_lia 101 | 102 | void air_slamed_by_robo2(void); 103 | 104 | void grab_voice(void); 105 | void throw_voice(void); 106 | 107 | void tusk_slam(void); 108 | #define thrown_by_tusk thrown_by_lia 109 | 110 | void lk_slam(void); 111 | #define thrown_by_lk thrown_by_sonya 112 | 113 | void sg_slam(void); 114 | void thrown_by_sg(void); 115 | 116 | void st_slam(void); 117 | 118 | void ground_slammed_init(void); 119 | void drop_down_land(void); 120 | void drop_down_land_jump(void); 121 | 122 | 123 | /* 124 | * MACROS 125 | */ 126 | 127 | #endif /* __mk_mkslam_h__ */ 128 | 129 | -------------------------------------------------------------------------------- /MKSND.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mksound.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III sound Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mksound_h__ 14 | #define __mk_mksound_h__ 15 | 16 | #include "mk3snd.h" 17 | 18 | /* 19 | * DEFINITIONS 20 | */ 21 | 22 | /* sound priorities */ 23 | #define SP_WOOSH1 0x10*0x100 24 | #define SP_GROUND 0x18*0x100 25 | #define SP_BLOCK1 0x1f*0x100 26 | 27 | #define SP_DONTIN 0x30*0x100 // 30s = dont interupt myself 28 | #define SP_RUNRUN 0x31*0x100 29 | 30 | #define SP_ONLY1 0x40*0x100 // 40s = special (dont overlap) 31 | #define SP_WINDY1 0x41*0x100 32 | 33 | #define SP_EFFECT 0x50*0x100 34 | #define SP_HIT1 0x55*0x100 35 | #define SP_VOICE1 0x60*0x100 36 | #define SP_HIT2 0x61*0x100 37 | #define SP_KAHNVC 0x62*0x100 38 | #define SP_COIN 0x7f*0x100 39 | 40 | /* group offsets */ 41 | #define GP_FEMALE 0 42 | #define GP_MALE1 1 43 | #define GP_MALE2 2 44 | #define GP_MALE3 3 45 | #define GP_MALE4 4 46 | #define GP_ROBO 5 47 | #define GP_KANG 6 48 | #define GP_SHEEVA 7 49 | #define GP_SHAO_KAHN 8 50 | 51 | /* tracks of the various tunes */ 52 | #define TRK_ANIMALP1 3 /* animality ending part 1, ANIMAL1.RAW */ 53 | #define TRK_ANIMALP3 4 /* animality ending part 3, ANIMALIT.RAW */ 54 | #define TRK_BABYP3 5 /* babality ending part 3, BABALITY.RAW */ 55 | #define TRK_BANK 6 /* bank background, BANK.RAW */ 56 | #define TRK_BRIDGE 7 /* bridge background, BRIDGE.RAW */ 57 | #define TRK_BUYIN 8 /* buyin screen, BUYIN.RAW */ 58 | #define TRK_CHURCH 9 /* temple background, CHRUCH.RAW */ 59 | #define TRK_OPT_ATTRACT 10 /* attract mode, FASTATTR.RAW */ 60 | #define TRK_FATALP1 11 /* fatality ending part 1, FATAL1.RAW */ 61 | #define TRK_BABYP1 11 /* babality ending part 1, FATAL1.RAW */ 62 | #define TRK_FIGHT 12 /* fight, ROUND5.RAW */ 63 | #define TRK_FRIENDP1 13 /* friendship ending part 1, FRIEND1.RAW */ 64 | #define TRK_HIDDEN 42 /* hidden background, SPECIALM.RAW */ 65 | #define TRK_GRAVE 14 /* graveyard background, GRAVEYAR.RAW */ 66 | #define TRK_SOUL 15 /* souls background, GREENFLA.RAW */ 67 | #define TRK_LADDER_STRT 16 /* ladder start screen, ONEPLAY0.RAW */ 68 | #define TRK_ROOF 17 /* city roof background, ROOF.RAW */ 69 | #define TRK_RND1_FIGHT 18 /* round 1 fight, ROUND1.RAW */ 70 | #define TRK_RND2_FIGHT 19 /* round 2 fight, ROUND2.RAW */ 71 | #define TRK_RND3_FIGHT 20 /* round 3 fight, ROUND3.RAW */ 72 | #define TRK_RND4_FIGHT 21 /* round 4 fight, ROUND4.RAW */ 73 | #define TRK_SELECT 22 /* select screen, SELECTSC.RAW */ 74 | #define TRK_FATALP3 23 /* fatality ending part 3, SKFATAL.RAW */ 75 | #define TRK_FRIENDP3 24 /* friendship ending part 3, SKFRIEND.RAW */ 76 | #define TRK_ATTRACT 25 /* attract mode, SLOWATTR.RAW */ 77 | 78 | #define TRK_KANO_MERCY 29 /* all mercy endings, SMcharacter.RAW */ 79 | #define TRK_SONYA_MERCY 39 80 | #define TRK_JAX_MERCY 28 81 | #define TRK_INDIAN_MERCY 36 82 | #define TRK_SUBZERO_MERCY 41 83 | #define TRK_SWAT_MERCY 40 84 | #define TRK_LIA_MERCY 35 85 | #define TRK_ROBO1_MERCY 37 86 | #define TRK_ROBO2_MERCY 27 87 | #define TRK_LAO_MERCY 30 88 | #define TRK_TUSK_MERCY 26 89 | #define TRK_SHEEVA_MERCY 34 90 | #define TRK_SHANG_MERCY 33 91 | #define TRK_LIUKANG_MERCY 31 92 | #define TRK_SMOKE_MERCY 38 93 | #define TRK_MOTARO_MERCY 32 94 | 95 | #define TRK_KANO_WINS 48 /* all winning endings, STcharacter.RAW */ 96 | #define TRK_SONYA_WINS 59 97 | #define TRK_JAX_WINS 47 98 | #define TRK_INDIAN_WINS 52 99 | #define TRK_SUBZERO_WINS 61 100 | #define TRK_SWAT_WINS 60 101 | #define TRK_LIA_WINS 57 102 | #define TRK_ROBO1_WINS 54 103 | #define TRK_ROBO2_WINS 44 104 | #define TRK_LAO_WINS 49 105 | #define TRK_TUSK_WINS 43 106 | #define TRK_SHEEVA_WINS 56 107 | #define TRK_SHANG_WINS 55 108 | #define TRK_LIUKANG_WINS 50 109 | #define TRK_SMOKE_WINS 58 110 | #define TRK_MOTARO_WINS 51 111 | #define TRK_SK_WINS 46 112 | 113 | #define TRK_FLAWLESS 45 /* flawless victory, STFLAWLS.RAW */ 114 | 115 | #define TRK_STREET 53 /* street background, STREET.RAW */ 116 | #define TRK_PIT 62 /* the pit background, THEPIT.RAW */ 117 | #define TRK_SUBWAY 63 /* subway background, TRAIN.RAW */ 118 | 119 | #define TRK_VS 64 /* versus screen, VERSUSSC.RAW */ 120 | 121 | #define TRK_THRUSUB 65 /* thru subway to street, THRUSUBW.RAW */ 122 | #define TRK_THRUBANK 66 /* thru bank to city , THRUBANK.RAW */ 123 | 124 | #define TRK_YOUWIN 67 125 | 126 | /* smod definitions */ 127 | #define SMOD_SELECT 0x01 128 | #define SMOD_FIGHT 0x02 129 | #define SMOD_REWARD 0x03 130 | #define SMOD_HIDDEN 0x04 131 | #define SMOD_SK_DEATH 0x5 132 | #define SMOD_LADDER 0x6 133 | #define SMOD_CAST 0x7 134 | #define SMOD_BUYIN 0x8 135 | #define SMOD_VS 0x9 136 | #define SMOD_GAMEOVER 0xa 137 | 138 | 139 | /* 140 | * RAM 141 | */ 142 | __EXTERN__ LONG snd_module_status; 143 | __EXTERN__ WORD sound_background; 144 | 145 | /* 146 | * PROTOTYPES 147 | */ 148 | extern short triple_sndtab[]; 149 | extern short cd_vol_tbl[]; 150 | 151 | void group_sound(WORD); 152 | void kill_group_sound(WORD,OBJECT *); 153 | void his_group_sound(WORD); 154 | 155 | void rsnd_splish(void); 156 | void rsnd_stab(void); 157 | void rsnd_enemy_boom(void); 158 | void rsnd_klang(void); 159 | void rsnd_footstep(void); 160 | void rsnd_big_block(void); 161 | void rsnd_small_block(void); 162 | void rsnd_smack(void); 163 | void rsnd_med_smack(void); 164 | void rsnd_big_smack(void); 165 | void rsnd_rocks(void); 166 | void sweep_sounds(void); 167 | void rsnd_ground(void); 168 | void rsnd_whoosh(void); 169 | void rsnd_big_whoosh(void); 170 | void rsnd_react_voice(void); 171 | 172 | void next_table_sound(WORD pa0,short *pa1); 173 | void triple_sound(WORD pa0); 174 | void tsnd0(short *pa0,WORD pan); 175 | 176 | void psound_for_him(WORD offset); 177 | void nosounds(void); 178 | void send_code_a3(WORD pa3); 179 | 180 | void hob_ochar_sound(WORD hit_off,WORD block_off); 181 | void hit_or_blocked_sound(WORD hit_off,WORD block_off); 182 | 183 | void ochar_sound(WORD); 184 | void ochar_sound_stop(WORD); 185 | void his_ochar_sound(WORD offset); 186 | void rsnd_ochar_sound(WORD pa0l,WORD pa0h); 187 | void borrow_ochar_sound(WORD pa0,WORD pa1); 188 | 189 | void play_generic_tune(WORD trk); 190 | void play_generic_stream(WORD trk); 191 | 192 | void sound_module_fight(void); 193 | void sound_module_load(WORD mod); 194 | 195 | void rsnd_sk_bonus_win(void); 196 | 197 | WORD sound_pan_value(void); 198 | void sound_driver_config(void); 199 | 200 | /* 201 | * MACROS 202 | */ 203 | #define tsound(_off) triple_sound((_off)) 204 | 205 | #define local_group_sound(_pa0) group_sound(_pa0) 206 | 207 | #define get_group_table(_ta0) group_table[_ta0] 208 | 209 | #endif /* __mk_mksound_h__ */ 210 | 211 | -------------------------------------------------------------------------------- /MKSTAT.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkstat.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III stationary attack header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkstat_h__ 14 | #define __mk_mkstat_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* stationary indexes */ 21 | #define STAT_ERMACS 0x1c 22 | #define STAT_REP_INV 0x1b 23 | #define STAT_JADE 0x1a 24 | #define STAT_FAN_LIFT 0x19 25 | #define STAT_BABY 0x18 26 | #define STAT_ROUNDH 0x17 27 | #define STAT_UPPER 0x16 28 | #define STAT_DKICKL 0x15 29 | #define STAT_DKICKH 0x14 30 | #define STAT_DUCKP 0x13 31 | #define STAT_SWEEPK 0x12 32 | #define STAT_LKICK 0x11 33 | #define STAT_HKICK 0x10 34 | #define STAT_SWATG 0x0b 35 | #define STAT_KSWIPE 0x0a 36 | #define STAT_LEG_THROW 0x09 37 | #define STAT_INVISO 0x08 38 | #define STAT_QUAKE 0x07 39 | #define STAT_NOOGY 0x06 40 | #define STAT_SHAKE 0x05 41 | #define STAT_REFLECT 0x04 42 | #define STAT_F_AXE 0x03 43 | #define STAT_AXE 0x02 44 | #define STAT_SCREAM 0x01 45 | #define STAT_SPIN 0x00 46 | 47 | 48 | /* 49 | * RAM 50 | */ 51 | 52 | /* 53 | * PROTOTYPES 54 | */ 55 | void do_stationary(WORD pa0); 56 | 57 | void stat_do_ermac_slam(void); 58 | void stat_do_swat_gun(void); 59 | void stat_do_reptile_inv(void); 60 | 61 | void stat_do_jade_flash(void); 62 | void jade_flash_proc(void); 63 | void jade_flash_sleep(void); 64 | void jade_normpal(void); 65 | 66 | void stat_do_fan_lift(void); 67 | void wave_proc(void); 68 | 69 | void stat_do_babality(void); 70 | void baby_start_pause(void); 71 | void turn_into_a_baby(void); 72 | 73 | void stat_do_roundhouse(void); 74 | void stat_do_sweep_kick(void); 75 | 76 | void stat_do_duck_punch(void); 77 | void stat_do_duck_kickh(void); 78 | void stat_do_duck_kickl(void); 79 | void stat_do_uppercut(void); 80 | void stat_do_lo_kick(void); 81 | void kick2(WORD anispeed,WORD actnum,WORD anioff,WORD stkoff); 82 | void stat_do_hi_kick(void); 83 | 84 | void stat_do_kano_swipe(void); 85 | 86 | void stat_do_leg_throw(void); 87 | void post_leg_sleep(WORD sleeptime); 88 | void r_leg_slammed(void); 89 | 90 | void stat_do_inviso(void); 91 | void do_un_inviso(void); 92 | 93 | void stat_do_quake(void); 94 | 95 | void stat_do_noogy(void); 96 | void noogy_blocked(OBJECT *obj); 97 | void noogy_hit(OBJECT *obj); 98 | inline void noogy_suspended(void); 99 | inline void noogy_early_check(OBJECT *obj); 100 | void noogy_shaker(void); 101 | void noog_lineup_1(void); 102 | void upcut_blood_me(void); 103 | void edge_of_world_lineup(FUNC routine); 104 | 105 | void stat_do_shake(void); 106 | void shake_hit(OBJECT *obj); 107 | void shake_suspended(void); 108 | 109 | void stat_do_lao_spin(void); 110 | void next_lao_anirate(void); 111 | 112 | void stat_do_lia_scream(void); 113 | void scream_wave(void); 114 | 115 | void stat_do_fast_axe_up(void); 116 | void stat_do_axe_up(void); 117 | void axeup3(WORD pa9hi,WORD pa9lo,WORD pa11); 118 | 119 | void stat_do_reflect(void); 120 | 121 | void xfer_him_to_a10_r(WORD offset); 122 | 123 | void retract_strike_act(WORD actnum,WORD sleeptime); 124 | 125 | void do_unblock_hi(void); 126 | void do_block_hi(void); 127 | void turn_around(void); 128 | void duck_turnaround(void); 129 | void do_jumpup_kick_punch(WORD jtype); 130 | void do_flip_kick(void); 131 | void do_flip_punch(void); 132 | void update_l_block_fk(void); 133 | void update_block_fk(void); 134 | WORD air_strike(WORD strkoff,WORD framecnt,WORD anispeed,long gravity,WORD anioff); 135 | inline void mid_air_pause(OBJECT *obj,WORD sleep); 136 | 137 | void combo_air_pause(WORD pa0); 138 | void cap_elbow(void); 139 | void cap_knee(void); 140 | void cap_airborn(void); 141 | void air_combo_setup(void); 142 | 143 | void angle_jump_land_jsrp(void); 144 | void land_on_yer_feet(void); 145 | void jump_up_land_jump(void); 146 | void do_jump_up(void *pa11); 147 | void jump_up_land_jsrp(void); 148 | void allow_moves(void); 149 | 150 | /* 151 | * MACROS 152 | */ 153 | /* retract stike */ 154 | #define retract_strike(_sleep) retract_strike_act(0,(_sleep)) 155 | 156 | /* power stuff */ 157 | #define local_zero_power current_proc->pdata.p_power=0 158 | 159 | #endif /* __mk_mkstat_h__ */ 160 | 161 | -------------------------------------------------------------------------------- /MKTEXT.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mktext.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Dec 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III text Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mktext_h__ 14 | #define __mk_mktext_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | 20 | /* font defnitions */ 21 | #define FONT_15 0x00 // 15 point italic font 22 | #define FONT_7 0x01 // 7 point italic font 23 | #define FONT_7N 0x02 // 7 point normal font 24 | 25 | #define FONT15_XOFF (FONT_15_BASE_X%128) // # of pixels offset from tpage where 15 pt font is located 26 | #define FONT7_XOFF (FONT_15_BASE_X%128) // # of pixels offset from tpage where 7 pt font is located 27 | #define FONT7N_XOFF (FONT_15_BASE_X%128) // # of pixels offset from tpage where 7 pt font is located 28 | 29 | #define FONT15_YOFF (FONT_15_BASE_Y%256) // # of pixels offset from tpage where 15 pt font is located 30 | #define FONT7_YOFF (FONT_15_BASE_Y%256) // # of pixels offset from tpage where 7 pt font is located 31 | #define FONT7N_YOFF (FONT_15_BASE_Y%256) // # of pixels offset from tpage where 7 pt font is located 32 | 33 | /* font routines definitions, update mkchar.inc */ 34 | #define STRCNRMOS 0x00 // set noscroll,shadow, insert objlst bits, center justify 35 | #define STRCNRMOS_SCR 0x01 // shadow, insert objlst bits, center justify 36 | #define STRLNRMOS_SCR 0x02 // shadow, insert objlst bits, left justify 37 | #define STRRNRMOS_SCR 0x03 // shadow, insert objlst bits, right justify 38 | #define STRCNRMO_SCR 0x04 // no shadow, insert objlst bits, center justify 39 | #define STRLNRMO_SCR 0x05 // no shadow, insert objlst bits, left justify 40 | #define STRRNRMO_SCR 0x06 // no shadow, insert objlst bits, right justify 41 | 42 | /* stringer flag defn */ 43 | #define STR_SHADOW 0x8000 // shadow mask 44 | #define STR_JUSTIFY 0x0003 // justify mask 45 | #define STR_SCROLL 0x2000 // no scroll set mask 46 | #define STR_OBJ 0x1000 // insert on obj list mask 47 | 48 | /* stringer control flags */ 49 | #define NEW_SLEEP 0x01 // change current sleep time 50 | #define NEW_PCOLOR 0x02 // change the current print color 51 | #define NEW_CONTROL 0x03 // change current dma control word 52 | #define NEW_FONT 0x04 // change current font 53 | #define NEW_XY 0x05 // change current print position 54 | #define NEW_SPACING 0x06 // change current spacing 55 | #define ADD_DYDX 0x07 // add this [y,x] to the current position 56 | #define NEW_PALETTE 0x08 // use new palette, specified by i.d. 57 | #define ASCII_TAB 0x09 58 | #define UNDERLINE_ON 0x0a // turn on underlining 59 | #define UNDERLINE_OFF 0x0b // turn off underlining 60 | #define ASCII_CR 0x0d 61 | 62 | 63 | /* font tpage info */ 64 | typedef struct fnttpage 65 | { 66 | BYTE u0,v0; // offset within tpage (u0 even) 67 | BYTE w,h; // width & height of character 68 | } FNTTPAGE; 69 | 70 | typedef struct fntlookup 71 | { 72 | WORD f_tpage; // base tpage for font 73 | FNTTPAGE *f_ptr; // ptr to font info 74 | } FNTLOOKUP; 75 | 76 | typedef struct fnt_setup 77 | { 78 | WORD fnt_num; // fnt number (a11) 79 | WORD fnt_spacing; // fnt spacing (a10) 80 | short fnt_posx; // fnt position x (a9) 81 | short fnt_posy; // fnt position y (a9) 82 | WORD *fnt_pal; // fnt palette/color (a5) 83 | WORD fnt_routine; // fnt routine index to execute (a1) 84 | WORD fnt_sleep; // fnt sleep (a0) 85 | } FNTSETUP; 86 | 87 | /* 88 | * RAM 89 | */ 90 | __EXTERN__ FNTSETUP fnt_state; // current fnt state 91 | __EXTERN__ WORD text_draw; 92 | //__EXTERN__ char fnt_buffer[256]; // buffer to draw from for fnt 93 | #define fnt_buffer ((char*)idcomp_ptr) // use decompress buffer as temp work area 94 | __EXTERN__ WORD string_underline; // clear out underling 95 | __EXTERN__ WORD string_shadow; // shadow string 96 | __EXTERN__ XYTYPE fnt_spacing; // fnt spacing sizing info (a6) 97 | 98 | 99 | extern FNTTPAGE font7_panel_info[]; 100 | extern FNTTPAGE font15_panel_info[]; 101 | extern FNTLOOKUP font_lists[]; 102 | 103 | #define font15_num (font15_panel_info+'0'-0x21) 104 | #define font7_num (font7_panel_info+'0'-0x21) 105 | /* 106 | * PROTOTYPES 107 | */ 108 | void p15_centered(char *pa8,short pa9x,short pa9y); 109 | void p15_centered_soff(char *pa8,short pa9x,short pa9y); 110 | void p7_centered(char *pa8,short pa9x,short pa9y); 111 | void p7_left(char *pa8,short pa9x,short pa9y); 112 | void p7_left_p1(char *pa8,short pa9x,short pa9y,WORD parm1); 113 | void pds_centered_soff(char *pa8,short pa9x,short pa9y); 114 | void pds_centered(char *pa8,short pa9x,short pa9y); 115 | void pds_right(char *pa8,short pa9x,short pa9y); 116 | void pds_left(char *pa8,short pa9x,short pa9y); 117 | 118 | 119 | void setup_text_fonts(void); 120 | void pds_centered_p1(char *pa8,short pa9x,short pa9y,WORD parm1); 121 | void lm_printf(FNTSETUP *); 122 | void lm_printf_p1(FNTSETUP *fnt_info,WORD parm1); 123 | void printf_p1(char *msg,WORD parm1); 124 | void printf_s1(char *msg,char *parm1); 125 | void mk_printf(char *); // equiv to printf in arcade game 126 | void stringer(void); 127 | void spacing(void); 128 | void justify(WORD); 129 | short strnglen(void); 130 | void copy_obj(OBJECT *,OBJECT *); 131 | 132 | 133 | /* palettes (imgpal.s) */ 134 | extern void *text_P[]; 135 | 136 | /* text texture (mkcontro.s) */ 137 | extern void *mk15_font_TXT[]; 138 | 139 | /* 140 | * MACROS 141 | */ 142 | 143 | /* setup the fnt draw state */ 144 | #define lm_setup(_info) memcpy(&fnt_state,(_info),sizeof(FNTSETUP)) 145 | 146 | #endif /* __mk_mktext_h__ */ 147 | 148 | -------------------------------------------------------------------------------- /MKVS.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: mkvs.h 3 | 4 | By: David Schwartz 5 | 6 | Date: August 1994 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III vs Player Header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_mkvs_h__ 14 | #define __mk_mkvs_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define SSPEED SCX(0x60000) 20 | #define SDIST (SCX(0xb0)) 21 | 22 | 23 | typedef struct vpiece { 24 | short v_p1x; // player 1 x off 25 | short v_p1y; // player 1 y off 26 | short v_p2x; // player 2 x off 27 | short v_p2y; // player 2 y off 28 | } VPIECE; 29 | 30 | /* 31 | * RAM 32 | */ 33 | 34 | /* 35 | * PROTOTYPES 36 | */ 37 | void vs_or_ladder(void); 38 | 39 | void mk_vs(void); 40 | void mk_battle(void); 41 | 42 | void mk_bat_signal_f(void); 43 | void mk_bat_signal(void); 44 | 45 | void do_mk_number(WORD pa0); 46 | 47 | void combination_proc(void); 48 | void slide_in_huge_players(); 49 | void build_huge_left(void *pheap); 50 | inline void setup_direction(LONG pa4); 51 | void start_off_screen(OBJECT *); 52 | void check_button(OBJECT *obj); 53 | 54 | OBJECT *make_a_mk_light(short pa9x,short pa9y); 55 | 56 | void create_1_piece(void *pa7,short pa0,short pa1,short pa2); 57 | void cd_preload_fade(void); 58 | void cd_preload_p1(void); 59 | void cd_preload_bkgd(void); 60 | 61 | /* externs */ 62 | extern void *vs_anims[]; 63 | extern void *a_mklight[]; 64 | extern void *a_vs_s[]; 65 | extern void *a_vs_v[]; 66 | extern void *symbol_table[]; 67 | extern void *BURNV1[]; 68 | extern void *BURNS1[]; 69 | extern void *BATTLE0[]; 70 | extern void *BATTLE[]; 71 | extern void *MKLIGHT1[]; 72 | extern void *BOX2[]; 73 | extern void *I_DRAGON[]; 74 | 75 | extern VPIECE kano_pieces[]; 76 | extern VPIECE sonya_pieces[]; 77 | extern VPIECE jax_pieces[]; 78 | extern VPIECE ind_pieces[]; 79 | extern VPIECE sz_pieces[]; 80 | extern VPIECE swat_pieces[]; 81 | extern VPIECE lia_pieces[]; 82 | extern VPIECE robo1_pieces[]; 83 | extern VPIECE robo2_pieces[]; 84 | extern VPIECE lao_pieces[]; 85 | extern VPIECE tusk_pieces[]; 86 | extern VPIECE sg_pieces[]; 87 | extern VPIECE st_pieces[]; 88 | extern VPIECE lk_pieces[]; 89 | extern VPIECE smoke_pieces[]; 90 | extern VPIECE kitana_pieces[]; 91 | extern VPIECE jade_pieces[]; 92 | extern VPIECE mileena_pieces[]; 93 | extern VPIECE scorpion_pieces[]; 94 | extern VPIECE reptile_pieces[]; 95 | extern VPIECE ermac_pieces[]; 96 | extern VPIECE oldsz_pieces[]; 97 | extern VPIECE oldsmoke_pieces[]; 98 | extern VPIECE noob_pieces[]; 99 | 100 | /* 101 | * MACROS 102 | */ 103 | 104 | #endif /* __mk_mkvs_h__ */ 105 | 106 | -------------------------------------------------------------------------------- /PSXCD.H: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------*/ 2 | /* 3 | Sony CD Architecture Specific Routines 4 | by Scott Patterson 5 | 6 | development and testing period on this code: 7 | 4/18/95 - 9/28/95 8 | */ 9 | /*------------------------------------------------------------------*/ 10 | 11 | #ifndef _PSXCD_H 12 | #define _PSXCD_H 13 | 14 | /* 15 | The following functions will pause for a short CD volume fade if 16 | the CD volume is not zero (and _CD_SPU_LINK_ == 1): 17 | 18 | psxcd_async_read() 19 | psxcd_read() 20 | psxcd_stop() 21 | psxcd_pause() 22 | 23 | To asyncronously fade the CD volume beforehand so these functions 24 | will not have any delays see comments in "psxspu.h" 25 | */ 26 | 27 | #include 28 | #include 29 | 30 | #define _CD_VERSION_ 1 31 | #define _CD_SPU_LINK_ 1 32 | #define _CD_ABS_OPEN_ 0 33 | 34 | #define PSXCD_SEEK_SET 0 35 | #define PSXCD_SEEK_CUR 1 36 | #define PSXCD_SEEK_END 2 37 | 38 | #if _CD_VERSION_ == 0 39 | #include 40 | #endif 41 | 42 | typedef struct PsxCd_File { 43 | CdlFILE file; 44 | CdlLOC new_io_loc; 45 | unsigned long io_block_offset; 46 | unsigned char io_result[8]; 47 | }PsxCd_File; 48 | 49 | #if _CD_ABS_OPEN_ == 1 50 | 51 | typedef struct PsxCd_MapTbl { 52 | int abs; 53 | u_long size; 54 | }PsxCd_MapTbl; 55 | 56 | extern PsxCd_MapTbl cdmaptbl[]; 57 | 58 | #endif 59 | 60 | // CD-data read stuff 61 | #define CD_ROM_SECTOR_SIZE 2048 62 | #define SECTORS_PER_SECOND 75 63 | #define SECONDS_PER_MINUTE 60 64 | 65 | /* 66 | Asyncronous read function: psxcd_async_on() 67 | 68 | this function returns non-zero during asyncronous reading 69 | 70 | to code an asyncronous read: 71 | 72 | psxcd_async_read(destptr,readbytes,fileptr); 73 | 74 | // do your other shit here 75 | // (don't mess with the RAM you are reading to!) 76 | 77 | // to check for completion 78 | if(!psxcd_async_on()) 79 | { 80 | // psxcd_async_read is complete 81 | } 82 | 83 | // to wait for completion: 84 | while(psxcd_async_on()); // wait for completion of psxcd_async_read 85 | */ 86 | 87 | extern int psxcd_async_on(void); 88 | 89 | /* 90 | CD-DA play seek variable: seeking_for_play 91 | 92 | after psxcd_seek_for_play(track) call is made 93 | 94 | this function returns non-zero until seeking is done 95 | */ 96 | 97 | extern int psxcd_seeking_for_play(void); 98 | 99 | /* 100 | CD-DA play stop/pause variable: waiting_for_pause 101 | 102 | after psxcd_stop/psxcd_pause call is made 103 | 104 | this function returns non-zero until pause operation is done 105 | */ 106 | 107 | extern int psxcd_waiting_for_pause(void); 108 | 109 | extern int cdl_insetmode; 110 | extern int cdl_intr; 111 | extern unsigned char cdl_stat; 112 | extern unsigned char cdl_com; 113 | 114 | extern int cdl_errcount; 115 | extern int cdl_errintr; 116 | extern unsigned char cdl_errstat; 117 | extern unsigned char cdl_errcom; 118 | extern int readcount; 119 | extern int playcount; 120 | 121 | // PSX CD-MODE1 DATA commands 122 | 123 | extern void psxcd_init(void); 124 | 125 | extern void psxcd_exit(void); 126 | 127 | extern void psxcd_disable_callbacks(void); 128 | 129 | extern void psxcd_enable_callbacks(void); 130 | 131 | extern void psxcd_set_data_mode(void); 132 | 133 | extern PsxCd_File *psxcd_open(char *filename); 134 | 135 | extern void psxcd_async_read_cancel(void); 136 | 137 | extern int psxcd_async_read(void *destptr,int readbytes,PsxCd_File *fileptr); 138 | 139 | extern int psxcd_read(void *destptr,int readbytes,PsxCd_File *fileptr); 140 | 141 | extern int psxcd_seek(PsxCd_File *fileptr,int seekpos,int seekmode); 142 | 143 | extern unsigned long psxcd_tell(PsxCd_File *fileptr); 144 | 145 | extern void psxcd_close(PsxCd_File *fileptr); 146 | 147 | // PSX CD-AUDIO commands 148 | 149 | extern void psxcd_set_stereo(int stereo_true); 150 | 151 | extern void psxcd_set_audio_mode(void); 152 | 153 | extern void psxcd_seek_for_play(int track); 154 | 155 | extern void psxcd_seek_for_play_at(int track, 156 | int sectoroffset); 157 | 158 | extern void psxcd_play(int track, int vol); 159 | 160 | extern void psxcd_play_at(int track, 161 | int vol, 162 | int sectoroffset); 163 | 164 | extern void psxcd_set_loop_volume(int volforloop); 165 | 166 | extern void psxcd_play_at_andloop(int track, 167 | int vol, 168 | int sectoroffset, 169 | int fadeuptime, 170 | int tracktoloop, 171 | int volforloop, 172 | int loopstartsectoroffset, 173 | int loopstartfadeuptime); 174 | 175 | extern void psxcd_stop(void); 176 | 177 | extern void psxcd_pause(void); 178 | 179 | extern void psxcd_restart(int vol); 180 | 181 | int psxcd_play_status(void); 182 | 183 | int psxcd_elapsed_sectors(void); 184 | 185 | // PSX low level CD extras 186 | 187 | extern char sectorbuf[CD_ROM_SECTOR_SIZE]; 188 | 189 | extern void psxcd_init_pos(void); 190 | 191 | #endif 192 | 193 | -------------------------------------------------------------------------------- /PSXSND.H: -------------------------------------------------------------------------------- 1 | #ifndef _PSXSND_H 2 | #define _PSXSND_H 3 | 4 | #include "wessapi.h" 5 | #include "seqload.h" 6 | #include "lcdload.h" 7 | 8 | #include "soundhw.h" 9 | 10 | #define WMD_SIZE 43000 11 | #define SRAM_START 4112 12 | #define SRAM_FIGHTER_1 221312 13 | #define SRAM_FIGHTER_2 370752 14 | 15 | #define SOUNDLOADDATA_SELECT 0 16 | #define SOUNDLOADDATA_HIDGAME 1 17 | #define SOUNDLOADDATA_RAND 2 18 | #define SOUNDLOADDATA_SMOKECOD 3 19 | #define SOUNDLOADDATA_LADDER 4 20 | #define SOUNDLOADDATA_GAMEOVER 5 21 | #define SOUNDLOADDATA_BUYIN 6 22 | #define SOUNDLOADDATA_VS 7 23 | #define SOUNDLOADDATA_SKSPCIAL 8 24 | #define SOUNDLOADDATA_SKPIT 9 25 | #define SOUNDLOADDATA_SKBELL 10 26 | #define SOUNDLOADDATA_SKTRAIN 11 27 | #define SOUNDLOADDATA_SKSTREET 12 28 | #define SOUNDLOADDATA_SKBRIDGE 13 29 | #define SOUNDLOADDATA_SKBANK 14 30 | #define SOUNDLOADDATA_SKROOF 15 31 | #define SOUNDLOADDATA_SKSOUL 16 32 | #define SOUNDLOADDATA_SKCHURCH 17 33 | #define SOUNDLOADDATA_SKGRAVE 18 34 | #define SOUNDLOADDATA_SKHID 19 35 | 36 | extern int sram_pos; 37 | 38 | extern unsigned long PsxSoundInit(char *ptrtowmd); 39 | extern void PsxSoundExit(void); 40 | 41 | extern void PsxSoundLoadClear(void); 42 | extern void PsxSoundLoadData(int lcdnum); 43 | extern void PsxSoundLoadFighter1(int lcdnum); 44 | extern void PsxSoundLoadFighter2(int lcdnum); 45 | extern void PsxSoundLoadFighter1Babality(int lcdnum); 46 | extern void PsxSoundLoadFighter2Babality(int lcdnum); 47 | extern void PsxSoundLoadFighter1Animality(int lcdnum); 48 | extern void PsxSoundLoadFighter2Animality(int lcdnum); 49 | extern void PsxSoundLoadFighter1Fatality(int lcdnum); 50 | extern void PsxSoundLoadFighter2Fatality(int lcdnum); 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /PSXSPU.H: -------------------------------------------------------------------------------- 1 | 2 | /*------------------------------------------------------------------*/ 3 | /* 4 | Williams Entertainment Sound System 5 | by Scott Patterson 6 | 7 | PSX SPU Volume and Reverb controls. 8 | */ 9 | /*------------------------------------------------------------------*/ 10 | 11 | #ifndef _PSXSPU_H 12 | #define _PSXSPU_H 13 | 14 | #define FADE_TIME 250 15 | 16 | /* 17 | Notes on fade calls: 18 | 19 | To do a syncronous fade to zero volume: 20 | 21 | psxspu_start_cd_fade(FADE_TIME,0); 22 | while(psxspu_get_cd_fade_status()); 23 | 24 | To do an asyncronous fade to zero volume: 25 | 26 | psxspu_start_cd_fade(FADE_TIME,0); 27 | . 28 | . 29 | . 30 | if(!psxspu_get_cd_fade_status()) 31 | { 32 | //fade is now done 33 | } 34 | */ 35 | 36 | #define MAX_MASTER_VOL 0x3fff 37 | #define MAX_CD_VOL 0x3cff 38 | #define MED_CD_VOL 0x2fff 39 | #define MIN_CD_VOL 0x1fff 40 | 41 | #define SRAM_ADDRESS_LIMIT 520192 42 | #define SRAM_RESERVED_SIZE 4112 43 | #define SRAM_TO_ALLOC (SRAM_ADDRESS_LIMIT-SRAM_RESERVED_SIZE) 44 | 45 | #define PSXSPU_REV_MODE_OFF 0 46 | #define PSXSPU_REV_MODE_ROOM 1 47 | #define PSXSPU_REV_MODE_STUDIO_A 2 48 | #define PSXSPU_REV_MODE_STUDIO_B 3 49 | #define PSXSPU_REV_MODE_STUDIO_C 4 50 | #define PSXSPU_REV_MODE_HALL 5 51 | #define PSXSPU_REV_MODE_SPACE 6 52 | #define PSXSPU_REV_MODE_ECHO 7 53 | #define PSXSPU_REV_MODE_DELAY 8 54 | #define PSXSPU_REV_MODE_PIPE 9 55 | 56 | extern unsigned long end_of_sram; 57 | 58 | extern void psxspu_init(void); 59 | 60 | extern void psxspu_init_reverb(long rev_mode, 61 | short depthleft, 62 | short depthright, 63 | long delay, 64 | long feedback); 65 | 66 | extern void psxspu_set_reverb_depth(short depthleft, 67 | short depthright); 68 | 69 | extern void psxspu_fadeengine(void); 70 | 71 | extern void psxspu_set_master_vol(int vol); 72 | extern int psxspu_get_master_vol(void); 73 | extern void psxspu_start_master_fade(int msec,int destvol); 74 | extern void psxspu_stop_master_fade(void); 75 | 76 | //returns zero when fade is done 77 | extern int psxspu_get_master_fade_status(void); 78 | 79 | extern void psxspu_set_cd_vol(int vol); 80 | extern int psxspu_get_cd_vol(void); 81 | extern void psxspu_start_cd_fade(int msec,int destvol); 82 | extern void psxspu_stop_cd_fade(void); 83 | 84 | //returns zero when fade is done 85 | extern int psxspu_get_cd_fade_status(void); 86 | 87 | extern void psxspu_setcdmixon(void); 88 | extern void psxspu_setcdmixoff(void); 89 | 90 | #endif 91 | 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # What is UMK3? 2 | Ultimate Mortal Kombat is a arcade game released in 1995 by Midway, with a 3DO port planned to release. It was sadly canceled in 1996. 3 | 4 | # Why was the port cancelled? 5 | Wikipedia states it was due to the ridiculous amounts of delays which would make it release well over UMK3's peak of popularity. 6 | Luckily, a user grabbed the source code and leaked it to places like AssemblerGames. 7 | -------------------------------------------------------------------------------- /SEQLOAD.H: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------*/ 2 | /* 3 | The Williams Entertainment Sound System 4 | by Scott Patterson 5 | */ 6 | /*------------------------------------------------------------------*/ 7 | 8 | #ifndef _SEQLOAD_H 9 | #define _SEQLOAD_H 10 | 11 | enum Seq_Load_Error { 12 | 13 | SEQLOAD_NO_ERROR, 14 | SEQLOAD_FOPEN, 15 | SEQLOAD_FREAD, 16 | SEQLOAD_FSEEK 17 | }; 18 | 19 | enum OpenSeqHandleFlag {NoOpenSeqHandle,YesOpenSeqHandle}; 20 | 21 | /* 22 | routine: wess_seq_loader_init() 23 | 24 | - this routine must be called before and seq_loader_routines 25 | - input_pm_stat is returned by wess_get_master_status() 26 | - seqfile is the .wmd filename 27 | - flag specifies if the file handle will be opened during init or 28 | each time file is accessed 29 | */ 30 | 31 | 32 | extern int wess_seq_loader_init(void *input_pm_stat, 33 | char *seqfile, 34 | enum OpenSeqHandleFlag flag); 35 | 36 | /* 37 | routine: wess_seq_loader_exit() 38 | 39 | - closes file handle if not already closed 40 | - disables sequence loading calls 41 | */ 42 | 43 | extern void wess_seq_loader_exit(void); 44 | 45 | /* 46 | routine: wess_seq_loader_install_error_handler() 47 | 48 | - for installing an error callback to notify file access errors 49 | - module is your own ID returned as err_module parameter 50 | - err_enum is the returned Seq_Load_Error enum parameter 51 | */ 52 | 53 | extern void wess_seq_loader_install_error_handler(int (*error_func)(int, int), 54 | int module); 55 | 56 | /* 57 | general loading guidelines: 58 | 59 | - sizeof functions return the amount of bytes needed for data 60 | not already loaded, therefore, when sizeof returns 0, this 61 | means the data referred to is already loaded 62 | 63 | - load functions only load data that is not already loaded 64 | and return the amount of bytes loaded, memory is not allocated 65 | internally, you must use the sizeof functions and allocate 66 | memory yourself 67 | 68 | - free functions mark data as not loaded, memory is not freed 69 | internally, you must free memory yourself 70 | */ 71 | 72 | /* 73 | individual sequence loading 74 | */ 75 | 76 | extern int wess_seq_sizeof(int seqnum); 77 | 78 | extern int wess_seq_load(int seqnum,void *memptr); 79 | 80 | extern int wess_seq_free(int seqnum); 81 | 82 | /* 83 | sequence list loading 84 | 85 | - pass in a list of sequnce numbers to be loaded 86 | - end this list with the END_SEQ_LIST define 87 | */ 88 | 89 | #define END_SEQ_LIST -1 90 | 91 | extern int wess_seq_list_sizeof(short *seqlist); 92 | 93 | extern int wess_seq_list_load(short *seqlist,void *memptr); 94 | 95 | extern int wess_seq_list_free(short *seqlist); 96 | 97 | /* 98 | sequence range loading 99 | 100 | - specify a number of consecutive sequences to be loaded 101 | */ 102 | 103 | extern int wess_seq_range_sizeof(int seqfirst,int numseqs); 104 | 105 | extern int wess_seq_range_load(int seqfirst,int numseqs,void *memptr); 106 | 107 | extern int wess_seq_range_free(int seqfirst,int numseqs); 108 | 109 | #endif 110 | 111 | -------------------------------------------------------------------------------- /SONYRLE.C: -------------------------------------------------------------------------------- 1 | static void unsonyRLE(uchar *src, uchar *dst) 2 | { 3 | short someshort; 4 | long Lrunlen; 5 | int complete, partial; 6 | uchar *packdata, *packlen; 7 | ushort *buffer; 8 | 9 | static void *table[32] = {&&case2, &&case4, &&case6, &&case8, &&case10, &&case12, 10 | &&case14, &&case16, &&case18, &&case20, &&case22, &&case24, 11 | &&case26, &&case28, &&case30, &&case32, &&case34, &&case36, 12 | &&case38, &&case40, &&case42, &&case44, &&case46, &&case48, 13 | &&case50, &&case52, &&case54, &&case56, &&case58, &&case60, 14 | &&case62, &&case64}; 15 | 16 | packdata = src; 17 | packlen = packdata + *(long*)packdata & 0x00FFFFFF; 18 | buffer = (ushort*)dst; 19 | 20 | for (packdata += 4; packdata < packlen; ) { 21 | someshort = *(((u_short *)packdata)++); 22 | 23 | if (someshort & 0x8000) { 24 | Lrunlen = someshort & 0x01FF; 25 | someshort &= 0x7E00; 26 | someshort = (someshort >> 1) | (someshort >> 9); 27 | complete = Lrunlen >> 6; 28 | partial = Lrunlen & 63; 29 | 30 | if (!partial) { 31 | partial = 64; 32 | complete--; 33 | } 34 | 35 | goto *table[(partial >> 1) - 1]; 36 | 37 | case64: *(((u_short *)buffer)++) = someshort; 38 | case62: *(((u_short *)buffer)++) = someshort; 39 | case60: *(((u_short *)buffer)++) = someshort; 40 | case58: *(((u_short *)buffer)++) = someshort; 41 | case56: *(((u_short *)buffer)++) = someshort; 42 | case54: *(((u_short *)buffer)++) = someshort; 43 | case52: *(((u_short *)buffer)++) = someshort; 44 | case50: *(((u_short *)buffer)++) = someshort; 45 | case48: *(((u_short *)buffer)++) = someshort; 46 | case46: *(((u_short *)buffer)++) = someshort; 47 | case44: *(((u_short *)buffer)++) = someshort; 48 | case42: *(((u_short *)buffer)++) = someshort; 49 | case40: *(((u_short *)buffer)++) = someshort; 50 | case38: *(((u_short *)buffer)++) = someshort; 51 | case36: *(((u_short *)buffer)++) = someshort; 52 | case34: *(((u_short *)buffer)++) = someshort; 53 | case32: *(((u_short *)buffer)++) = someshort; 54 | case30: *(((u_short *)buffer)++) = someshort; 55 | case28: *(((u_short *)buffer)++) = someshort; 56 | case26: *(((u_short *)buffer)++) = someshort; 57 | case24: *(((u_short *)buffer)++) = someshort; 58 | case22: *(((u_short *)buffer)++) = someshort; 59 | case20: *(((u_short *)buffer)++) = someshort; 60 | case18: *(((u_short *)buffer)++) = someshort; 61 | case16: *(((u_short *)buffer)++) = someshort; 62 | case14: *(((u_short *)buffer)++) = someshort; 63 | case12: *(((u_short *)buffer)++) = someshort; 64 | case10: *(((u_short *)buffer)++) = someshort; 65 | case8: *(((u_short *)buffer)++) = someshort; 66 | case6: *(((u_short *)buffer)++) = someshort; 67 | case4: *(((u_short *)buffer)++) = someshort; 68 | case2: *(((u_short *)buffer)++) = someshort; 69 | 70 | if (complete--) 71 | goto case64; 72 | 73 | } 74 | else *(((u_short *)buffer)++) = someshort; 75 | } 76 | } /* unsonyRLE */ -------------------------------------------------------------------------------- /SOUNDHW.H: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------*/ 2 | /* 3 | The Williams Entertainment Sound System 4 | by Scott Patterson 5 | */ 6 | /*------------------------------------------------------------------*/ 7 | 8 | #ifndef _SOUNDHW_H 9 | #define _SOUNDHW_H 10 | 11 | enum DriverIds {NoSound_ID,PSX_ID,GENERIC_ID=50}; 12 | 13 | enum SoundHardwareTags { 14 | SNDHW_TAG_END, 15 | SNDHW_TAG_DRIVER_ID, 16 | SNDHW_TAG_SOUND_EFFECTS, 17 | SNDHW_TAG_MUSIC, 18 | SNDHW_TAG_DRUMS, 19 | SNDHW_TAG_MAX 20 | }; 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /STDARG.H: -------------------------------------------------------------------------------- 1 | /* stdarg.h for GNU. 2 | Note that the type used in va_arg is supposed to match the 3 | actual type **after default promotions**. 4 | Thus, va_arg (..., short) is not valid. */ 5 | 6 | #ifndef _STDARG_H 7 | #ifndef _ANSI_STDARG_H_ 8 | #ifndef __need___va_list 9 | #define _STDARG_H 10 | #define _ANSI_STDARG_H_ 11 | #endif /* not __need___va_list */ 12 | #undef __need___va_list 13 | 14 | #ifdef __clipper__ 15 | #include 16 | #else 17 | #ifdef __m88k__ 18 | #include 19 | #else 20 | #ifdef __i860__ 21 | #include 22 | #else 23 | #ifdef __hppa__ 24 | #include 25 | #else 26 | #ifdef __mips__ 27 | #include 28 | #else 29 | #ifdef __sparc__ 30 | #include 31 | #else 32 | #ifdef __i960__ 33 | #include 34 | #else 35 | #ifdef __alpha__ 36 | #include 37 | #else 38 | #if defined (__H8300__) || defined (__H8300H__) 39 | #include 40 | #else 41 | 42 | /* Define __gnuc_va_list. */ 43 | 44 | #ifndef __GNUC_VA_LIST 45 | #define __GNUC_VA_LIST 46 | #if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) 47 | typedef char *__gnuc_va_list; 48 | #else 49 | typedef void *__gnuc_va_list; 50 | #endif 51 | #endif 52 | 53 | /* Define the standard macros for the user, 54 | if this invocation was from the user program. */ 55 | #ifdef _STDARG_H 56 | 57 | /* Amount of space required in an argument list for an arg of type TYPE. 58 | TYPE may alternatively be an expression whose type is used. */ 59 | 60 | #if defined(sysV68) 61 | #define __va_rounded_size(TYPE) \ 62 | (((sizeof (TYPE) + sizeof (short) - 1) / sizeof (short)) * sizeof (short)) 63 | #else 64 | #define __va_rounded_size(TYPE) \ 65 | (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) 66 | #endif 67 | 68 | #define va_start(AP, LASTARG) \ 69 | (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG))) 70 | 71 | #undef va_end 72 | void va_end (__gnuc_va_list); /* Defined in libgcc.a */ 73 | #define va_end(AP) 74 | 75 | /* We cast to void * and then to TYPE * because this avoids 76 | a warning about increasing the alignment requirement. */ 77 | 78 | #if defined (__arm__) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__) 79 | /* This is for little-endian machines; small args are padded upward. */ 80 | #define va_arg(AP, TYPE) \ 81 | (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ 82 | *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE)))) 83 | #else /* big-endian */ 84 | /* This is for big-endian machines; small args are padded downward. */ 85 | #define va_arg(AP, TYPE) \ 86 | (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ 87 | *((TYPE *) (void *) ((char *) (AP) - ((sizeof (TYPE) < 4 \ 88 | ? sizeof (TYPE) \ 89 | : __va_rounded_size (TYPE)))))) 90 | #endif /* big-endian */ 91 | #endif /* _STDARG_H */ 92 | 93 | #endif /* not h8300 */ 94 | #endif /* not alpha */ 95 | #endif /* not i960 */ 96 | #endif /* not sparc */ 97 | #endif /* not mips */ 98 | #endif /* not hppa */ 99 | #endif /* not i860 */ 100 | #endif /* not m88k */ 101 | #endif /* not clipper */ 102 | 103 | #ifdef _STDARG_H 104 | /* Define va_list, if desired, from __gnuc_va_list. */ 105 | /* We deliberately do not define va_list when called from 106 | stdio.h, because ANSI C says that stdio.h is not supposed to define 107 | va_list. stdio.h needs to have access to that data type, 108 | but must not use that name. It should use the name __gnuc_va_list, 109 | which is safe because it is reserved for the implementation. */ 110 | 111 | #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ 112 | #undef _VA_LIST 113 | #endif 114 | 115 | #ifdef _BSD_VA_LIST 116 | #undef _BSD_VA_LIST 117 | #endif 118 | 119 | #ifdef __svr4__ 120 | /* SVR4.2 uses _VA_LIST for an internal alias for va_list, 121 | so we must avoid testing it and setting it here. 122 | SVR4 uses _VA_LIST as a flag in stdarg.h, but we should 123 | have no conflict with that. */ 124 | #ifndef _VA_LIST_ 125 | #define _VA_LIST_ 126 | #ifdef __i860__ 127 | #ifndef _VA_LIST 128 | #define _VA_LIST va_list 129 | #endif 130 | #endif /* __i860__ */ 131 | typedef __gnuc_va_list va_list; 132 | #endif /* _VA_LIST_ */ 133 | #else /* not __svr4__ */ 134 | 135 | /* The macro _VA_LIST_ is the same thing used by this file in Ultrix. 136 | But on BSD NET2 we must not test or define or undef it. 137 | (Note that the comments in NET 2's ansi.h 138 | are incorrect for _VA_LIST_--see stdio.h!) */ 139 | #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__) 140 | /* The macro _VA_LIST is used in SCO Unix 3.2. */ 141 | #ifndef _VA_LIST 142 | /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ 143 | #ifndef _VA_LIST_T_H 144 | #define _VA_LIST_T_H 145 | #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__)) 146 | #define _VA_LIST_ 147 | #endif 148 | #define _VA_LIST 149 | typedef __gnuc_va_list va_list; 150 | #endif /* not _VA_LIST_T_H */ 151 | #endif /* not _VA_LIST */ 152 | #endif /* not _VA_LIST_ */ 153 | 154 | #endif /* not __svr4__ */ 155 | 156 | #endif /* _STDARG_H */ 157 | 158 | #endif /* not _ANSI_STDARG_H_ */ 159 | #endif /* not _STDARG_H */ 160 | -------------------------------------------------------------------------------- /SYSTEM.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: system.h 3 | 4 | Date: August 1994 5 | 6 | (C) Williams Entertainment 7 | 8 | Mortal Kombat III Common System Defines 9 | *******************************************************************************/ 10 | 11 | #ifndef __system_h__ 12 | #define __system_h__ 13 | 14 | /* 15 | * Target System 16 | */ 17 | #define SONY_PSX 1 18 | 19 | /* 20 | * System State Defines 21 | */ 22 | 23 | /* clear these on final build */ 24 | #define POLL_TYPE 1 /* debuggin polling for sony box */ 25 | #define DEBUG 1 26 | #define MK_EJBBUG 1 /* quick debugging stuff, ARCADE STUFF */ 27 | #define PAL_VERSION 0 /* set for EUROPE */ 28 | #define JAP_VERSION 0 /* set for JAPAN */ 29 | 30 | #define FINAL_BRIEF 1 /* SET ON FINAL VERSION/BETA */ 31 | /* also change psxcd.h & makefile for full opts & link file */ 32 | /* clear these on final build */ 33 | #define CD_DEBUG 0 /* if set let cd dbug happen */ 34 | #define VS_OFF 0 /* CLEAR IF WANT LOAD MESSAGE ON TOP OF VS SCREEN & LADDER */ 35 | #define PROFILE 0 /* enable the poormans profiler */ 36 | #define DEBUG_GRID 0 /* debug grid for display lineup */ 37 | #define CLOCK_ON 1 /* enable clock */ 38 | #define SHADOW_MODE 0 /* if set then have shadows */ 39 | #define COLLISION_BOX 0 /* if set show collisin boxes over fighters */ 40 | #define SCREEN_SHOTS 0 /* set if want select to pause for screen shots */ 41 | #define SEL_BKGD 1 /* allow player to choose background cheat */ 42 | #define MULTI_OFF 1 /* if set, then mutli part objs are singles and alloc is different */ 43 | #define SMOKE_PAGE 0 /* set if want ultimate kombat code */ 44 | #define ONE_FLOOR_BUFFER 1 /* set for only one floor buffer */ 45 | #define BACKGROUND_COMPRESS 1 /* if set then TPG files have been compressed */ 46 | 47 | /* 48 | * Miscellaneous Defines 49 | */ 50 | #define SYSTEM_INIT_MARKER 0x01a2b3c4d /* system init mark */ 51 | 52 | #define SYSTEM_CARRY_SET 0x8000 /* carry set bit on */ 53 | #define SYSTEM_CARRY_CLR 0x4000 /* carry set bit off */ 54 | #define SYSTEM_CARRY_MASK (SYSTEM_CARRY_SET+SYSTEM_CARRY_CLR) /* create mask for carry bits */ 55 | 56 | #define SYSTEM_ZERO_SET 0x0002 /* zero set bit on */ 57 | #define SYSTEM_ZERO_CLR 0x0001 /* zero set bit off */ 58 | #define SYSTEM_ZERO_MASK (SYSTEM_ZERO_SET+SYSTEM_ZERO_CLR) /* create mask for zero bits */ 59 | 60 | #define STKSIZE (256) /* process stack size */ 61 | 62 | /* 63 | * Debugging Macros 64 | */ 65 | #if DEBUG 66 | #define CPRT(s) //printf("%s\n",s) 67 | #else 68 | #define CPRT(s) 69 | #endif /* DEBUG */ 70 | 71 | #if POLL_TYPE 72 | #define POLLING pollhost() 73 | #else 74 | #define POLLING 75 | #endif /* MK_EJBBUG */ 76 | 77 | /* 78 | * Extract the low and high from a long 79 | */ 80 | #define LOWORD(theValue) ((unsigned short)(theValue)) 81 | #define HIWORD(theValue) ((unsigned short)((unsigned long)(theValue)>>16)) 82 | 83 | /* 84 | * Make it easy to declare/initialize global variables 85 | * example usage: __EXTERN__ long foo __INIT__(1); 86 | * this becomes: 87 | * extern long foo; for declaring access to variable(done may times) 88 | * or: 89 | * long foo=1; for defining storage for the variable (done once) 90 | */ 91 | #ifdef DECLARE_GLOBALS /* declare variables as globals */ 92 | #define __EXTERN__ /* define storage for the variable */ 93 | #define __INIT__(initVal) = initVal /* set compile time initial value */ 94 | #else /* declare variables as externs */ 95 | #define __EXTERN__ extern /* declare an extern reference to the variable */ 96 | #define __INIT__(initVal) /* ignore initial value */ 97 | #endif /* DECLARE GLOBALS */ 98 | 99 | /* 100 | * Declare some useful types 101 | */ 102 | #define TRUE 1 103 | #define FALSE 0 104 | 105 | typedef void (*FUNC)(); /* void function(void) */ 106 | typedef FUNC JUMPTBL; /* jump table definition */ 107 | 108 | typedef unsigned short (*FUNCW)(); /* void function with a word return */ 109 | 110 | #define LOCKUP while(1) POLLING 111 | 112 | /* scale macros */ 113 | #define SCF_X 80 /* scale factor percent x */ 114 | #define SCF_Y 85 /* scale factor percent y */ 115 | 116 | #define SCALE_FACTOR_X ((float)SCF_X/100) /* scale factor between sony and arcade X */ 117 | #define SCALE_FACTOR_Y ((float)SCF_Y/100) /* scale factor between sony and arcade Y */ 118 | 119 | 120 | #define SCX(_x) ((long)(SCALE_FACTOR_X*(long)(_x))) 121 | #define SCY(_y) ((long)(SCALE_FACTOR_Y*(long)(_y))) 122 | 123 | #define SCX_V(_x,_v) ((long)((_v)*(long)(_x))) 124 | #define SCY_V(_y,_v) ((long)((_v)*(long)(_y))) 125 | 126 | 127 | #endif /* __system_h__ */ 128 | -------------------------------------------------------------------------------- /VALLOC.H: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | File: valloc.h 3 | 4 | By: David Schwartz 5 | 6 | Date: Jan 1995 7 | 8 | (C) Williams Entertainment 9 | 10 | Mortal Kombat III VALLOC header 11 | ******************************************************************************/ 12 | 13 | #ifndef __mk_valloc_h__ 14 | #define __mk_valloc_h__ 15 | 16 | /* 17 | * DEFINITIONS 18 | */ 19 | #define VRAM_DEBUG 1 20 | 21 | #define MIN_VRAM_ALLOC_SIZE 16 // each tpage is divided into this many number of squares 22 | #define MIN_VRAM_ALLOC_SHIFT 4 // shift to simulate the divide of (MIN_VRAM_ALLOC_SIZE) 23 | 24 | #define MAX_DYNAMIC_TPAGE 6 // max # of tpages supported for dynamic memory 25 | 26 | 27 | 28 | /* error stuff */ 29 | #define VRAM_VALLOC_OK 0 // no problems 30 | #define VRAM_VALLOC_INIT_FAILED -1 // init failed 31 | #define VRAM_VFREE_ZERO -2 // tried to free a zero size block 32 | #define VRAM_VFREE_TPAGE -3 // tpage does not exist 33 | #define VRAM_VALLOC_NOSPACE -4 // no space in vram 34 | 35 | /* structure for each square in the tpage map */ 36 | typedef union vmeminfo { 37 | WORD v_xyinfo; // y:x 38 | struct { 39 | BYTE v_x; // width of allocated block this piece is containted int 40 | BYTE v_y; // height of allocated block this piece is containted int 41 | } u; 42 | } VMEMINFO; 43 | 44 | /* structure for each tpage entry */ 45 | typedef struct vpageinfo { 46 | VMEMINFO *vptr; // ptr to an arry for the tpage 47 | WORD vtpage; // base tpage info 48 | WORD vbasex; // base x pos in vram 49 | WORD vbasey; // base y pos in vram 50 | } VPAGEINFO; 51 | 52 | 53 | /* VRAM memory allocation structure */ 54 | typedef struct v_vrammem { 55 | void *v_imgptr; // ptr to start addr of image 56 | WORD v_cnt; // to # objects using entry (-1 = permanent) 57 | OHEADER v_textinfo; // texture info for image 58 | } VRAMMEM; 59 | 60 | #define MAX_VRAMMEM 160 // # of entries in manager cache 61 | #define VRAM_PERM 0xffff // vram cache entry is permanent 62 | #define VCACHE_FAILED 0xffff // indictate no cache 63 | 64 | /* 65 | * RAM 66 | */ 67 | __EXTERN__ VRAMMEM vram_cache[MAX_VRAMMEM]; /* cache of entries in vram memory manager */ 68 | 69 | /* 70 | * PROTOTYPES 71 | */ 72 | WORD valloc_init(WORD *free_mem); 73 | WORD valloc_rect(WORD width,WORD height,WORD *x_off,WORD *y_off); 74 | WORD vfree_rect(WORD tpage,WORD x_off,WORD y_off); 75 | void vram_debug(WORD); 76 | short vscan_page(VPAGEINFO *vptr,WORD width,WORD height,WORD *x_off,WORD *y_off); 77 | short vsearch_rect(VMEMINFO *vmptr,WORD width,WORD height); 78 | void vmark_rect(VMEMINFO *vmptr,WORD width,WORD height); 79 | 80 | /* vram cache prototypes */ 81 | void init_vram_cache(WORD *); 82 | WORD alloc_vram_mem(void *,OHEADER *,WORD); 83 | void dealloc_vram_mem(WORD); 84 | WORD alloc_vram_perm(OIMGTBL *,void *,WORD,WORD); 85 | WORD alloc_vram_perm_bg(OIMGTBL *,void *); 86 | void alloc_vram_perm_bg_list(ADDRESS *,void *); 87 | void flush_vram_mem(void); 88 | 89 | /* 90 | * MACROS 91 | */ 92 | #define alloc_cache(_img,_heap,_obj) \ 93 | (_obj)->header.t_width=((OIMGTBL *)(_img))->size.u.xpos, \ 94 | (_obj)->header.t_height=((OIMGTBL *)(_img))->size.u.ypos, \ 95 | (_obj)->ovcache=alloc_vram_mem((void *)COMPUTE_ADDR((_heap),(LONG)(((OIMGTBL *)(_img))->isagptr)),&((_obj)->header),(_obj)->ovcache) 96 | 97 | #endif /* __mk_valloc_h__ */ 98 | 99 | --------------------------------------------------------------------------------