diff --git a/scorch.asm b/scorch.asm index 16efc67..664ff1c 100644 --- a/scorch.asm +++ b/scorch.asm @@ -625,30 +625,8 @@ NextPlayerShoots SeteXistenZ lda Energy,x sta eXistenZ,x - sta L1 - - ;DATA L1,L2 - ;Multiplication 8bit*8bit, - ;result 16bit - ;this algiorithm is a little longer than one in Ruszczyc 6502 book - ;but it is faster - - LDy #8 - LDA #0 - CLC -LP0 - ror - ROR L1 - BCC B0 - CLC - ADC #10 ; (L2) multiplication by 10 -B0 DEY - BNE LP0 - ror - ROR L1 - STA MaxForceTableH,x - lda L1 - sta MaxForceTableL,x + + jsr MaxForceCalculate dex bpl SeteXistenZ @@ -908,7 +886,37 @@ NotNegativeShieldEnergy .endr @ rts .endp +;-------------------------------------------------- +.proc MaxForceCalculate +; calculates max force for tank (tanknr in X) +; Energy of tank X in A +;-------------------------------------------------- + sta L1 + + ;DATA L1,L2 + ;Multiplication 8bit*8bit, + ;result 16bit + ;this algiorithm is a little longer than one in Ruszczyc 6502 book + ;but it is faster + LDy #8 + LDA #0 + CLC +LP0 + ror + ROR L1 + BCC B0 + CLC + ADC #10 ; (L2) multiplication by 10 +B0 DEY + BNE LP0 + ror + ROR L1 + STA MaxForceTableH,x + lda L1 + sta MaxForceTableL,x + rts +.endp ;-------------------------------------------------- .proc PMoutofScreen ;-------------------------------------------------- diff --git a/scorch.xex b/scorch.xex index 6c9c35a..8daadca 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index d29f539..2b8fcc1 100644 --- a/textproc.asm +++ b/textproc.asm @@ -835,7 +835,8 @@ invSelectDef ; if activate battery, we do it differently mva #sfx_battery sfx_effect mva #99 Energy,x - bne DecreaseDefensive ; bypass activation + jsr MaxForceCalculate + jmp DecreaseDefensive ; bypass activation NotBattery cmp #ind_Long_Barrel____ bne NotBarrel