I love when games are accidentally compiled with files that shouldn't have been compiled. My favorite being source code. Do you know of any games that do this by accident (except for Sonic 2NA)? Here's a nice one:
This comes from ESPN Baseball Tonight:
Here's some more from the same game:
Of course, it's incomplete (cuts off). But it's a lot, heh.
Got anymore? :P
This comes from ESPN Baseball Tonight:
CODE
entry point: 00000200
no relocation info
executable
START END LENGTH FILE SECTION TYPE
00000000 00000007 000008 X.OUT >(ORG) T
00000000 00000007 000008 MAIN.O (ORG) T ORG
00000060 0000008f 000030 X.OUT >(ORG) T
00000060 0000008f 000030 MAIN.O (ORG) T ORG
00000100 00000100 000000 X.OUT >(ORG) T
00000100 00000100 000000 MAIN.O (ORG) T ORG
00000100 000001ff 000100 X.OUT >(ORG) T
00000100 000001ff 000100 MAIN.O (ORG) T ORG
00000200 00000ac3 0008c4 X.OUT >(ORG) T
00000200 00000ac3 0008c4 MAIN.O (ORG) T ORG
00000ac4 0001272b 011c68 X.OUT >.text T
00000ac4 00000baf 0000ec MAIN.O .text T
00000bb0 000069a7 005df8 WCS.O .text T
000069a8 0000fe73 0094cc AI.O .text T
0000fe74 00010f2f 0010bc LOGOS.O .text T
00010f30 0001101f 0000f0 LZWDECOM.O .text T
00011020 0001157f 000560 PPGE_PM.O .text T
00011580 0001159f 000020 PPGE_PMC.O .text T
000115a0 00012437 000e98 PPGE_GD.O .text T
00012438 00012507 0000d0 PPGE_GDC.O .text T
00012508 00012508 000000 GRAPHICS.O .text T
00012508 00012508 000000 FIELD.O .text T
00012508 00012508 000000 STRIPS.O .text T
00012508 00012508 000000 BATTART.O .text T
00012508 00012508 000000 LBATTART.O .text T
00012508 00012508 000000 FIELDART.O .text T
00012508 00012508 000000 FIELDRUN.O .text T
00012508 00012508 000000 FIELDTHR.O .text T
00012508 00012508 000000 FIELDCAT.O .text T
00012508 00012508 000000 RUNNER.O .text T
00012508 0001258b 000084 SOUND.O .text T
0001258c 0001272b 0001a0 STATS.O .text T
00020000 0005ac4b 03ac4c X.OUT >sounds D
00020000 0005ac4b 03ac4c GEMS.O .text T
0005ac4c 0005ac4c 000000 GEMS.O .data D
0005ac4c 0005ac4c 000000 GEMS.O .bss B (00)
0005ac4c 0006b3f7 0107ac X.OUT >field D
0005ac4c 0006b3f7 0107ac FIELD.O field D
0006b3f8 001dad87 16f990 X.OUT >graphics D
0006b3f8 0006b477 000080 LOGOS.O graphics D
0006b478 00088963 01d4ec GRAPHICS.O graphics D
00088964 0008fe1b 0074b8 FIELD.O graphics D
0008fe1c 000951bf 0053a4 STRIPS.O graphics D
000951c0 000bb8df 026720 BATTART.O graphics D
000bb8e0 000c4fbf 0096e0 LBATTART.O graphics D
000c4fc0 000e67a7 0217e8 FIELDART.O graphics D
000e67a8 00101297 01aaf0 FIELDRUN.O graphics D
00101298 0012ac7f 0299e8 FIELDTHR.O graphics D
0012ac80 001a1b67 076ee8 FIELDCAT.O graphics D
001a1b68 001dad87 039220 RUNNER.O graphics D
001dad88 001df02b 0042a4 X.OUT >tables D
001dad88 001dad88 000000 MAIN.O tables D
001dad88 001dbabb 000d34 WCS.O tables D
001dbabc 001dc83b 000d80 AI.O tables D
001dc83c 001dcc4b 000410 LOGOS.O tables D
001dcc4c 001dcf4b 000300 PPGE_PM.O tables D
001dcf4c 001dcf4c 000000 PPGE_PMC.O tables D
001dcf4c 001dcf6b 000020 PPGE_GD.O tables D
001dcf6c 001dcf6c 000000 PPGE_GDC.O tables D
001dcf6c 001dcf6c 000000 GRAPHICS.O tables D
001dcf6c 001dcf8b 000020 FIELD.O tables D
001dcf8c 001df02b 0020a0 STATS.O tables D
001df02c 001df02c 000000 X.OUT >.batt
001df02c 001f6323 0172f8 X.OUT >.graphic D
001df02c 001f6323 0172f8 LOGOS.O .graphic D
00ff0000 00fff197 00f198 X.OUT >.data D
00ff0000 00ff0000 000000 MAIN.O .data D
00ff0000 00ffce23 00ce24 WCS.O .data D
00ffce24 00ffce24 000000 AI.O .data D
00ffce24 00ffce24 000000 LOGOS.O .data D
00ffce24 00ffce24 000000 LZWDECOM.O .data D
00ffce24 00ffce33 000010 PPGE_PM.O .data D
00ffce34 00ffce34 000000 PPGE_PMC.O .data D
00ffce34 00fff013 0021e0 PPGE_GD.O .data D
00fff014 00fff014 000000 PPGE_GDC.O .data D
00fff014 00fff014 000000 GRAPHICS.O .data D
00fff014 00fff014 000000 FIELD.O .data D
00fff014 00fff014 000000 STRIPS.O .data D
00fff014 00fff014 000000 BATTART.O .data D
00fff014 00fff014 000000 LBATTART.O .data D
00fff014 00fff014 000000 FIELDART.O .data D
00fff014 00fff014 000000 FIELDRUN.O .data D
00fff014 00fff014 000000 FIELDTHR.O .data D
00fff014 00fff014 000000 FIELDCAT.O .data D
00fff014 00fff014 000000 RUNNER.O .data D
00fff014 00fff014 000000 SOUND.O .data D
00fff014 00fff197 000184 STATS.O .data D
00fff198 00fff1b3 00001c X.OUT >.bss B (00)
00fff198 00fff198 000000 MAIN.O .bss B (00)
00fff198 00fff1b3 00001c WCS.O .bss B (00)
00fff1b4 00fff1b4 000000 AI.O .bss B (00)
00fff1b4 00fff1b4 000000 LOGOS.O .bss B (00)
00fff1b4 00fff1b4 000000 LZWDECOM.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_PM.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_PMC.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_GD.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_GDC.O .bss B (00)
00fff1b4 00fff1b4 000000 GRAPHICS.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELD.O .bss B (00)
00fff1b4 00fff1b4 000000 STRIPS.O .bss B (00)
00fff1b4 00fff1b4 000000 BATTART.O .bss B (00)
00fff1b4 00fff1b4 000000 LBATTART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDRUN.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDTHR.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDCAT.O .bss B (00)
00fff1b4 00fff1b4 000000 RUNNER.O .bss B (00)
00fff1b4 00fff1b4 000000 SOUND.O .bss B (00)
00fff1b4 00fff1b4 000000 STATS.O .bss B (00)
RESERVED SYMBOLS
00fff1b4 heap_org
00000e4c heap_len
ff1b4 000000 FIELDART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDRUN.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDTHR.O .bss B (00)
00fff1b4 00fff1b4
no relocation info
executable
START END LENGTH FILE SECTION TYPE
00000000 00000007 000008 X.OUT >(ORG) T
00000000 00000007 000008 MAIN.O (ORG) T ORG
00000060 0000008f 000030 X.OUT >(ORG) T
00000060 0000008f 000030 MAIN.O (ORG) T ORG
00000100 00000100 000000 X.OUT >(ORG) T
00000100 00000100 000000 MAIN.O (ORG) T ORG
00000100 000001ff 000100 X.OUT >(ORG) T
00000100 000001ff 000100 MAIN.O (ORG) T ORG
00000200 00000ac3 0008c4 X.OUT >(ORG) T
00000200 00000ac3 0008c4 MAIN.O (ORG) T ORG
00000ac4 0001272b 011c68 X.OUT >.text T
00000ac4 00000baf 0000ec MAIN.O .text T
00000bb0 000069a7 005df8 WCS.O .text T
000069a8 0000fe73 0094cc AI.O .text T
0000fe74 00010f2f 0010bc LOGOS.O .text T
00010f30 0001101f 0000f0 LZWDECOM.O .text T
00011020 0001157f 000560 PPGE_PM.O .text T
00011580 0001159f 000020 PPGE_PMC.O .text T
000115a0 00012437 000e98 PPGE_GD.O .text T
00012438 00012507 0000d0 PPGE_GDC.O .text T
00012508 00012508 000000 GRAPHICS.O .text T
00012508 00012508 000000 FIELD.O .text T
00012508 00012508 000000 STRIPS.O .text T
00012508 00012508 000000 BATTART.O .text T
00012508 00012508 000000 LBATTART.O .text T
00012508 00012508 000000 FIELDART.O .text T
00012508 00012508 000000 FIELDRUN.O .text T
00012508 00012508 000000 FIELDTHR.O .text T
00012508 00012508 000000 FIELDCAT.O .text T
00012508 00012508 000000 RUNNER.O .text T
00012508 0001258b 000084 SOUND.O .text T
0001258c 0001272b 0001a0 STATS.O .text T
00020000 0005ac4b 03ac4c X.OUT >sounds D
00020000 0005ac4b 03ac4c GEMS.O .text T
0005ac4c 0005ac4c 000000 GEMS.O .data D
0005ac4c 0005ac4c 000000 GEMS.O .bss B (00)
0005ac4c 0006b3f7 0107ac X.OUT >field D
0005ac4c 0006b3f7 0107ac FIELD.O field D
0006b3f8 001dad87 16f990 X.OUT >graphics D
0006b3f8 0006b477 000080 LOGOS.O graphics D
0006b478 00088963 01d4ec GRAPHICS.O graphics D
00088964 0008fe1b 0074b8 FIELD.O graphics D
0008fe1c 000951bf 0053a4 STRIPS.O graphics D
000951c0 000bb8df 026720 BATTART.O graphics D
000bb8e0 000c4fbf 0096e0 LBATTART.O graphics D
000c4fc0 000e67a7 0217e8 FIELDART.O graphics D
000e67a8 00101297 01aaf0 FIELDRUN.O graphics D
00101298 0012ac7f 0299e8 FIELDTHR.O graphics D
0012ac80 001a1b67 076ee8 FIELDCAT.O graphics D
001a1b68 001dad87 039220 RUNNER.O graphics D
001dad88 001df02b 0042a4 X.OUT >tables D
001dad88 001dad88 000000 MAIN.O tables D
001dad88 001dbabb 000d34 WCS.O tables D
001dbabc 001dc83b 000d80 AI.O tables D
001dc83c 001dcc4b 000410 LOGOS.O tables D
001dcc4c 001dcf4b 000300 PPGE_PM.O tables D
001dcf4c 001dcf4c 000000 PPGE_PMC.O tables D
001dcf4c 001dcf6b 000020 PPGE_GD.O tables D
001dcf6c 001dcf6c 000000 PPGE_GDC.O tables D
001dcf6c 001dcf6c 000000 GRAPHICS.O tables D
001dcf6c 001dcf8b 000020 FIELD.O tables D
001dcf8c 001df02b 0020a0 STATS.O tables D
001df02c 001df02c 000000 X.OUT >.batt
001df02c 001f6323 0172f8 X.OUT >.graphic D
001df02c 001f6323 0172f8 LOGOS.O .graphic D
00ff0000 00fff197 00f198 X.OUT >.data D
00ff0000 00ff0000 000000 MAIN.O .data D
00ff0000 00ffce23 00ce24 WCS.O .data D
00ffce24 00ffce24 000000 AI.O .data D
00ffce24 00ffce24 000000 LOGOS.O .data D
00ffce24 00ffce24 000000 LZWDECOM.O .data D
00ffce24 00ffce33 000010 PPGE_PM.O .data D
00ffce34 00ffce34 000000 PPGE_PMC.O .data D
00ffce34 00fff013 0021e0 PPGE_GD.O .data D
00fff014 00fff014 000000 PPGE_GDC.O .data D
00fff014 00fff014 000000 GRAPHICS.O .data D
00fff014 00fff014 000000 FIELD.O .data D
00fff014 00fff014 000000 STRIPS.O .data D
00fff014 00fff014 000000 BATTART.O .data D
00fff014 00fff014 000000 LBATTART.O .data D
00fff014 00fff014 000000 FIELDART.O .data D
00fff014 00fff014 000000 FIELDRUN.O .data D
00fff014 00fff014 000000 FIELDTHR.O .data D
00fff014 00fff014 000000 FIELDCAT.O .data D
00fff014 00fff014 000000 RUNNER.O .data D
00fff014 00fff014 000000 SOUND.O .data D
00fff014 00fff197 000184 STATS.O .data D
00fff198 00fff1b3 00001c X.OUT >.bss B (00)
00fff198 00fff198 000000 MAIN.O .bss B (00)
00fff198 00fff1b3 00001c WCS.O .bss B (00)
00fff1b4 00fff1b4 000000 AI.O .bss B (00)
00fff1b4 00fff1b4 000000 LOGOS.O .bss B (00)
00fff1b4 00fff1b4 000000 LZWDECOM.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_PM.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_PMC.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_GD.O .bss B (00)
00fff1b4 00fff1b4 000000 PPGE_GDC.O .bss B (00)
00fff1b4 00fff1b4 000000 GRAPHICS.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELD.O .bss B (00)
00fff1b4 00fff1b4 000000 STRIPS.O .bss B (00)
00fff1b4 00fff1b4 000000 BATTART.O .bss B (00)
00fff1b4 00fff1b4 000000 LBATTART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDRUN.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDTHR.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDCAT.O .bss B (00)
00fff1b4 00fff1b4 000000 RUNNER.O .bss B (00)
00fff1b4 00fff1b4 000000 SOUND.O .bss B (00)
00fff1b4 00fff1b4 000000 STATS.O .bss B (00)
RESERVED SYMBOLS
00fff1b4 heap_org
00000e4c heap_len
ff1b4 000000 FIELDART.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDRUN.O .bss B (00)
00fff1b4 00fff1b4 000000 FIELDTHR.O .bss B (00)
00fff1b4 00fff1b4
Here's some more from the same game:
CODE
* *
* Project: Sony ESPN Baseball *
* *
* Module: AI.S *
* *
* Module Creation Date: March 1993 *
* *
* Author: Russell Shanks *
* *
* Development System: Sierra Systems *
* *
*****************************************************************************
include MACROS.I
Include EQUATES.I
include sound.inc
*----------------------------------------------------------------------------
*****************************************************************************
* PPGE
*****************************************************************************
include ppge_var.inc
*----------------------------------------------------------------------------
*
section tables
xdef radar_ytable
xdef radar_xtable
InitialLogicTable ;entity descending order
dc.l HaloLogic
dc.l FieldXLogic,LookEntityLogic,LookEntityLogic
dc.l LookEntityLogic,LookEntityLogic,InitialThirdLogic
dc.l InitialSecondLogic,InitialFirstRunLogic
dc.l InitialBatterLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialCatcherLogic,InitialPitcherLogic
FielderSelectTable
dc.w FBaseman_ptr,Fbaseman_ptr,Sbaseman_ptr,Pitcher_ptr
dc.w ShortStop_ptr,Tbaseman_ptr,Tbaseman_ptr
dc.w Fbaseman_ptr,Sbaseman_ptr,Sbaseman_ptr,ShortStop_ptr
dc.w ShortStop_ptr,Tbaseman_ptr,Tbaseman_ptr
dc.w RFielder_ptr,RFielder_ptr,RFielder_ptr,CFielder_ptr
dc.w LFielder_ptr,LFielder_ptr,LFielder_ptr
FielderRF_tbl
dc.w 8,6,7,7,8,8,7,7
FielderThrowIS_tbl
dc.w 3,3,4,4,3,3,4,4 ;only 3 and 4's good here
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
* dc.b 14,15,16,17,18,19,20,21
dc.b 13,13,13,13,13,13,13,13
ballvscale_table
* dc.b 22,23,24,26,27,28,29,31
dc.b 13,13,14,14,15,16,17,18
* dc.b 32,33,34,36,37,38,39,41
dc.b 20,21,22,23,25,26,27,29
* dc.b 42,43,44,45,47,48,49,50
dc.b 30,31,32,33,35,36,37,38
* dc.b 52,53,54,55,57,58,59,60
dc.b 40,41,42,43,45,46,47,48
* dc.b 62,63,64,65,67,68,69,70
dc.b 50,51,52,53,54,55,56,57
* dc.b 71,73,74,75,76,78,79,80
dc.b 61,63,65,68,71,74,76,78
dc.b 81,83,84,85,86,88,89,90
dc.b 91,93,94,95,96,97,99,100
dc.b 101,102,104,105,106,107,109,110
dc.b 111,112,114,115,116,117,119,120
dc.b 121,122,123,125,126,127,128,130
dc.b 131,132,133,135,136,137,138,140
dc.b 141,142,143,145,146,147,148,150
dc.b 151,152,153,154,156,157,158,159
dc.b 161,162,163,164,166,167,168,169
dc.b 171,172,173,174,176,177,178,179
dc.b 180,182,183,184,185,187,188,189
dc.b 190,192,193,194,195,197,198,199
dc.b 200,202,203,204,205,206,208,209
dc.b 210,211,213,214,215,216,218,219
dc.b 220,221,223,224,225,226,228,229
dc.b 230,231,232,234,235,236,237,239
dc.b 240,241,242,244,245,246,247,249
dc.b 250,251,252,254,255,255
* dc.b 67,68,69,70,71,72,73,74
dc.b 31,33,35,37,39,41,43,47
runnervscale_table
* dc.b 75,76,77,78,79,80,81,82
dc.b 49,51,53,57,59,61,63,65
* dc.b 83,84,85,86,87,88,89,90
dc.b 67,69,71,73,75,77,79,81
* dc.b 91,92,93,94,95,96,97,98
dc.b 83,85,87,89,91,93,95,96
* dc.b 99,100,100,100,100,100,100,100
dc.b 97,97,98,98,99,99,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 101,102,104,105,106,107,109,110
dc.b 111,112,114,115,116,117,119,120
dc.b 121,122,123,125,126,127,128,130
dc.b 131,132,133,135,136,137,138,140
dc.b 141,142,143,145,146,147,148,150
dc.b 151,152,153,154,156,157,158,159
dc.b 161,162,163,164,166,167,168,169
dc.b 171,172,173,174,176,177,178,179
dc.b 180,182,183,184,185,187,188,189
dc.b 190,192,193,194,195,197,198,199
dc.b 200,202,203,204,205,206,208,209
dc.b 210,211,213,214,215,216,218,219
dc.b 220,221,223,224,225,226,228,229
dc.b 230,231,232,234,235,236,237,239
dc.b 240,241,242,244,245,246,247,249
dc.b 250,251,252,254,255,255
* dc.b 100,100,100,100,100,100,100,100
*runnervscale_table
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 101,102,104,105,106,107,109,110
* dc.b 111,112,114,115,116,117,119,120
* dc.b 121,122,123,125,126,127,128,130
* dc.b 131,132,133,135,136,137,138,140
* dc.b 141,142,143,145,146,147,148,150
* dc.b 151,152,153,154,156,157,158,159
* dc.b 161,162,163,164,166,167,168,169
* dc.b 171,172,173,174,176,177,178,179
* dc.b 180,182,183,184,185,187,188,189
* dc.b 190,192,193,194,195,197,198,199
* dc.b 200,202,203,204,205,206,208,209
* dc.b 210,211,213,214,215,216,218,219
* dc.b 220,221,223,224,225,226,228,229
* dc.b 230,231,232,234,235,236,237,239
* dc.b 240,241,242,244,245,246,247,249
* dc.b 250,251,252,254,255,255
* dc.w #0,#430,#518,#573,#615,#647
dc.w #430,#430,#430,#430,#518,#573,#615,#647
walltable
dc.w #686,#717,#742,#766,#792,#816,#838,#862 ;16
dc.w #878,#893,#913,#924,#925,#925,#925,#925 ;24
dc.w #925,#925,#925,#925,#925,#925,#925,#925 ;32
dc.w #926,#927,#928,#929,#930,#930,#930,#926 ;40
dc.w #922,#918,#914,#910,#906,#902,#898,#894 ;48
dc.w #890,#886,#882,#878,#874,#870,#866,#862 ;56
dc.w #858,#854,#850,#846,#842,#838,#834,#830 ;64
dc.w #826,#822,#818,#814,#810,#806,#802,#798 ;72
dc.w #794,#790,#786,#782,#768,#764,#760,#756 ;80
dc.w #752,#748,#744,#738,#734,#730,#726,#722 ;88
dc.w #718,#714,#710,#706,#704,#700,#696,#692 ;96
dc.w #688,#684,#680,#676,#672,#668,#664,#660 ;104
dc.w #656,#652,#648,#644,#640,#634,#630,#626 ;112
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;40
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;48
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;56
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;64
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;72
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;80
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;88
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;96
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;104
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;112
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;120
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;128
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;136
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;144
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;152
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;160
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;168
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;176
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;184
dc.b 8,8,8,8,8,8,8,8
To1AndHome
* dc.b 8,8,8,8,8,8,8,8 ;0-7
dc.b 9,9,9,9,9,9,9,8 ;15
dc.b 8,8,8,8,8,7,7,7 ;23
dc.b 7,7,7,6,6,6,6,6 ;31
dc.b 6,5,5,5,5,5,5,4 ;39
dc.b 4,4,4,4,4,3,3,3 ;47
dc.b 3,3,3,3,2,2,2,2 ;55
dc.b 2,2,1,1,1,1,1,1 ;63
dc.b 1,1,1,1,1,1,1,1 ;71
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 4,4,4,4,4,4,4,4,4,4
To2And3
dc.b 4,4,4,4,4,4,4,4,4,4
dc.b 3,3,3,3,3,3,3,3,3,3
dc.b 2,2,2,2,2,2,2,2,2,2
dc.b 1,1,1,1,1,1,1,1,1,1
dc.b 0,0,0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0,0
FielderScaleTable
dc.b 0,0,0,0,0,0,0,1 ;8
dc.b 1,1,1,1,1,1,2,2 ;16
dc.b 2,2,2,2,2,3,3,3 ;32
* dc.b 3,3,3,3,4,4,4,4 ;40
* dc.b 4,4,4,5,5,5,5,5 ;48
dc.b 3,4,4,4,4,5,5,5 ;40
dc.b 5,5,5,5,5,5,5,5 ;48
dc.b 5,6,6,6,6,6,6,6 ;56
dc.b 6,6,6,6,6,6,6,6 ;64
dc.b 6,6,6,6,6,6,6,6 ;72
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;184
Pdirectiontable
dc.b #0,#128,#0,#128,#192,#160,#224,#224
dc.b #64,#96,#32,#64,#64,#64,#64,#64
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 1,2,3,4,5,6,7,8 ; -8 - -1
radar_ytable
dc.b 9,10,11,12,13,14,15,16 ; 0-7
dc.b 17,18,19,20,21,21,22,23 ; 8-15
dc.b 23,24,25,25,26,27,27,28 ; 16-23
dc.b 29,29,30,30,31,31,32,32 ; 24-31
dc.b 33,33,34,34,34,35,35,35 ; 32-39
dc.b 36,36,36,37,37,37,38,38 ; 40-47
dc.b 38,39,39,40,40,41,41,42 ; 48-55
dc.b 42,43,43,44,44,45,45,46 ; 56-63 Pitcher's mound y=61
dc.b 46,46,47,47,47,47,48,48 ; 64-71
dc.b 48,48,48,49,49,49,49,49
dc.b 49,50,50,50,50,50,50,51
dc.b 51,51,51,51,51,52,52,52
dc.b 52,52,52,53,53,53,53,53
dc.b 53,54,54,54,54,54,54,55
dc.b 55,55,55,55,55,56,56,56
dc.b 56,56,56,57,57,57,57,57
dc.b 57,58,58,58,58,58,58,59
dc.b 59,59,59,59,60,60,60,60
dc.b 60,60,61,61,61,61,61,61
dc.b 62,62,62,62,62,62,63,63
dc.b 63,63,63,63,64,64,64,64
dc.b 64,64,65,65,65,65,65,65
dc.b 66,66,66,66,66,66,67,67
dc.b 67,67,67,67,68,68,68,68
Radar_xtable
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #16,#16,#16,#16,#16,#16,#16,#16
dc.b #16,#16,#16,#16,#16,#16,#16,#17
dc.b #17,#17,#17,#17,#17,#17,#17,#17
dc.b #17,#17,#17,#17,#17,#18,#18,#18
dc.b #18,#18,#18,#18,#18,#18,#18,#18
dc.b #18,#18,#18,#19,#19,#19,#19,#19
dc.b #19,#19,#19,#19,#19,#19,#19,#19
dc.b #19,#20,#20,#20,#20,#20,#20,#20
dc.b #20,#20,#20,#20,#20,#20,#20,#20
dc.b #21,#21,#21,#21,#21,#21,#21,#21
dc.b #21,#21,#21,#21,#21,#21,#22,#22
dc.b #22,#22,#22,#22,#22,#22,#22,#22
dc.b #22,#22,#22,#22,#23,#23,#23,#23
dc.b #23,#23,#23,#23,#23,#23,#23,#23
dc.b #23,#23,#24,#24,#24,#24,#24,#24
dc.b #24,#24,#24,#24,#24,#24,#24,#24
dc.b #24,#25,#25,#25,#25,#25,#25,#25
dc.b #25,#25,#25,#25,#25,#25,#25,#26
dc.b #26,#26,#26,#26,#26,#26,#26,#26
dc.b #26,#26,#26,#26,#26,#27,#27,#27
dc.b #27,#27,#27,#27,#27,#27,#27,#27
dc.b #27,#27,#27,#28,#28,#28,#28,#28
dc.b #28,#28,#28,#28,#28,#28,#28,#28
dc.b #28,#29,#29,#29,#29,#29,#29,#29
dc.b #29,#29,#29,#29,#29,#29,#29,#29
dc.b #30,#30,#30,#30,#30,#30,#30,#30
dc.b #30,#30,#30,#30,#30,#30,#31,#31
dc.b #31,#31,#31,#31,#31,#31,#31,#31
dc.b #31,#31,#31,#31,#32,#32,#32,#32
dc.b #32,#32,#32,#32,#32,#32,#32,#32
dc.b #32,#32,#33,#33,#33,#33,#33,#33
dc.b #33,#33,#33,#33,#33,#33,#33,#33
dc.b #33,#34,#34,#34,#34,#34,#34,#34
dc.b #34,#34,#34,#34,#34,#34,#34,#35
dc.b #35,#35,#35,#35,#35,#35,#35,#35
dc.b #35,#35,#35,#35,#35,#36,#36,#36
dc.b #36,#36,#36,#36,#36,#36,#36,#36
dc.b #36,#36,#36,#37,#37,#37,#37,#37
dc.b #37,#37,#37,#37,#37,#37,#37,#37
dc.b #37,#38,#38,#38,#38,#38,#38,#38
dc.b #38,#38,#38,#38,#38,#38,#38,#38
dc.b #39,#39,#39,#39,#39,#39,#39,#39
dc.b #39,#39,#39,#39,#39,#39,#40,#40
dc.b #40,#40,#40,#40,#40,#40,#40,#40
dc.b #40,#40,#40,#40,#41,#41,#41,#41
dc.b #41,#41,#41,#41,#41,#41,#41,#41
dc.b #41,#41,#42,#42,#42,#42,#42,#42
dc.b #42,#42,#42,#42,#42,#42,#42,#42
CPitchType_tbl
dc.w 0,0,0
dc.w #Joy_U,#Joy_U,#Joy_U
dc.w #Joy_D,#Joy_D,#Joy_D
dc.w #Joy_L,#Joy_L,#Joy_L
dc.w #Joy_R,#Joy_R,#Joy_R
; 0 down middle, 1 high, 2 low, 3 left, 4 right
xdef PlayerPos_EntityNum_tbl
PlayerPos_EntityNum_tbl
dc.w #Pitcher_ptr,#Pitcher_ptr ; s/r pitcher
dc.w #FBaseman_ptr
dc.w #SBaseman_ptr
dc.w #TBaseman_ptr
dc.w #ShortStop_ptr
dc.w #LFielder_ptr
dc.w #RFielder_ptr
dc.w #CFielder_ptr
dc.w #Catcher_ptr
dc.w #Batter_ptr
AFFlipTable
dc.w FBaseman_ptr,TBaseman_ptr
dc.w SBaseman_ptr,ShortStop_ptr
dc.w RFielder_ptr,LFielder_ptr
section .text
BatRangeTable
dc.w BatLowHitRange,BatMidHitRange
dc.w BatHighHitRange,BatMidHitRange
xdef AI
xdef NullLogic
xdef BatSwing_000
xdef Pitch_000
xdef Bounds_RL
xdef HaloLogic
xdef FieldXLogic
xdef LookEntityLogic
xdef InitialBallLogic
xdef BallShadowLogic
xdef InitialCatcherLogic
xdef InitialPitcherLogic
xdef InitialBatterLogic
xdef InitialCameraLogic
xdef FractionalMultiply
xdef InitialFielderLogic
xdef InitialRunnerLogic
xdef InitialFirstRunLogic
xdef InitialSecondLogic
xdef InitialThirdLogic
***********************************************************************
Cosine MACRO
movem.l \1/A0,-(sp)
lea.l Cosine_Table,A0
lsl.w #1,\1
move.w (A0,\1.w),\3
muls.w \2,\3
movem.l (sp)+,\1/A0
ENDM
Sine MACRO
movem.l \1/A0,-(sp)
lea.l Sine_Table,A0
lsl.w #1,\1
move.w (A0,\1.w),\3
muls.w \2,\3
movem.l (sp)+,\1/A0
ENDM
Atan MACRO
movem.l \1/\2/A0,-(sp)
lea.l ArcTAN_Table,A0
lsr.l #8,\1
IFEQ ArcTan_Bytes-1
lsr.l #1,\1
ELSEC
lsr.l #1,\1
ENDC
add.l #$8000,\2
clr.w \2
swap \2
tst.l \2
bne .do_div\@
move.w #0,\3
bra .atx\@
.do_div\@
divu.w \2,\1
cmp.w #$80,\1
blt .adj\@
move.w #$20,\3
jmp .atx\@
.adj\@
sub.w #1,\1
bpl .do_shift\@
clr.w \1
.do_shift\@
IFEQ ArcTan_Bytes-1
move.w \1,\2
and.w #$7E,\1
move.w (A0,\1.w),\3
btst #0,\2
bne .got_atan\@
lsr.w #8,\3
.got_atan\@
and.w #$00FF,\3
ELSEC
lsl.w #1,\1
move.w (A0,\1.w),\3
ENDC
.atx\@
movem.l (sp)+,\1/\2/A0
ENDM
AI
movem.l D0-D7/A0-A6,-(sp)
move.l sp,StackDebugPtr
move.w Num_Entities,D7
NORL
cmp.l StackDebugPtr,sp
bne NORL
lea.l VTentity,A0
sub.l #1,D7
bmi _AI_done
move.l D7,D0
asl.l #Index_Shift,D0
* cmp.w #0,VTFon(A0,D0.w) ;is this entity to be processed?
* beq NORL ;if not then get the next one
cmp.w #2,RunnerExists
ble .c1
cmp.w #Batter_ptr,d0
ble .c1
tst.w VTFrend(a0,d0.w)
bne .c1
move.w d7,d6
and.w #1,d6
move.w VBlank_cnt,d5
and.w #1,d5
eor.w d5,d6
bne NORL
.c1
move.l VTseq_step(A0,D0.w),D1 ;does this entity have AI?
beq NORL ;if not then get the next one
move.l D1,A1
jmp (A1) ;otherwise do AI
_AI_done
movem.l (sp)+,D0-D7/A0-A6
rts
*****************************************************************************
NullLogic jmp NORL
InfOutfline equ SBase_Y-$50000
BILine1y equ #$34 ;20
BILine2y equ #$c
Grab_Radius equ $20000
BallSpeed equ $-200000
Pball_x equ 406
Pball_y equ -21
BatHitFrame equ 15 ;18
CheckSwingFrame equ 15 ;18
RBatBoxMin equ $ffcc
RBatBoxMax equ $ffe0 ;$ffe5
LBatBoxMin equ $20 ;$1b
LBatBoxMax equ $34
PitcherMaxL equ $fffc
PitcherMaxR equ $4
BatHitToRunStrip equ $0
SlowPitchSpeed equ $08
SlowPitchSpeedz equ $2
MediumPitchSpeed equ $09
MediumPitchSpeedz equ $2
FastPitchSpeed equ $0b ;a
FastPitchSpeedz equ $1
StraightPitch equ $0
RightCurvePitch equ $1
LeftCurvePitch equ $2
UpCurvePitch equ $4
DownCurvePitch equ $8
GroundFriction equ $00000b00 ;500
BatLowHit equ $0
BatMidHit equ $2
BatHighHit equ $4
Bunt equ $6
BatYRangeLow equ $95 ;$082
BatYRangeMid equ $a0 ;$095
BatYRangeHigh equ $0ac
*BallRangeHigh equ $0b2 ;off bottom of screen
BallRangeHigh equ $0c0 ;off bottom of screen
BallMaxX equ $0400 ;off right of screen
BallMinX equ $fc00 ;off left of screen
HitBoxY equ $095
HitBoxTop equ $0b0 ;90
HitBoxBottom equ $030
HitBoxLeft equ $fff3
HitBoxRight equ $b
Fielder_Reach equ $d0
FielderRunSpeed equ $5800 ;10000
Strike equ $0001
Ball equ $ffff
HT_Home_Run equ #1
HT_Outf equ #2
HT_Ord equ #0
HT_Foul equ #3
HT_Bunt equ #4
HT_IFPop equ #5
BatLowHitRange equ 124 ;#$48
BatMidHitRange equ 153 ;#$90
BatHighHitRange equ 156 ;#$cb
MaxZHeight equ #$400000
ballvscale_lo equ -7
ballvscale_high equ BallRangeHigh
*****************************************************************************
WaitOnAnimation
tst.w VTFrdir(a0,d0.w) ;if animation not running don't wait
beq setnextseq
tst.w VTFrend(a0,d0.w)
beq .done
setnextseq
move.l VTNextSeq(a0,d0.w),VTSeq_step(a0,d0.w)
clr.w VTFrdir(a0,d0.w)
.done jmp NORL
*****************************************************************************
WaitOnCatchAnimation
jsr checktags
tst.w VTFrdir(a0,d0.w) ;if animation not running don't wait
beq .setnextseq
tst.w VTFrend(a0,d0.w)
beq .done
.setnextseq
move.l VTNextSeq(a0,d0.w),VTSeq_step(a0,d0.w)
clr.w VTFrdir(a0,d0.w)
.done jmp NORL
**************************************************************
xdef HRDerbyLogic
HRDerbyLogic
tst.w DerbyDone
bne .waitstart
move.w Fcontrollers,d1 ;allow S to exit hrderby
or.w BControllers,d1
btst #Joy_S,d1
beq .r1
lsr.w #8,d1
btst #Joy_S,d1
beq .waitstart
.r1
lea.l DerbyBatterNum,a1
add.l BteamAdj,a1
move.w (a1),PlayerAtBat
tst.w PlayerAtBat ;QUICK PATCH : FIND BUG IN DOSUBS!
bge .bp1
clr.w PlayerAtBat
.bp1
tst.w DerbyEvent
beq .done
jsr DisplayDerbyInfo
cmp.w #15,DerbyPitchNum
blt .done
tst.w NumGamers
beq .dr
tst.w DerbyPlayer
bne .dr
jsr Clear_ScrollA
.dr
jsr DisplayDerbyRanking
cmp.w #1,NumGamers ;derby over if 1 player mode
blt .derbydone
tst.w DerbyPlayer ;or if player 2 is done
beq .c1
.derbydone
move.w #1,DerbyDone
clr.w VTFrdir(a0,d0.w)
clr.w FComputer
bra .done
.c1
move.w #1,NeedNewBatter
eor.l #2,FTeamAdj
eor.l #2,BTeamAdj
move.w BTeamNum,d1
move.w FTeamNum,BTeamNum
move.w d1,FTeamNum
clr.w DerbyPitchNum
clr.w DerbyScore
eor.w #1,DerbyPlayer
jsr SwitchPlayerPal
.done
jmp NORL
.waitstart
clr.w VTfrdir(a0,d0.w)
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_S,d1
beq .checkc
lsr.w #8,d1
btst #Joy_S,d1
bne .checkc
clr.w FComputer ;Reset Controllers
clr.l FTeamAdj
move.l #2,BTeamAdj
clr.w killradarentities
clr.w runsht
clr.w runsvt
move #0,FadeDirection ;Fade Down Field
move #2,FadeSpeed
clr.w PracticeMode
StopSound #S_DIGITALCROWD
jsr _Initgems
JSR StartFadeDown
jsr WaitForFadeUp
move.l #VCTRL,A4 *; Macros use these registers
move.w #$9000+000000,(A4) ;R16= | 0 | 0 |VS1|VS0| 0 | 0 |HS1|HS0| Scroll Size (00=32,01=64,10=XX,11=128)
jmp WarmEntry ;DoGame
.checkc
btst #Joy_C,d1
beq .done
lsr.w #8,d1
btst #Joy_C,d1
bne .done
* jsr Clear_ScrollA
clr.w DerbyDone
clr.w DerbyPitchNum
move.w #14,derbypitchnum
clr.w DerbyScore
move.w #1,DerbyEvent
move.w #1,NeedNewBatter
move.w #1,FComputer
tst.w NumGamers
bne .c1
clr.w DerbyPlayer
jmp NORL
**************************************************************
xdef PracticeModeLogic
PracticeModeLogic
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_S,d1
beq .c1
lsr.w #8,d1
btst #Joy_S,d1
bne .c1
bset #Joy_S,d1
move.w d1,BControllers
move.w d1,FControllers
jsr DisplayPractMsg
add.w #1,temp4
cmp.w #2,temp4
blt .c1
jmp DoGame
.c1
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_C,d1
beq .done
lsr.w #8,d1
btst #Joy_C,d1
bne .done
move.w #1,temp4
clr.w d1 ;set debounce next round
bset #Joy_C,d1
move.w d1,BControllers
move.w d1,FControllers
eor.l #2,FTeamAdj
eor.l #2,BTeamAdj
move.w Fcomputer,d1
move.w Bcomputer,Fcomputer
move.w d1,Bcomputer
jsr DisplayPractMsg
.done
jmp NORL
HeavyCameraLogic
movem.l a2,-(sp)
lea.l Vtentity+FieldX_ptr,a1
tst.w VTfon(a1)
bne _YNotReset
* lea.l Vtentity+ball_ent_ptr,a2
* move.l VTsped(a2),d2
* asl.l #4,d2
* move.w VTdir(a2),d1
* jsr GetEndPoint
* add.l VTy(a2),d2
* move.l d2,d1 ;leading y coordinate
move.l VTy(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r0
move.w Active_Fielder,d3 ;if ball thrown
move.l VTy(a0,d3.w),d1 ;follow active fielder
* move.l VTy(a0,d0.w),d1
.r0 sub.l Oldy,d1
bge _DY_Positive
asr.l #3,d1
cmp.l #-8*$10000,d1
bge _NDyok
move.l #-8*$10000,d1
_NDyok
move.l d1,PCamDy
bra _CamDyDone
_DY_Positive
asr.l #3,d1
cmp.l #8*$10000,d1
ble _PDyok
move.l #8*$10000,d1
_PDyok
move.l d1,PCamDy
_CamDyDone
move.l Oldy,d1
add.l PCamDy,d1
move.l d1,VTy(a0,d0.w)
bra _nowx
_YNotReset
move.l VTy(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r1
move.w Active_Fielder,d3
move.l VTy(a0,d3.w),d1
.r1
move.l d1,d2
and.l #$ffff0000,d2
move.l Oldy,d3
and.l #$ffff0000,d3
cmp.l d2,d3
beq _nowx
sub.l Oldy,d1
asr.l #4,d1
bpl _YDY_Positive
cmp.l NCamDY,d1
bge _NsetNCamDy
move.l NCamDy,d1
cmp.l #-8*$10000,d1
ble _YNDyok
sub.l #$4000,d1
_NSetNCamDY
move.l d1,NCamDy
_YNDyok
move.l d1,PCamDy
bra _YCamDyDone
_YDY_Positive
cmp.l NCamDY,d1
ble _PSetNCamDY
move.l NCamDy,d1
cmp.l #8*$10000,d1
bge _YPDyok
add.l #$4000,d1
_PSetNCamDY
move.l d1,NCamDY
_YPDyok
move.l d1,PCamDy
_YCamDyDone
move.l Oldy,d1
add.l PCamDy,d1
move.l d1,VTy(a0,d0.w)
_nowx
tst.w VTFon(a1)
bne _XNotReset
* lea.l Vtentity+ball_ent_ptr,a2
* move.l VTsped(a2),d2
* asl.l #4,d2
* move.w VTdir(a2),d1
* jsr GetEndPoint
* add.l VTx(a2),d1 ;leading x Coordinate
move.l Vtx(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r2
move.w Active_Fielder,d3
move.l VTx(a0,d3.w),d1
.r2
* move.l Vtx(a0,d0.w),d1
sub.l Oldx,d1
bge _DX_Positive
asr.l #3,d1
cmp.l #-16*$10000,d1 ;16
bge _NDxok
move.l #-16*$10000,d1 ;16
_NDxok
move.l d1,PCamDx
bra _CamDxDone
_DX_Positive
asr.l #3,d1
cmp.l #16*$10000,d1 ;16
ble _PDxok
move.l #16*$10000,d1 ;16
_PDxok
move.l d1,PCamDx
_CamDxDone
move.l Oldx,d1
add.l PCamDx,d1
move.l d1,VTx(a0,d0.w)
bra .done
_XNotReset
move.l VTx(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r3
move.w Active_Fielder,d3
move.l VTx(a0,d3.w),d1
.r3
move.l d1,d2
and.l #$ffff0000,d2
move.l Oldx,d3
and.l #$ffff0000,d3
cmp.l d2,d3
beq .done
sub.l Oldx,d1
asr.l #4,d1
bge _XDX_Positive
cmp.l NCamDX,d1
bge _NsetNCamDx
move.l NCamDx,d1
cmp.l #-16*$10000,d1 ;16
ble _XNDxok
sub.l #$4000,d1
_NSetNCamDX
move.l d1,NCamDx
_XNDxok
move.l d1,PCamDx
bra _XCamDxDone
_XDX_Positive
cmp.l NCamDX,d1
ble _PSetNCamDX
move.l NCamDx,d1
cmp.l #16*$10000,d1 ;16
bge _XPDxok
add.l #$4000,d1
_PSetNCamDX
move.l d1,NCamDX
_XPDxok
move.l d1,PCamDx
_XCamDxDone
move.l Oldx,d1
add.l PCamDx,d1
move.l d1,VTx(a0,d0.w)
.done
movem.l (sp)+,a2
rts
InitialCameraLogic
tst.w PanBack
bne _ResetCamera
tst.w InPitcherIF
bne .done
tst.w Catcherreturn
bne .done
bra _movewithball
.done
jmp NORL
_movewithball
tst.w BallLocation
beq .chbs
lea.l VTentity,a1
moveq.l #0,d1
move.w Balllocation,d1
asl.w #8,d1
add.l d1,a1
bra .smove
.chbs
lea.l VTEntity+BallShadow_Ent_ptr,a1
cmp.w #HT_Home_Run,Hittype
bne .smove
lea.l VTentity+Ball_ent_ptr,a1 ;follow ball
bra .smove
.smove
* lea.l VTentity+Batter_ptr,a1
move.w #0,d0
lea.l VTentity,a0
move.w #1,d4
move.w VTx(a1),VTx(a0)
move.w VTy(a1),VTy(a0)
lea.l VTentity+FieldX_ptr,a1
tst.w VTfon(a1)
beq .hcl
move.w VTx(a1),VTx(a0)
move.w VTy(A1),VTy(a0)
.hcl jsr HeavyCameraLogic
jsr ScrollXY
.done
lea.l Vtentity,a0
move.w #0,d0
move.l VTy(a0,d0.w),Oldy
move.l VTx(a0,d0.w),Oldx
jmp NORL
_ResetCamera
lea.l VTentity+ballshadow_ent_ptr,a1
move.w #3,VTx(a1)
move.w #110,VTy(a1)
move.w #CamULC_X,d0
move.w #CamULC_Y,d1
jsr StepPanCamera1
cmp.w #CamULC_X,Map_ULC_X
bne .done
cmp.w #CamULC_Y,Map_ULC_Y
bne .done
clr.w PanBack
lea.l Vtentity,a0
move.w #CamCenterX,Vtx(a0)
move.w #CamCentery,Vty(a0)
move.w #CamCenterX,oldx
move.w #CamCenterY,oldy
.done jmp NORL
setcamxy
movem.l d1/a0-a1,-(sp)
lea.l Vtentity,a0
lea.l VTentity+Ball_ent_ptr,a1
move.w VTx(a1),d1
add.w Map_Center_X,D1
sub.w #128,d1
move.w d1,VTx(a0)
move.l VTy(a1),d1
sub.w #16,d1
add.w Map_Center_Y,D1
sub.w #110,d1
move.w d1,VTy(a0)
movem.l (sp)+,d1/a0-a1
rts
*_ResetCamera
* clr.w PanBack
* lea.l Field_Map,A0
* move.w #CamULC_X,D0
* move.w #CamULC_Y,D1
* jsr load_field
* jmp NORL
StepPanCamera1
* D0 = target x position
* D1 = target y position
*
* Note: No bounds checking, scroll routines will not
* scroll off screen, but camx,camy will get screwed up
move.w d1,d6
sub.w Map_ULC_Y,d6 ; Targy - MapULCY = distanceY
beq .panx
bgt .pand ; if positive pan down
neg.w d6 ; distanceY = abs(distanceY)
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
* cmp.w PanSpeed,d6 ; move max 8 pixels this step
ble .sfu1
move.w PanSpeed,d6
sub.w #8,d6
.sfu1
jsr scroll_field_up
bra .panx
.pand
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
* cmp.w PanSpeed,d6
ble .sfd1
move.w PanSpeed,d6
sub.w #8,d6
.sfd1 jsr scroll_field_down
.panx
move.w d0,d6 ;get ball x
sub.w Map_ULC_X,d6
beq .done
bge .panr
neg.w d6
cmp.w PanSpeed,d6
ble .sfl1
move.w PanSpeed,d6
.sfl1
jsr scroll_field_left
bra .done
.panr
cmp.w PanSpeed,d6
ble .sfr1
move.w PanSpeed,d6
.sfr1
jsr scroll_field_right
.done rts
ScrollXY
movem.l d6/a1,-(sp)
lea.l vtentity,a1
move.w VTy(a1),d6
sub.w #16,d6
add.w Map_Center_Y,D6
sub.w #110,d6
sub.w Map_ULC_Y,d6 ; Targy - MapULCY = distanceY
beq .panx
bgt .pand ; if positive pan down
neg.w d6 ; distanceY = abs(distanceY)
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
ble .sfu1
move.w PanSpeed,d6
sub.w #8,d6
.sfu1
jsr scroll_field_up
bra .panx
.pand
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
ble .sfd1
move.w PanSpeed,d6
sub.w #8,d6
.sfd1 jsr scroll_field_down
.panx
tst.w HScrol
* Project: Sony ESPN Baseball *
* *
* Module: AI.S *
* *
* Module Creation Date: March 1993 *
* *
* Author: Russell Shanks *
* *
* Development System: Sierra Systems *
* *
*****************************************************************************
include MACROS.I
Include EQUATES.I
include sound.inc
*----------------------------------------------------------------------------
*****************************************************************************
* PPGE
*****************************************************************************
include ppge_var.inc
*----------------------------------------------------------------------------
*
section tables
xdef radar_ytable
xdef radar_xtable
InitialLogicTable ;entity descending order
dc.l HaloLogic
dc.l FieldXLogic,LookEntityLogic,LookEntityLogic
dc.l LookEntityLogic,LookEntityLogic,InitialThirdLogic
dc.l InitialSecondLogic,InitialFirstRunLogic
dc.l InitialBatterLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialFielderLogic,InitialFielderLogic
dc.l InitialCatcherLogic,InitialPitcherLogic
FielderSelectTable
dc.w FBaseman_ptr,Fbaseman_ptr,Sbaseman_ptr,Pitcher_ptr
dc.w ShortStop_ptr,Tbaseman_ptr,Tbaseman_ptr
dc.w Fbaseman_ptr,Sbaseman_ptr,Sbaseman_ptr,ShortStop_ptr
dc.w ShortStop_ptr,Tbaseman_ptr,Tbaseman_ptr
dc.w RFielder_ptr,RFielder_ptr,RFielder_ptr,CFielder_ptr
dc.w LFielder_ptr,LFielder_ptr,LFielder_ptr
FielderRF_tbl
dc.w 8,6,7,7,8,8,7,7
FielderThrowIS_tbl
dc.w 3,3,4,4,3,3,4,4 ;only 3 and 4's good here
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
dc.b 13,13,13,13,13,13,13,13
* dc.b 14,15,16,17,18,19,20,21
dc.b 13,13,13,13,13,13,13,13
ballvscale_table
* dc.b 22,23,24,26,27,28,29,31
dc.b 13,13,14,14,15,16,17,18
* dc.b 32,33,34,36,37,38,39,41
dc.b 20,21,22,23,25,26,27,29
* dc.b 42,43,44,45,47,48,49,50
dc.b 30,31,32,33,35,36,37,38
* dc.b 52,53,54,55,57,58,59,60
dc.b 40,41,42,43,45,46,47,48
* dc.b 62,63,64,65,67,68,69,70
dc.b 50,51,52,53,54,55,56,57
* dc.b 71,73,74,75,76,78,79,80
dc.b 61,63,65,68,71,74,76,78
dc.b 81,83,84,85,86,88,89,90
dc.b 91,93,94,95,96,97,99,100
dc.b 101,102,104,105,106,107,109,110
dc.b 111,112,114,115,116,117,119,120
dc.b 121,122,123,125,126,127,128,130
dc.b 131,132,133,135,136,137,138,140
dc.b 141,142,143,145,146,147,148,150
dc.b 151,152,153,154,156,157,158,159
dc.b 161,162,163,164,166,167,168,169
dc.b 171,172,173,174,176,177,178,179
dc.b 180,182,183,184,185,187,188,189
dc.b 190,192,193,194,195,197,198,199
dc.b 200,202,203,204,205,206,208,209
dc.b 210,211,213,214,215,216,218,219
dc.b 220,221,223,224,225,226,228,229
dc.b 230,231,232,234,235,236,237,239
dc.b 240,241,242,244,245,246,247,249
dc.b 250,251,252,254,255,255
* dc.b 67,68,69,70,71,72,73,74
dc.b 31,33,35,37,39,41,43,47
runnervscale_table
* dc.b 75,76,77,78,79,80,81,82
dc.b 49,51,53,57,59,61,63,65
* dc.b 83,84,85,86,87,88,89,90
dc.b 67,69,71,73,75,77,79,81
* dc.b 91,92,93,94,95,96,97,98
dc.b 83,85,87,89,91,93,95,96
* dc.b 99,100,100,100,100,100,100,100
dc.b 97,97,98,98,99,99,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 100,100,100,100,100,100,100,100
dc.b 101,102,104,105,106,107,109,110
dc.b 111,112,114,115,116,117,119,120
dc.b 121,122,123,125,126,127,128,130
dc.b 131,132,133,135,136,137,138,140
dc.b 141,142,143,145,146,147,148,150
dc.b 151,152,153,154,156,157,158,159
dc.b 161,162,163,164,166,167,168,169
dc.b 171,172,173,174,176,177,178,179
dc.b 180,182,183,184,185,187,188,189
dc.b 190,192,193,194,195,197,198,199
dc.b 200,202,203,204,205,206,208,209
dc.b 210,211,213,214,215,216,218,219
dc.b 220,221,223,224,225,226,228,229
dc.b 230,231,232,234,235,236,237,239
dc.b 240,241,242,244,245,246,247,249
dc.b 250,251,252,254,255,255
* dc.b 100,100,100,100,100,100,100,100
*runnervscale_table
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 100,100,100,100,100,100,100,100
* dc.b 101,102,104,105,106,107,109,110
* dc.b 111,112,114,115,116,117,119,120
* dc.b 121,122,123,125,126,127,128,130
* dc.b 131,132,133,135,136,137,138,140
* dc.b 141,142,143,145,146,147,148,150
* dc.b 151,152,153,154,156,157,158,159
* dc.b 161,162,163,164,166,167,168,169
* dc.b 171,172,173,174,176,177,178,179
* dc.b 180,182,183,184,185,187,188,189
* dc.b 190,192,193,194,195,197,198,199
* dc.b 200,202,203,204,205,206,208,209
* dc.b 210,211,213,214,215,216,218,219
* dc.b 220,221,223,224,225,226,228,229
* dc.b 230,231,232,234,235,236,237,239
* dc.b 240,241,242,244,245,246,247,249
* dc.b 250,251,252,254,255,255
* dc.w #0,#430,#518,#573,#615,#647
dc.w #430,#430,#430,#430,#518,#573,#615,#647
walltable
dc.w #686,#717,#742,#766,#792,#816,#838,#862 ;16
dc.w #878,#893,#913,#924,#925,#925,#925,#925 ;24
dc.w #925,#925,#925,#925,#925,#925,#925,#925 ;32
dc.w #926,#927,#928,#929,#930,#930,#930,#926 ;40
dc.w #922,#918,#914,#910,#906,#902,#898,#894 ;48
dc.w #890,#886,#882,#878,#874,#870,#866,#862 ;56
dc.w #858,#854,#850,#846,#842,#838,#834,#830 ;64
dc.w #826,#822,#818,#814,#810,#806,#802,#798 ;72
dc.w #794,#790,#786,#782,#768,#764,#760,#756 ;80
dc.w #752,#748,#744,#738,#734,#730,#726,#722 ;88
dc.w #718,#714,#710,#706,#704,#700,#696,#692 ;96
dc.w #688,#684,#680,#676,#672,#668,#664,#660 ;104
dc.w #656,#652,#648,#644,#640,#634,#630,#626 ;112
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;40
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;48
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;56
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;64
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;72
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;80
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;88
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;96
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;104
* dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;112
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;120
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;128
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;136
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;144
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;152
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;160
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;168
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;176
dc.w #961,#961,#961,#961,#961,#961,#961,#961 ;184
dc.b 8,8,8,8,8,8,8,8
To1AndHome
* dc.b 8,8,8,8,8,8,8,8 ;0-7
dc.b 9,9,9,9,9,9,9,8 ;15
dc.b 8,8,8,8,8,7,7,7 ;23
dc.b 7,7,7,6,6,6,6,6 ;31
dc.b 6,5,5,5,5,5,5,4 ;39
dc.b 4,4,4,4,4,3,3,3 ;47
dc.b 3,3,3,3,2,2,2,2 ;55
dc.b 2,2,1,1,1,1,1,1 ;63
dc.b 1,1,1,1,1,1,1,1 ;71
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 1,1,1,1,1,1,1,1
dc.b 4,4,4,4,4,4,4,4,4,4
To2And3
dc.b 4,4,4,4,4,4,4,4,4,4
dc.b 3,3,3,3,3,3,3,3,3,3
dc.b 2,2,2,2,2,2,2,2,2,2
dc.b 1,1,1,1,1,1,1,1,1,1
dc.b 0,0,0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0,0
* dc.b 0,0,0,0,0,0,0,0,0
FielderScaleTable
dc.b 0,0,0,0,0,0,0,1 ;8
dc.b 1,1,1,1,1,1,2,2 ;16
dc.b 2,2,2,2,2,3,3,3 ;32
* dc.b 3,3,3,3,4,4,4,4 ;40
* dc.b 4,4,4,5,5,5,5,5 ;48
dc.b 3,4,4,4,4,5,5,5 ;40
dc.b 5,5,5,5,5,5,5,5 ;48
dc.b 5,6,6,6,6,6,6,6 ;56
dc.b 6,6,6,6,6,6,6,6 ;64
dc.b 6,6,6,6,6,6,6,6 ;72
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;
dc.b 6,6,6,6,6,6,6,6 ;184
Pdirectiontable
dc.b #0,#128,#0,#128,#192,#160,#224,#224
dc.b #64,#96,#32,#64,#64,#64,#64,#64
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 0,0,0,0,0,0,0,0
dc.b 1,2,3,4,5,6,7,8 ; -8 - -1
radar_ytable
dc.b 9,10,11,12,13,14,15,16 ; 0-7
dc.b 17,18,19,20,21,21,22,23 ; 8-15
dc.b 23,24,25,25,26,27,27,28 ; 16-23
dc.b 29,29,30,30,31,31,32,32 ; 24-31
dc.b 33,33,34,34,34,35,35,35 ; 32-39
dc.b 36,36,36,37,37,37,38,38 ; 40-47
dc.b 38,39,39,40,40,41,41,42 ; 48-55
dc.b 42,43,43,44,44,45,45,46 ; 56-63 Pitcher's mound y=61
dc.b 46,46,47,47,47,47,48,48 ; 64-71
dc.b 48,48,48,49,49,49,49,49
dc.b 49,50,50,50,50,50,50,51
dc.b 51,51,51,51,51,52,52,52
dc.b 52,52,52,53,53,53,53,53
dc.b 53,54,54,54,54,54,54,55
dc.b 55,55,55,55,55,56,56,56
dc.b 56,56,56,57,57,57,57,57
dc.b 57,58,58,58,58,58,58,59
dc.b 59,59,59,59,60,60,60,60
dc.b 60,60,61,61,61,61,61,61
dc.b 62,62,62,62,62,62,63,63
dc.b 63,63,63,63,64,64,64,64
dc.b 64,64,65,65,65,65,65,65
dc.b 66,66,66,66,66,66,67,67
dc.b 67,67,67,67,68,68,68,68
Radar_xtable
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #0,#0,#0,#0,#0,#0,#0,#0
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #1,#1,#1,#1,#1,#1,#1,#1
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #2,#2,#2,#2,#2,#2,#2,#2
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #3,#3,#3,#3,#3,#3,#3,#3
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #4,#4,#4,#4,#4,#4,#4,#4
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #5,#5,#5,#5,#5,#5,#5,#5
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #6,#6,#6,#6,#6,#6,#6,#6
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #7,#7,#7,#7,#7,#7,#7,#7
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #8,#8,#8,#8,#8,#8,#8,#8
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #9,#9,#9,#9,#9,#9,#9,#9
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #10,#10,#10,#10,#10,#10,#10,#10
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #11,#11,#11,#11,#11,#11,#11,#11
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #12,#12,#12,#12,#12,#12,#12,#12
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #13,#13,#13,#13,#13,#13,#13,#13
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #14,#14,#14,#14,#14,#14,#14,#14
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #15,#15,#15,#15,#15,#15,#15,#15
dc.b #16,#16,#16,#16,#16,#16,#16,#16
dc.b #16,#16,#16,#16,#16,#16,#16,#17
dc.b #17,#17,#17,#17,#17,#17,#17,#17
dc.b #17,#17,#17,#17,#17,#18,#18,#18
dc.b #18,#18,#18,#18,#18,#18,#18,#18
dc.b #18,#18,#18,#19,#19,#19,#19,#19
dc.b #19,#19,#19,#19,#19,#19,#19,#19
dc.b #19,#20,#20,#20,#20,#20,#20,#20
dc.b #20,#20,#20,#20,#20,#20,#20,#20
dc.b #21,#21,#21,#21,#21,#21,#21,#21
dc.b #21,#21,#21,#21,#21,#21,#22,#22
dc.b #22,#22,#22,#22,#22,#22,#22,#22
dc.b #22,#22,#22,#22,#23,#23,#23,#23
dc.b #23,#23,#23,#23,#23,#23,#23,#23
dc.b #23,#23,#24,#24,#24,#24,#24,#24
dc.b #24,#24,#24,#24,#24,#24,#24,#24
dc.b #24,#25,#25,#25,#25,#25,#25,#25
dc.b #25,#25,#25,#25,#25,#25,#25,#26
dc.b #26,#26,#26,#26,#26,#26,#26,#26
dc.b #26,#26,#26,#26,#26,#27,#27,#27
dc.b #27,#27,#27,#27,#27,#27,#27,#27
dc.b #27,#27,#27,#28,#28,#28,#28,#28
dc.b #28,#28,#28,#28,#28,#28,#28,#28
dc.b #28,#29,#29,#29,#29,#29,#29,#29
dc.b #29,#29,#29,#29,#29,#29,#29,#29
dc.b #30,#30,#30,#30,#30,#30,#30,#30
dc.b #30,#30,#30,#30,#30,#30,#31,#31
dc.b #31,#31,#31,#31,#31,#31,#31,#31
dc.b #31,#31,#31,#31,#32,#32,#32,#32
dc.b #32,#32,#32,#32,#32,#32,#32,#32
dc.b #32,#32,#33,#33,#33,#33,#33,#33
dc.b #33,#33,#33,#33,#33,#33,#33,#33
dc.b #33,#34,#34,#34,#34,#34,#34,#34
dc.b #34,#34,#34,#34,#34,#34,#34,#35
dc.b #35,#35,#35,#35,#35,#35,#35,#35
dc.b #35,#35,#35,#35,#35,#36,#36,#36
dc.b #36,#36,#36,#36,#36,#36,#36,#36
dc.b #36,#36,#36,#37,#37,#37,#37,#37
dc.b #37,#37,#37,#37,#37,#37,#37,#37
dc.b #37,#38,#38,#38,#38,#38,#38,#38
dc.b #38,#38,#38,#38,#38,#38,#38,#38
dc.b #39,#39,#39,#39,#39,#39,#39,#39
dc.b #39,#39,#39,#39,#39,#39,#40,#40
dc.b #40,#40,#40,#40,#40,#40,#40,#40
dc.b #40,#40,#40,#40,#41,#41,#41,#41
dc.b #41,#41,#41,#41,#41,#41,#41,#41
dc.b #41,#41,#42,#42,#42,#42,#42,#42
dc.b #42,#42,#42,#42,#42,#42,#42,#42
CPitchType_tbl
dc.w 0,0,0
dc.w #Joy_U,#Joy_U,#Joy_U
dc.w #Joy_D,#Joy_D,#Joy_D
dc.w #Joy_L,#Joy_L,#Joy_L
dc.w #Joy_R,#Joy_R,#Joy_R
; 0 down middle, 1 high, 2 low, 3 left, 4 right
xdef PlayerPos_EntityNum_tbl
PlayerPos_EntityNum_tbl
dc.w #Pitcher_ptr,#Pitcher_ptr ; s/r pitcher
dc.w #FBaseman_ptr
dc.w #SBaseman_ptr
dc.w #TBaseman_ptr
dc.w #ShortStop_ptr
dc.w #LFielder_ptr
dc.w #RFielder_ptr
dc.w #CFielder_ptr
dc.w #Catcher_ptr
dc.w #Batter_ptr
AFFlipTable
dc.w FBaseman_ptr,TBaseman_ptr
dc.w SBaseman_ptr,ShortStop_ptr
dc.w RFielder_ptr,LFielder_ptr
section .text
BatRangeTable
dc.w BatLowHitRange,BatMidHitRange
dc.w BatHighHitRange,BatMidHitRange
xdef AI
xdef NullLogic
xdef BatSwing_000
xdef Pitch_000
xdef Bounds_RL
xdef HaloLogic
xdef FieldXLogic
xdef LookEntityLogic
xdef InitialBallLogic
xdef BallShadowLogic
xdef InitialCatcherLogic
xdef InitialPitcherLogic
xdef InitialBatterLogic
xdef InitialCameraLogic
xdef FractionalMultiply
xdef InitialFielderLogic
xdef InitialRunnerLogic
xdef InitialFirstRunLogic
xdef InitialSecondLogic
xdef InitialThirdLogic
***********************************************************************
Cosine MACRO
movem.l \1/A0,-(sp)
lea.l Cosine_Table,A0
lsl.w #1,\1
move.w (A0,\1.w),\3
muls.w \2,\3
movem.l (sp)+,\1/A0
ENDM
Sine MACRO
movem.l \1/A0,-(sp)
lea.l Sine_Table,A0
lsl.w #1,\1
move.w (A0,\1.w),\3
muls.w \2,\3
movem.l (sp)+,\1/A0
ENDM
Atan MACRO
movem.l \1/\2/A0,-(sp)
lea.l ArcTAN_Table,A0
lsr.l #8,\1
IFEQ ArcTan_Bytes-1
lsr.l #1,\1
ELSEC
lsr.l #1,\1
ENDC
add.l #$8000,\2
clr.w \2
swap \2
tst.l \2
bne .do_div\@
move.w #0,\3
bra .atx\@
.do_div\@
divu.w \2,\1
cmp.w #$80,\1
blt .adj\@
move.w #$20,\3
jmp .atx\@
.adj\@
sub.w #1,\1
bpl .do_shift\@
clr.w \1
.do_shift\@
IFEQ ArcTan_Bytes-1
move.w \1,\2
and.w #$7E,\1
move.w (A0,\1.w),\3
btst #0,\2
bne .got_atan\@
lsr.w #8,\3
.got_atan\@
and.w #$00FF,\3
ELSEC
lsl.w #1,\1
move.w (A0,\1.w),\3
ENDC
.atx\@
movem.l (sp)+,\1/\2/A0
ENDM
AI
movem.l D0-D7/A0-A6,-(sp)
move.l sp,StackDebugPtr
move.w Num_Entities,D7
NORL
cmp.l StackDebugPtr,sp
bne NORL
lea.l VTentity,A0
sub.l #1,D7
bmi _AI_done
move.l D7,D0
asl.l #Index_Shift,D0
* cmp.w #0,VTFon(A0,D0.w) ;is this entity to be processed?
* beq NORL ;if not then get the next one
cmp.w #2,RunnerExists
ble .c1
cmp.w #Batter_ptr,d0
ble .c1
tst.w VTFrend(a0,d0.w)
bne .c1
move.w d7,d6
and.w #1,d6
move.w VBlank_cnt,d5
and.w #1,d5
eor.w d5,d6
bne NORL
.c1
move.l VTseq_step(A0,D0.w),D1 ;does this entity have AI?
beq NORL ;if not then get the next one
move.l D1,A1
jmp (A1) ;otherwise do AI
_AI_done
movem.l (sp)+,D0-D7/A0-A6
rts
*****************************************************************************
NullLogic jmp NORL
InfOutfline equ SBase_Y-$50000
BILine1y equ #$34 ;20
BILine2y equ #$c
Grab_Radius equ $20000
BallSpeed equ $-200000
Pball_x equ 406
Pball_y equ -21
BatHitFrame equ 15 ;18
CheckSwingFrame equ 15 ;18
RBatBoxMin equ $ffcc
RBatBoxMax equ $ffe0 ;$ffe5
LBatBoxMin equ $20 ;$1b
LBatBoxMax equ $34
PitcherMaxL equ $fffc
PitcherMaxR equ $4
BatHitToRunStrip equ $0
SlowPitchSpeed equ $08
SlowPitchSpeedz equ $2
MediumPitchSpeed equ $09
MediumPitchSpeedz equ $2
FastPitchSpeed equ $0b ;a
FastPitchSpeedz equ $1
StraightPitch equ $0
RightCurvePitch equ $1
LeftCurvePitch equ $2
UpCurvePitch equ $4
DownCurvePitch equ $8
GroundFriction equ $00000b00 ;500
BatLowHit equ $0
BatMidHit equ $2
BatHighHit equ $4
Bunt equ $6
BatYRangeLow equ $95 ;$082
BatYRangeMid equ $a0 ;$095
BatYRangeHigh equ $0ac
*BallRangeHigh equ $0b2 ;off bottom of screen
BallRangeHigh equ $0c0 ;off bottom of screen
BallMaxX equ $0400 ;off right of screen
BallMinX equ $fc00 ;off left of screen
HitBoxY equ $095
HitBoxTop equ $0b0 ;90
HitBoxBottom equ $030
HitBoxLeft equ $fff3
HitBoxRight equ $b
Fielder_Reach equ $d0
FielderRunSpeed equ $5800 ;10000
Strike equ $0001
Ball equ $ffff
HT_Home_Run equ #1
HT_Outf equ #2
HT_Ord equ #0
HT_Foul equ #3
HT_Bunt equ #4
HT_IFPop equ #5
BatLowHitRange equ 124 ;#$48
BatMidHitRange equ 153 ;#$90
BatHighHitRange equ 156 ;#$cb
MaxZHeight equ #$400000
ballvscale_lo equ -7
ballvscale_high equ BallRangeHigh
*****************************************************************************
WaitOnAnimation
tst.w VTFrdir(a0,d0.w) ;if animation not running don't wait
beq setnextseq
tst.w VTFrend(a0,d0.w)
beq .done
setnextseq
move.l VTNextSeq(a0,d0.w),VTSeq_step(a0,d0.w)
clr.w VTFrdir(a0,d0.w)
.done jmp NORL
*****************************************************************************
WaitOnCatchAnimation
jsr checktags
tst.w VTFrdir(a0,d0.w) ;if animation not running don't wait
beq .setnextseq
tst.w VTFrend(a0,d0.w)
beq .done
.setnextseq
move.l VTNextSeq(a0,d0.w),VTSeq_step(a0,d0.w)
clr.w VTFrdir(a0,d0.w)
.done jmp NORL
**************************************************************
xdef HRDerbyLogic
HRDerbyLogic
tst.w DerbyDone
bne .waitstart
move.w Fcontrollers,d1 ;allow S to exit hrderby
or.w BControllers,d1
btst #Joy_S,d1
beq .r1
lsr.w #8,d1
btst #Joy_S,d1
beq .waitstart
.r1
lea.l DerbyBatterNum,a1
add.l BteamAdj,a1
move.w (a1),PlayerAtBat
tst.w PlayerAtBat ;QUICK PATCH : FIND BUG IN DOSUBS!
bge .bp1
clr.w PlayerAtBat
.bp1
tst.w DerbyEvent
beq .done
jsr DisplayDerbyInfo
cmp.w #15,DerbyPitchNum
blt .done
tst.w NumGamers
beq .dr
tst.w DerbyPlayer
bne .dr
jsr Clear_ScrollA
.dr
jsr DisplayDerbyRanking
cmp.w #1,NumGamers ;derby over if 1 player mode
blt .derbydone
tst.w DerbyPlayer ;or if player 2 is done
beq .c1
.derbydone
move.w #1,DerbyDone
clr.w VTFrdir(a0,d0.w)
clr.w FComputer
bra .done
.c1
move.w #1,NeedNewBatter
eor.l #2,FTeamAdj
eor.l #2,BTeamAdj
move.w BTeamNum,d1
move.w FTeamNum,BTeamNum
move.w d1,FTeamNum
clr.w DerbyPitchNum
clr.w DerbyScore
eor.w #1,DerbyPlayer
jsr SwitchPlayerPal
.done
jmp NORL
.waitstart
clr.w VTfrdir(a0,d0.w)
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_S,d1
beq .checkc
lsr.w #8,d1
btst #Joy_S,d1
bne .checkc
clr.w FComputer ;Reset Controllers
clr.l FTeamAdj
move.l #2,BTeamAdj
clr.w killradarentities
clr.w runsht
clr.w runsvt
move #0,FadeDirection ;Fade Down Field
move #2,FadeSpeed
clr.w PracticeMode
StopSound #S_DIGITALCROWD
jsr _Initgems
JSR StartFadeDown
jsr WaitForFadeUp
move.l #VCTRL,A4 *; Macros use these registers
move.w #$9000+000000,(A4) ;R16= | 0 | 0 |VS1|VS0| 0 | 0 |HS1|HS0| Scroll Size (00=32,01=64,10=XX,11=128)
jmp WarmEntry ;DoGame
.checkc
btst #Joy_C,d1
beq .done
lsr.w #8,d1
btst #Joy_C,d1
bne .done
* jsr Clear_ScrollA
clr.w DerbyDone
clr.w DerbyPitchNum
move.w #14,derbypitchnum
clr.w DerbyScore
move.w #1,DerbyEvent
move.w #1,NeedNewBatter
move.w #1,FComputer
tst.w NumGamers
bne .c1
clr.w DerbyPlayer
jmp NORL
**************************************************************
xdef PracticeModeLogic
PracticeModeLogic
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_S,d1
beq .c1
lsr.w #8,d1
btst #Joy_S,d1
bne .c1
bset #Joy_S,d1
move.w d1,BControllers
move.w d1,FControllers
jsr DisplayPractMsg
add.w #1,temp4
cmp.w #2,temp4
blt .c1
jmp DoGame
.c1
move.w Fcontrollers,d1
or.w BControllers,d1
btst #Joy_C,d1
beq .done
lsr.w #8,d1
btst #Joy_C,d1
bne .done
move.w #1,temp4
clr.w d1 ;set debounce next round
bset #Joy_C,d1
move.w d1,BControllers
move.w d1,FControllers
eor.l #2,FTeamAdj
eor.l #2,BTeamAdj
move.w Fcomputer,d1
move.w Bcomputer,Fcomputer
move.w d1,Bcomputer
jsr DisplayPractMsg
.done
jmp NORL
HeavyCameraLogic
movem.l a2,-(sp)
lea.l Vtentity+FieldX_ptr,a1
tst.w VTfon(a1)
bne _YNotReset
* lea.l Vtentity+ball_ent_ptr,a2
* move.l VTsped(a2),d2
* asl.l #4,d2
* move.w VTdir(a2),d1
* jsr GetEndPoint
* add.l VTy(a2),d2
* move.l d2,d1 ;leading y coordinate
move.l VTy(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r0
move.w Active_Fielder,d3 ;if ball thrown
move.l VTy(a0,d3.w),d1 ;follow active fielder
* move.l VTy(a0,d0.w),d1
.r0 sub.l Oldy,d1
bge _DY_Positive
asr.l #3,d1
cmp.l #-8*$10000,d1
bge _NDyok
move.l #-8*$10000,d1
_NDyok
move.l d1,PCamDy
bra _CamDyDone
_DY_Positive
asr.l #3,d1
cmp.l #8*$10000,d1
ble _PDyok
move.l #8*$10000,d1
_PDyok
move.l d1,PCamDy
_CamDyDone
move.l Oldy,d1
add.l PCamDy,d1
move.l d1,VTy(a0,d0.w)
bra _nowx
_YNotReset
move.l VTy(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r1
move.w Active_Fielder,d3
move.l VTy(a0,d3.w),d1
.r1
move.l d1,d2
and.l #$ffff0000,d2
move.l Oldy,d3
and.l #$ffff0000,d3
cmp.l d2,d3
beq _nowx
sub.l Oldy,d1
asr.l #4,d1
bpl _YDY_Positive
cmp.l NCamDY,d1
bge _NsetNCamDy
move.l NCamDy,d1
cmp.l #-8*$10000,d1
ble _YNDyok
sub.l #$4000,d1
_NSetNCamDY
move.l d1,NCamDy
_YNDyok
move.l d1,PCamDy
bra _YCamDyDone
_YDY_Positive
cmp.l NCamDY,d1
ble _PSetNCamDY
move.l NCamDy,d1
cmp.l #8*$10000,d1
bge _YPDyok
add.l #$4000,d1
_PSetNCamDY
move.l d1,NCamDY
_YPDyok
move.l d1,PCamDy
_YCamDyDone
move.l Oldy,d1
add.l PCamDy,d1
move.l d1,VTy(a0,d0.w)
_nowx
tst.w VTFon(a1)
bne _XNotReset
* lea.l Vtentity+ball_ent_ptr,a2
* move.l VTsped(a2),d2
* asl.l #4,d2
* move.w VTdir(a2),d1
* jsr GetEndPoint
* add.l VTx(a2),d1 ;leading x Coordinate
move.l Vtx(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r2
move.w Active_Fielder,d3
move.l VTx(a0,d3.w),d1
.r2
* move.l Vtx(a0,d0.w),d1
sub.l Oldx,d1
bge _DX_Positive
asr.l #3,d1
cmp.l #-16*$10000,d1 ;16
bge _NDxok
move.l #-16*$10000,d1 ;16
_NDxok
move.l d1,PCamDx
bra _CamDxDone
_DX_Positive
asr.l #3,d1
cmp.l #16*$10000,d1 ;16
ble _PDxok
move.l #16*$10000,d1 ;16
_PDxok
move.l d1,PCamDx
_CamDxDone
move.l Oldx,d1
add.l PCamDx,d1
move.l d1,VTx(a0,d0.w)
bra .done
_XNotReset
move.l VTx(a0,d0.w),d1
cmp.w #BallHit_ps,Playstage
beq .r3
move.w Active_Fielder,d3
move.l VTx(a0,d3.w),d1
.r3
move.l d1,d2
and.l #$ffff0000,d2
move.l Oldx,d3
and.l #$ffff0000,d3
cmp.l d2,d3
beq .done
sub.l Oldx,d1
asr.l #4,d1
bge _XDX_Positive
cmp.l NCamDX,d1
bge _NsetNCamDx
move.l NCamDx,d1
cmp.l #-16*$10000,d1 ;16
ble _XNDxok
sub.l #$4000,d1
_NSetNCamDX
move.l d1,NCamDx
_XNDxok
move.l d1,PCamDx
bra _XCamDxDone
_XDX_Positive
cmp.l NCamDX,d1
ble _PSetNCamDX
move.l NCamDx,d1
cmp.l #16*$10000,d1 ;16
bge _XPDxok
add.l #$4000,d1
_PSetNCamDX
move.l d1,NCamDX
_XPDxok
move.l d1,PCamDx
_XCamDxDone
move.l Oldx,d1
add.l PCamDx,d1
move.l d1,VTx(a0,d0.w)
.done
movem.l (sp)+,a2
rts
InitialCameraLogic
tst.w PanBack
bne _ResetCamera
tst.w InPitcherIF
bne .done
tst.w Catcherreturn
bne .done
bra _movewithball
.done
jmp NORL
_movewithball
tst.w BallLocation
beq .chbs
lea.l VTentity,a1
moveq.l #0,d1
move.w Balllocation,d1
asl.w #8,d1
add.l d1,a1
bra .smove
.chbs
lea.l VTEntity+BallShadow_Ent_ptr,a1
cmp.w #HT_Home_Run,Hittype
bne .smove
lea.l VTentity+Ball_ent_ptr,a1 ;follow ball
bra .smove
.smove
* lea.l VTentity+Batter_ptr,a1
move.w #0,d0
lea.l VTentity,a0
move.w #1,d4
move.w VTx(a1),VTx(a0)
move.w VTy(a1),VTy(a0)
lea.l VTentity+FieldX_ptr,a1
tst.w VTfon(a1)
beq .hcl
move.w VTx(a1),VTx(a0)
move.w VTy(A1),VTy(a0)
.hcl jsr HeavyCameraLogic
jsr ScrollXY
.done
lea.l Vtentity,a0
move.w #0,d0
move.l VTy(a0,d0.w),Oldy
move.l VTx(a0,d0.w),Oldx
jmp NORL
_ResetCamera
lea.l VTentity+ballshadow_ent_ptr,a1
move.w #3,VTx(a1)
move.w #110,VTy(a1)
move.w #CamULC_X,d0
move.w #CamULC_Y,d1
jsr StepPanCamera1
cmp.w #CamULC_X,Map_ULC_X
bne .done
cmp.w #CamULC_Y,Map_ULC_Y
bne .done
clr.w PanBack
lea.l Vtentity,a0
move.w #CamCenterX,Vtx(a0)
move.w #CamCentery,Vty(a0)
move.w #CamCenterX,oldx
move.w #CamCenterY,oldy
.done jmp NORL
setcamxy
movem.l d1/a0-a1,-(sp)
lea.l Vtentity,a0
lea.l VTentity+Ball_ent_ptr,a1
move.w VTx(a1),d1
add.w Map_Center_X,D1
sub.w #128,d1
move.w d1,VTx(a0)
move.l VTy(a1),d1
sub.w #16,d1
add.w Map_Center_Y,D1
sub.w #110,d1
move.w d1,VTy(a0)
movem.l (sp)+,d1/a0-a1
rts
*_ResetCamera
* clr.w PanBack
* lea.l Field_Map,A0
* move.w #CamULC_X,D0
* move.w #CamULC_Y,D1
* jsr load_field
* jmp NORL
StepPanCamera1
* D0 = target x position
* D1 = target y position
*
* Note: No bounds checking, scroll routines will not
* scroll off screen, but camx,camy will get screwed up
move.w d1,d6
sub.w Map_ULC_Y,d6 ; Targy - MapULCY = distanceY
beq .panx
bgt .pand ; if positive pan down
neg.w d6 ; distanceY = abs(distanceY)
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
* cmp.w PanSpeed,d6 ; move max 8 pixels this step
ble .sfu1
move.w PanSpeed,d6
sub.w #8,d6
.sfu1
jsr scroll_field_up
bra .panx
.pand
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
* cmp.w PanSpeed,d6
ble .sfd1
move.w PanSpeed,d6
sub.w #8,d6
.sfd1 jsr scroll_field_down
.panx
move.w d0,d6 ;get ball x
sub.w Map_ULC_X,d6
beq .done
bge .panr
neg.w d6
cmp.w PanSpeed,d6
ble .sfl1
move.w PanSpeed,d6
.sfl1
jsr scroll_field_left
bra .done
.panr
cmp.w PanSpeed,d6
ble .sfr1
move.w PanSpeed,d6
.sfr1
jsr scroll_field_right
.done rts
ScrollXY
movem.l d6/a1,-(sp)
lea.l vtentity,a1
move.w VTy(a1),d6
sub.w #16,d6
add.w Map_Center_Y,D6
sub.w #110,d6
sub.w Map_ULC_Y,d6 ; Targy - MapULCY = distanceY
beq .panx
bgt .pand ; if positive pan down
neg.w d6 ; distanceY = abs(distanceY)
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
ble .sfu1
move.w PanSpeed,d6
sub.w #8,d6
.sfu1
jsr scroll_field_up
bra .panx
.pand
move.w PanSpeed,d5
sub.w #8,d5
cmp.w d5,d6
ble .sfd1
move.w PanSpeed,d6
sub.w #8,d6
.sfd1 jsr scroll_field_down
.panx
tst.w HScrol
Of course, it's incomplete (cuts off). But it's a lot, heh.
Got anymore? :P


00
