697 lines
13 KiB
NASM
697 lines
13 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXBEEK1.ASM"
|
||
.TITLE " <<< GENERATION X -- BEEKEEPER ROUTINES >>>"
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1993 MIDWAY MANUFACTURING COMPANY. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
* GET THE SYSTEM STUFF
|
||
.INCLUDE "GXENEMY.INC"
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.include "univtbl.glo"
|
||
.include "gxnatv.h"
|
||
.include "gxbeek3.tbl"
|
||
.text
|
||
|
||
|
||
|
||
.DEF S_START_MORFERS,SCAN_FOR_DROPPERS,DO_SCHMOOTZ
|
||
|
||
.ref SCRL_DISPATCHER,EASYMAKE,OBJENEMIES,CLR_BEEK_ODATA
|
||
.ref SET_ANIPU,ZREL_OFF,A_STAY_TIL_WY_GT,A_CHANGE_PAL
|
||
.ref ONESND,MORFGLASOUT,PALRAM,PALSET,BGHEAD_ACTIVE
|
||
.ref MORF_JUMP_INIT
|
||
|
||
|
||
|
||
.bss KMORF_X,32 ; start position of morphing Kerri
|
||
.bss KMORF_Z,32 ;
|
||
.bss DROPPER_TAB,6*32 ; can keep 3 droppers in table
|
||
|
||
|
||
|
||
|
||
*********************************************
|
||
* *
|
||
* Spritzers *
|
||
* *
|
||
*********************************************
|
||
*
|
||
* Called from S_CREATE_BEEKS: need to pass X range and Z range
|
||
*
|
||
* a10 points to table containing X min X max Z min Z max
|
||
*
|
||
DROP_ID .set 30
|
||
|
||
* a5 = X min
|
||
* a6 = X max
|
||
* a9 = Z min (relative to inner3)
|
||
* a8 = Z max (relative to inner3)
|
||
*
|
||
SCAN_FOR_DROPPERS:
|
||
move @ZREL_OFF,a14,L
|
||
srl ZFRAC,a14
|
||
add a14,a9
|
||
add a14,a8 ; convert to universe
|
||
|
||
movi DROPPER_TAB,a4 ; where to put it
|
||
|
||
movi DROP_ID<<B_BF_ID,a2 ; ID to look for
|
||
move @BGHEAD_ACTIVE,a0,L
|
||
move a0,a1
|
||
Dscnlp:
|
||
move *a1(MAP_NEXT),a1,L
|
||
|
||
move *a1(MAP_Z),a7,L ; check for target Z
|
||
cmp a9,a7
|
||
jrlt nmatch
|
||
cmp a8,a7
|
||
jrgt DscnX ; abort when out of Z range
|
||
|
||
move *a1(MAP_FLAGS),a14 ; check for target OID
|
||
andi M_BF_ID,a14
|
||
cmp a14,a2
|
||
jrne nmatch
|
||
|
||
move *a1(MAP_X+10h),a3 ; check for target X
|
||
cmp a5,a3
|
||
jrlt nmatch
|
||
cmp a6,a3
|
||
jrgt nmatch
|
||
*
|
||
* FOUND ONE!
|
||
*
|
||
move a1,*a4+,L ; link is in table
|
||
jruc sechalflp
|
||
|
||
nmatch:
|
||
cmp a1,a0
|
||
jrne Dscnlp
|
||
DscnX:
|
||
rets
|
||
|
||
|
||
sechalflp:
|
||
.if DEBUG
|
||
cmp a1,a0 ; can't get to end yet
|
||
LOCKON Z
|
||
.endif
|
||
|
||
move *a1(MAP_NEXT),a1,L
|
||
|
||
.if DEBUG
|
||
move *a1(MAP_Z),a14,L ; check for target Z
|
||
cmp a7,a14
|
||
LOCKON NE
|
||
.endif
|
||
|
||
move *a1(MAP_FLAGS),a14 ; check for target OID
|
||
andi M_BF_ID,a14
|
||
cmp a14,a2
|
||
jrne sechalflp
|
||
|
||
move *a1(MAP_X+10h),a14
|
||
cmp a14,a3
|
||
jrne sechalflp
|
||
|
||
move a1,*a4+,L ; found 2nd half
|
||
jruc Dscnlp
|
||
|
||
|
||
DROPPAL_TAB:
|
||
.long 0,SPLOOTRP,SPLOOTBP
|
||
|
||
|
||
*
|
||
* a box will call this routine to start some schmootz
|
||
* a0 = index of dropper (0, 1, 2)
|
||
*
|
||
DO_SCHMOOTZ:
|
||
move *a8(OCVECT),a14,L ; is this box trashed?
|
||
jrz noobj ; if so, no schmootz
|
||
*
|
||
* First, do we really want to do this?
|
||
*
|
||
move a0,a6
|
||
sll 5,a6
|
||
addi DROPPAL_TAB,a6 ; which palette to use?
|
||
sll 6,a0
|
||
addi DROPPER_TAB,a0
|
||
move *a0+,a1,L ; first dropper
|
||
move *a1(MAP_OBJ),a3,L
|
||
jrle noobj ; is there an object?
|
||
srl 4,a3
|
||
sll 4,a3
|
||
move *a3(OCVECT),a14,L ; is it totally damaged?
|
||
jrz noobj
|
||
move *a3(OPLINK),a4,L
|
||
jrnz noobj ; if process exists, ignore this request
|
||
move *a0+,a2,L
|
||
move *a2(MAP_OBJ),a5,L ; look for other half.
|
||
jrle noobj
|
||
srl 4,a5
|
||
sll 4,a5
|
||
move *a5(OCVECT),a14,L ; is it totally damaged?
|
||
jrz noobj
|
||
*
|
||
* Okay, do the schmootz
|
||
*
|
||
mmtm sp,a8,a9,a10,a11
|
||
move *a6,a11,L
|
||
move a1,a10
|
||
move a3,a8 ; contains damage level in bottom 4 bits
|
||
move a5,a9
|
||
CREATE PID_IND,SHPRITZ
|
||
mmfm sp,a8,a9,a10,a11
|
||
move a0,*a3(OPLINK),L ; save process in first half
|
||
|
||
noobj:
|
||
rets
|
||
|
||
*
|
||
* a8 , a9 = dropper objects
|
||
* a10 = bglink
|
||
* a11 = palette (0= use default)
|
||
SHPRITZ:
|
||
movi -5000h,a0
|
||
move a0,*a8(OYVEL),L
|
||
move a0,*a9(OYVEL),L ; moves up slow
|
||
sleep 30
|
||
clr a0
|
||
move a0,*a8(OYVEL),L
|
||
move a0,*a9(OYVEL),L ; stop motion
|
||
move *a10(MAP_Y),a6,L
|
||
move a6,*a8(OYVAL),L
|
||
move a6,*a9(OYVAL),L ; return to orig position
|
||
CLRM *a8(OPLINK),L ; dissassociate proc with obj
|
||
|
||
movi SPRITZ_INIT,b0
|
||
calla MULTIMAKE
|
||
move *a9(OXVAL),a5,L
|
||
move *a9(OZVAL),a7,L
|
||
|
||
move a11,a0
|
||
jrz nopalchg
|
||
calla CHANGE_PAL_MULTI
|
||
nopalchg:
|
||
|
||
|
||
move a5,*a8(OXVAL),L
|
||
move a6,*a8(OYVAL),L
|
||
move a7,*a8(OZVAL),L
|
||
move *a8(OPARTS),a0,L
|
||
move a5,*a0(OXVAL),L
|
||
move a6,*a0(OYVAL),L
|
||
move a7,*a0(OZVAL),L
|
||
|
||
calla INSERT_OBJ
|
||
|
||
|
||
DIE
|
||
|
||
|
||
SPLOOTBP:
|
||
.word 32
|
||
.word 003e0h,05016h,05c19h,04814h,04414h,04013h,03c12h,03812h
|
||
.word 03811h,03411h,03410h,03010h,02c0fh,0280fh,0280eh,0240eh
|
||
.word 0240dh,0200dh,01c0ch,0200ch,0180bh,0140bh,0140ah,0100ah
|
||
.word 01009h,00c09h,00808h,00407h,00007h,00006h,00006h,00005h
|
||
|
||
|
||
|
||
SPLOOTRP:
|
||
.word 32
|
||
.word 0001fh,05a80h,066e0h,05240h,05220h,04e00h,049e0h,049c0h
|
||
.word 045c0h,045a0h,041a0h,04180h,03d60h,03d40h,03940h,03920h
|
||
.word 03520h,03500h,030e0h,03100h,02cc0h,02ca0h,028a0h,02880h
|
||
.word 02480h,02460h,02040h,01c20h,01c00h,01800h,01800h,01400h
|
||
|
||
|
||
SPRITZ_INIT
|
||
.byte 2,0,0,1
|
||
.long SPLOOTGP
|
||
.word OID_JUNK,0
|
||
LWWWW SPLOOT1,DMAWNZ,0,0,OM_ANIM
|
||
.long SPRITZ_ANIM
|
||
LWWWW SPLOOT1,DMAWNZ|M_FLIPH,0,0,0
|
||
|
||
SPRITZ_ANIM:
|
||
LW 1,1|AMulti
|
||
LW 1,2
|
||
LW SPLOOT2,1|AMulti
|
||
LW SPLOOT2,2
|
||
LW SPLOOT3,1|AMulti
|
||
LW SPLOOT3,2
|
||
LW SPLOOT4,1|AMulti
|
||
LW SPLOOT4,2
|
||
LW SPLOOT5,1|AMulti
|
||
LW SPLOOT5,2
|
||
LW SPLOOT6,1|AMulti
|
||
LW SPLOOT6,2
|
||
LW SPLOOT7,1|AMulti
|
||
LW SPLOOT7,2
|
||
LW SPLOOT8,1|AMulti
|
||
LW SPLOOT8,2
|
||
LW SPLOOT9,1|AMulti
|
||
LW SPLOOT9,2
|
||
LW SPLOOT10,1|AMulti
|
||
LW SPLOOT10,2
|
||
LW SPLOOT11,1|AMulti
|
||
LW SPLOOT11,2
|
||
LW SPLOOT12,1|AMulti
|
||
LW SPLOOT12,2
|
||
LW SPLOOT13,1|AMulti
|
||
LW SPLOOT13,2
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
******************************************************************
|
||
* *
|
||
* KERRY MORPH *
|
||
* *
|
||
******************************************************************
|
||
|
||
*
|
||
* .LONG S_START_MORFERS
|
||
* .word Uni X
|
||
* .long Uni Z (relative to local univ)
|
||
*
|
||
S_START_MORFERS:
|
||
move *a11+,a0 ; get uni x from scroll table
|
||
sll 16,a0
|
||
move a0,@KMORF_X,L ; Set X pos
|
||
|
||
move *a11+,a0,L ; get uni Z from scroll table
|
||
move @ZREL_OFF,a1,L
|
||
sra ZFRAC,a1
|
||
add a1,a0
|
||
move a0,@KMORF_Z,L ; Set Z pos
|
||
|
||
move @OBJENEMIES,a14
|
||
ori M_OF_MORFRS,a14
|
||
move a14,@OBJENEMIES ; turn morfrs on
|
||
|
||
callr MAKE_A_MORFER ; make one and start animation going
|
||
jauc SCRL_DISPATCHER
|
||
|
||
|
||
KMRF_INIT:
|
||
.LONG SF1J05
|
||
.word DMAWNZ,0,OM_ANIM
|
||
.long KMRF_ANIM
|
||
|
||
|
||
MAKE_A_MORFER:
|
||
move @OBJENEMIES,a14
|
||
btst B_OF_MORFRS,a14
|
||
jrz no_morf_gen
|
||
|
||
movi KMRF_INIT,b0 ; Make one morfer
|
||
calla EASYMAKE
|
||
move @KMORF_X,a1,L
|
||
move a1,*a0(OXVAL),L
|
||
move @KMORF_Z,a1,L
|
||
move a1,*a0(OZVAL),L
|
||
movi -600000h,a1
|
||
move a1,*a0(OYVAL),L
|
||
calla INSOBJ
|
||
; movi 310,a0
|
||
; calla RANDPER
|
||
; jrnc no_morf_gen
|
||
|
||
movi SND_SHREIK1,a1
|
||
movi 512,a0
|
||
calla RANDPER
|
||
jrnc othshrk
|
||
movi SND_SHREIK2,a1
|
||
othshrk:
|
||
move a1,a0
|
||
calla ONESND
|
||
no_morf_gen:
|
||
rets
|
||
|
||
SND_SHREIK1
|
||
.word 0f380h,187,0a568h,0
|
||
|
||
SND_SHREIK2
|
||
.word 0f380h,179,0a56bh,0
|
||
|
||
;SND_SHRT_SHREIK
|
||
; .word 0f380h,36,0a4fdh,0
|
||
|
||
|
||
KMRF_ANIM:
|
||
LWLW SF1J05,3|AFunc,A_SET_OYACCEL+1,2c00h
|
||
LWLW SF1J06,1|AFunc,A_STAY_TIL_WY_GT+1,8h
|
||
LWL SF1J07,4|AFunc,PSTOP
|
||
LW SF1J08,4
|
||
; LWLL SF1J08,4|AFunc,A_SOUNDZ+2,SND_SHRT_SHREIK
|
||
LW SF1J09,4
|
||
LW SF1J10,5
|
||
LW SF1J11,6
|
||
LWL SF1J12,30|AFunc,A_MORPH_GLOW
|
||
LWLL KERMORF01,7|AFunc,A_CHANGE_PAL+2,KERMRF_P
|
||
LW KERMORF02,7
|
||
LW KERMORF03,7
|
||
LW KERMORF02,6
|
||
LW KERMORF03,5
|
||
LW KERMORF04,6
|
||
LW KERMORF05,7
|
||
LW KERMORF06,7
|
||
LW KERMORF07,7
|
||
LW KERMORF06,6
|
||
LW KERMORF05,5
|
||
LW KERMORF04,6
|
||
LW KERMORF05,7
|
||
LW KERMORF06,7
|
||
LW KERMORF07,7
|
||
LWLL DRONE2,7|AFunc,A_CHANGE_PAL+2,P_GXBEEM
|
||
LWL 1,60|AFunc,INIT_COSTUME
|
||
|
||
|
||
|
||
INIT_COSTUME:
|
||
CREATE PID_IND,COSTUME_PROC
|
||
jauc PULL_ANIM
|
||
|
||
|
||
*
|
||
* a8 = object blk of drone in morph chamber
|
||
*
|
||
COSTUME_PROC
|
||
movi COSTLH_INIT,b0
|
||
calla EASYMAKE
|
||
move *a8(OXVAL),a14,L
|
||
subi 0f0000h,a14
|
||
move a14,*a0(OXVAL),L
|
||
movi 8000h,a14
|
||
move a14,*a0(OXVEL),L
|
||
|
||
move *a8(OZVAL),a14,L
|
||
subk 2,a14
|
||
move a14,*a0(OZVAL),L
|
||
|
||
move *a8(OYVAL),a14,L
|
||
addi 1e0000h,a14
|
||
move a14,*a0(OYVAL),L
|
||
movi -10000h,a14
|
||
move a14,*a0(OYVEL),L
|
||
|
||
calla INSOBJ
|
||
move a0,a9
|
||
|
||
movi COSTLR_INIT,b0
|
||
calla EASYMAKE
|
||
move *a8(OXVAL),a14,L
|
||
addi 0f0000h,a14
|
||
move a14,*a0(OXVAL),L
|
||
movi -8000h,a14
|
||
move a14,*a0(OXVEL),L
|
||
|
||
move *a8(OZVAL),a14,L
|
||
dec a14
|
||
move a14,*a0(OZVAL),L
|
||
|
||
move *a8(OYVAL),a14,L
|
||
addi 1e0000h,a14
|
||
move a14,*a0(OYVAL),L
|
||
movi -10000h,a14
|
||
move a14,*a0(OYVEL),L
|
||
|
||
calla INSOBJ
|
||
move a0,a10
|
||
|
||
sleep 30
|
||
|
||
clr a0 ; stick costume to drone
|
||
move a0,*a9(OXVEL),L
|
||
move a0,*a9(OYVEL),L
|
||
move a0,*a10(OXVEL),L
|
||
move a0,*a10(OYVEL),L
|
||
move *a8(OXVAL),a14,L
|
||
move a14,*a9(OXVAL),L
|
||
move a14,*a10(OXVAL),L
|
||
move *a8(OYVAL),a14,L
|
||
move a14,*a9(OYVAL),L
|
||
move a14,*a10(OYVAL),L
|
||
|
||
|
||
move @MORFGLASOUT,a14 ; has glass been taken out?
|
||
jrz glass_in
|
||
*
|
||
* If glass is out, no helmet, he jumps out of chamber
|
||
*
|
||
sleep 20 ; see him
|
||
|
||
move a8,a11
|
||
|
||
move @OBJENEMIES,a14 ; can we make morfers?
|
||
btst B_OF_MORFRS,a14
|
||
jrz COSTdel ; if no, wait til offscreen, then del
|
||
|
||
movi MORF_JUMP_INIT,b0 ; make new guy
|
||
calla MULTIMAKE
|
||
CALLA CLR_BEEK_ODATA
|
||
|
||
move *a9(OXVAL),a1,L
|
||
move *a9(OYVAL),a2,L
|
||
move *a9(OZVAL),a3,L
|
||
calla SET_ANIPU
|
||
calla INSERT_OBJ
|
||
; MOVIM -0d0h,*a8(OZVEL),L ; start imm. move in Z
|
||
; movi 18000h,a0
|
||
; movi -18000h,a1
|
||
; calla RANGRAND ; spread em out in X
|
||
; move a0,*a8(OXVEL),L
|
||
|
||
sleep 1
|
||
|
||
move a11,a0
|
||
calla DELOBJ ; delete drone body
|
||
move a9,a0
|
||
calla DELOBJ ; delete cost half
|
||
move a10,a0
|
||
calla DELOBJ ; delete cost half
|
||
|
||
sloop 80,COSThk ; wait, start another morfer
|
||
|
||
*
|
||
* If glass is in, lower a helmet, then drop the guy away
|
||
*
|
||
glass_in:
|
||
movi COSTH_INIT,b0 ; lower helmet
|
||
calla EASYMAKE
|
||
move *a8(OXVAL),*a0(OXVAL),L
|
||
|
||
move *a8(OZVAL),a14,L
|
||
dec a14
|
||
move a14,*a0(OZVAL),L
|
||
|
||
move *a8(OYVAL),a14,L
|
||
subi 1e0000h,a14
|
||
move a14,*a0(OYVAL),L
|
||
movi 0c000h,a14
|
||
move a14,*a0(OYVEL),L
|
||
|
||
calla INSOBJ
|
||
move a0,a11
|
||
|
||
*
|
||
* make all objs into a single multiparter
|
||
*
|
||
; PUSH a8 ; drone body
|
||
; move a8,a0
|
||
; move a11,a8 ; helmet becomes head
|
||
; calla INSPART
|
||
; move a10,a0
|
||
; calla INSPART
|
||
; move a9,a0
|
||
; calla INSPART
|
||
; PULLQ a8
|
||
|
||
sleep 40
|
||
|
||
clr a0 ; stick helmet to drone
|
||
move a0,*a11(OYVEL),L
|
||
move *a8(OYVAL),*a11(OYVAL),L
|
||
|
||
calla DELETE_OBJ ; original body
|
||
|
||
sleep 20
|
||
*
|
||
* lower helmeted guy
|
||
*
|
||
movi 1c000h,a14
|
||
move a14,*a9(OYVEL),L
|
||
move a14,*a10(OYVEL),L
|
||
move a14,*a11(OYVEL),L
|
||
|
||
sleep 20
|
||
|
||
move a9,a0
|
||
calla DELOBJ
|
||
move a10,a0
|
||
calla DELOBJ
|
||
|
||
sleep 10
|
||
move a11,a0
|
||
calla DELOBJ
|
||
COSThk:
|
||
sleep 10
|
||
calla MAKE_A_MORFER
|
||
COSTdie:
|
||
DIE
|
||
|
||
COSTdel:
|
||
move *a9(OFLAGS),a14
|
||
btst B_OFSCRN,a14
|
||
jrnz COSTdel1
|
||
sloop 3,COSTdel
|
||
|
||
COSTdel1:
|
||
move a11,a0
|
||
calla DELOBJ ; delete drone body
|
||
move a9,a0
|
||
calla DELOBJ ; delete cost half
|
||
move a10,a0
|
||
calla DELOBJ ; delete cost half
|
||
|
||
DIE
|
||
|
||
|
||
COSTLH_INIT
|
||
.LONG DCOSTHAF1
|
||
.word DMAWNZ,0,0
|
||
|
||
COSTLR_INIT
|
||
.LONG DCOSTHAF2
|
||
.word DMAWNZ,0,0
|
||
|
||
|
||
COSTH_INIT
|
||
.LONG DCOSTHEL1
|
||
.word DMAWNZ,0,0
|
||
|
||
|
||
|
||
A_MORPH_GLOW:
|
||
movi MOBACK_P,a8
|
||
move a8,a0
|
||
calla FINDPAL
|
||
jrz notfound
|
||
sll 24,a0
|
||
srl 24,a0 ; slot of palette
|
||
move a0,a9
|
||
sll 16,a9
|
||
addi 56-14+1,a9 ; slot : num cols
|
||
movk 19,a10 ; delta
|
||
movk 14,a11 ; st color
|
||
CREATE PID_TCYCLE,GLOW_GREEN_PROC
|
||
notfound:
|
||
rets
|
||
|
||
|
||
**************************************************************
|
||
*
|
||
* GLOW_GREEN_PROC - make a palette glow GREEN by
|
||
* decreasing its green
|
||
*
|
||
* a8 = PALID (passed when created)
|
||
* a9 = palette slot : number of colors (slot passed when created)
|
||
* a10 = CUR : max delta before reversing (passed when created)
|
||
* a11 = direction (1 or -1) shifted to upper 6 bits
|
||
*
|
||
**************************************************************
|
||
GLOW_GREEN_PROC:
|
||
move a11,*-a12 ; save start color on proc stack
|
||
movi 1<<26,a11 ; initial delta
|
||
|
||
*
|
||
* MAIN LOOP
|
||
*
|
||
GG_lp1:
|
||
*
|
||
* Is palette still allocated?
|
||
*
|
||
move a9,a5
|
||
srl 16-6,a5 ; since PALRSIZ = 40h
|
||
ADDI PALRAM,A5
|
||
move *a5(PALID),a14,L
|
||
cmp a14,a8
|
||
jane SUCIDE ; diff PALID, die
|
||
move *a5(PALCNT),a14
|
||
jaz SUCIDE ; count 0 , die
|
||
*
|
||
* adjust palette and set up transfer
|
||
*
|
||
move a8,a6
|
||
move *a12,a14 ; start color
|
||
sll 4,a14
|
||
add a14,a6 ; pointer to source data
|
||
move a13,a4
|
||
addi PDATA+10h,a4 ; RAM location of palette's current state
|
||
move a4,a0 ; for PALSET
|
||
move a9,a5
|
||
zext a5 ; # colors in a5
|
||
clr a7
|
||
movy a10,a7 ; current delta
|
||
|
||
GG_lp2:
|
||
move *a6+,a1
|
||
move a1,a3
|
||
srl 5,a1 ; lose blue
|
||
sll 32-5,a1 ; green
|
||
srl 1,a1 ; leave a sign bit
|
||
sub a7,a1
|
||
jrnn nosatgrn
|
||
clr a1
|
||
nosatgrn:
|
||
srl 32-11,a1 ; final green
|
||
|
||
andi 01fh+07c00h,a3
|
||
add a3,a1
|
||
move a1,*a4+
|
||
dsjs a5,GG_lp2
|
||
|
||
move *a12,a1
|
||
sll 8,a1
|
||
clr a2
|
||
movy a9,a1 ; slot : st color in a1
|
||
srl 8,a1 ; slot in bits 8-15
|
||
movx a9,a2 ; num colors in a2
|
||
calla PALSET
|
||
*
|
||
* check direction of glow and adjust if necessary
|
||
*
|
||
addxy a11,a10 ; a10 = cur count : max count
|
||
move a10,a14
|
||
sra 26,a14
|
||
jrn adja11
|
||
abs a14
|
||
cmpxy a10,a14
|
||
jrxne skpa11adj ; if cur count = max, make a11 neg
|
||
adja11:
|
||
neg a11
|
||
jann SUCIDE
|
||
skpa11adj:
|
||
|
||
sloop 1,GG_lp1
|
||
|
||
|
||
|
||
|
||
.END
|
||
|