diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index b9d0437ae..88503d1a7 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -175,6 +175,8 @@ public class Compiler { getLog().append(program.getScope().toString(program, null)); } + new Pass1AddressOfVolatile(program).execute(); + new Pass1FixLValuesLoHi(program).execute(); new Pass1AssertNoLValueIntermediate(program).execute(); new Pass1PointerSizeofFix(program).execute(); // After this point in the code all pointer math is byte-based @@ -184,6 +186,8 @@ public class Compiler { new PassNAddBooleanCasts(program).execute(); new PassNAddTypeConversionAssignment(program).execute(); + + new Pass1EarlyConstantIdentification(program).execute(); new Pass1ProcedureInline(program).execute(); new PassNStatementIndices(program).step(); diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java index c637ac29c..9c8f94fb0 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java @@ -143,7 +143,7 @@ public class LiveRangeEquivalenceClass { public boolean hasVolatile(Program program) { for(VariableRef varRef : variables) { Variable variable = program.getScope().getVariable(varRef); - if(variable.isDeclaredVolatile()) { + if(variable.isVolatile()) { return true; } } diff --git a/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java index 3714877c1..f6bd3e783 100644 --- a/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java @@ -38,6 +38,9 @@ public abstract class SymbolVariable implements Symbol { /** Specifies that the variable must always live in memory to be available for any multi-threaded accees (eg. in interrupts). */ private boolean declaredVolatile; + /** Specifies that the variable must always live in memory to be available for any multi-threaded accees (eg. in interrupts). */ + private boolean inferedVolatile; + /** Comments preceding the procedure in the source code. */ private List comments; @@ -156,6 +159,18 @@ public abstract class SymbolVariable implements Symbol { this.declaredVolatile = declaredVolatile; } + public void setInferedVolatile(boolean inferedVolatile) { + this.inferedVolatile = inferedVolatile; + } + + public boolean isInferedVolatile() { + return inferedVolatile; + } + + public boolean isVolatile() { + return declaredVolatile || inferedVolatile; + } + public List getComments() { return comments; } diff --git a/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java b/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java index 47c67dc0f..cf6f9e237 100644 --- a/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java @@ -12,6 +12,7 @@ public class VariableVersion extends Variable { this.setDeclaredAlignment(versionOf.getDeclaredAlignment()); this.setDeclaredRegister(versionOf.getDeclaredRegister()); this.setDeclaredVolatile(versionOf.isDeclaredVolatile()); + this.setInferedVolatile(versionOf.isInferedVolatile()); this.setInferredType(versionOf.isInferredType()); this.versionOfName = versionOf.getLocalName(); this.setComments(versionOf.getComments()); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfVolatile.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfVolatile.java new file mode 100644 index 000000000..19d4a56e3 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfVolatile.java @@ -0,0 +1,45 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.ControlFlowBlock; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.symbols.SymbolVariable; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.SymbolVariableRef; + +/** + * Add infered volatile to all variables, where address-of is used + */ +public class Pass1AddressOfVolatile extends Pass2SsaOptimization { + + public Pass1AddressOfVolatile(Program program) { + super(program); + } + + @Override + public boolean step() { + for(ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { + for(Statement statement : block.getStatements()) { + if(statement instanceof StatementAssignment) { + StatementAssignment assignment = (StatementAssignment) statement; + if(Operators.ADDRESS_OF.equals(assignment.getOperator()) ) { + RValue rValue = assignment.getrValue2(); + if(rValue instanceof SymbolVariableRef) { + Symbol toSymbol = getScope().getSymbol((SymbolVariableRef) rValue); + if(toSymbol instanceof SymbolVariable) { + ((SymbolVariable) toSymbol).setInferedVolatile(true); + getLog().append("Setting inferred volatile on symbol affected by address-of "+statement.toString(getProgram(), false)); + } + } + } + } + } + } + return false; + } + + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1EarlyConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass1EarlyConstantIdentification.java index 73521d08c..45cab0670 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1EarlyConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1EarlyConstantIdentification.java @@ -28,7 +28,7 @@ public class Pass1EarlyConstantIdentification extends Pass1Base { Collection earlyConstants = new ArrayList<>(); for(Variable variable : getProgram().getScope().getAllVariables(true)) { VariableRef variableRef = variable.getRef(); - if(!variable.isDeclaredConstant() && !variable.isDeclaredVolatile() && !variableRef.isIntermediate()) { + if(!variable.isDeclaredConstant() && !variable.isVolatile() && !variableRef.isIntermediate()) { if(!isParameter(variableRef)) { Collection assignments = getAssignments(variable); if(assignments.size() == 1) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureInline.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureInline.java index fa25f8e61..6b6e624d0 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureInline.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureInline.java @@ -301,6 +301,7 @@ public class Pass1ProcedureInline extends Pass1Base { inlineVar.setDeclaredConstant(procVar.isDeclaredConstant()); inlineVar.setDeclaredRegister(procVar.getDeclaredRegister()); inlineVar.setDeclaredVolatile(procVar.isDeclaredVolatile()); + inlineVar.setInferedVolatile(procVar.isInferedVolatile()); } else if(procSymbol instanceof Label) { String inlineLabelName = getInlineSymbolName(procedure, procSymbol, serial); callScope.addLabel(inlineLabelName); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindBlockScopes.java b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindBlockScopes.java index a6f36f036..8a999832c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindBlockScopes.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindBlockScopes.java @@ -73,6 +73,7 @@ public class Pass1UnwindBlockScopes extends Pass1Base { unwound.setDeclaredAlignment(((VariableUnversioned) symbol).getDeclaredAlignment()); unwound.setDeclaredConstant(((VariableUnversioned) symbol).isDeclaredConstant()); unwound.setDeclaredVolatile(((VariableUnversioned) symbol).isDeclaredVolatile()); + unwound.setInferedVolatile(((VariableUnversioned) symbol).isInferedVolatile()); unwound.setDeclaredRegister((((VariableUnversioned) symbol).getDeclaredRegister())); unwoundSymbols.put(symbol.getRef(), unwound.getRef()); } else if(symbol instanceof VariableIntermediate) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java index f9cc39d98..d665509b8 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java @@ -244,6 +244,7 @@ public class Pass1UnwindStructValues extends Pass1Base { memberVariable = scope.addVariable(variable.getLocalName() + "_" + member.getLocalName(), member.getType()); } memberVariable.setDeclaredVolatile(variable.isDeclaredVolatile()); + memberVariable.setInferedVolatile(variable.isInferedVolatile()); memberVariable.setDeclaredConstant(variable.isDeclaredConstant()); variableUnwinding.setMemberUnwinding(member.getLocalName(), memberVariable.getRef()); getLog().append("Created struct value member variable " + memberVariable.toString(getProgram())); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java index 9507abacb..472244539 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java @@ -95,7 +95,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { String unversionedFullName = null; for(VariableRef variableRef : aliasSet.getVars()) { Variable variable = programScope.getVariable(variableRef); - if(variable.isDeclaredVolatile()) { + if(variable.isVolatile()) { anyVolatile = true; } if(unversionedFullName == null) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java index 85784a04d..90e0e1302 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java @@ -182,7 +182,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { if(getConstant(phiRValue.getrValue()) != null) { VariableRef variable = phiVariable.getVariable(); Variable var = getScope().getVariable(variable); - if(var.isDeclaredVolatile()) { + if(var.isVolatile()) { // Volatile variables cannot be constant continue; } @@ -198,7 +198,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { if(lValue instanceof VariableRef) { VariableRef variable = (VariableRef) lValue; Variable var = getScope().getVariable(variable); - if(var.isDeclaredVolatile()) { + if(var.isVolatile()) { // Volatile variables cannot be constant return; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java index 09f8fa690..1a7e966ac 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java @@ -95,7 +95,7 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization { isVol.set(true); if(programValue.get() instanceof VariableRef) { Variable variable = getScope().getVariable((VariableRef) programValue.get()); - if(variable.isDeclaredVolatile()) + if(variable.isVolatile()) isVol.set(true); } }; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2LoopUnroll.java b/src/main/java/dk/camelot64/kickc/passes/Pass2LoopUnroll.java index f5ac36ec9..55a9fa9a1 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2LoopUnroll.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2LoopUnroll.java @@ -314,6 +314,7 @@ public class Pass2LoopUnroll extends Pass2SsaOptimization { newVar.setType(definedVar.getType()); newVar.setDeclaredRegister(definedVar.getDeclaredRegister()); newVar.setDeclaredVolatile(definedVar.isDeclaredVolatile()); + newVar.setInferedVolatile(definedVar.isInferedVolatile()); newVar.setDeclaredAlignment(definedVar.getDeclaredAlignment()); newVar.setInferredType(definedVar.isInferredType()); } else if(definedVarRef.isVersion()) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java index acc80a0a4..d15d44ca5 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java @@ -32,7 +32,7 @@ public class Pass4LiveRangeEquivalenceClassesFinalize extends Pass2Base { // Add all versions of volatile variables to the same equivalence class for(Variable variable : getSymbols().getAllVariables(true)) { - if(variable.isVersioned() && variable.isDeclaredVolatile()) { + if(variable.isVersioned() && variable.isVolatile()) { // Found a volatile non-versioned variable for(Variable otherVariable : variable.getScope().getAllVariables(false)) { if(otherVariable.isVersioned()) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java index acac2834b..2114875b1 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java @@ -68,7 +68,7 @@ public class Pass4RegisterUpliftPotentialInitialize extends Pass2Base { private boolean varVolatile(LiveRangeEquivalenceClass equivalenceClass) { for(VariableRef variableRef : equivalenceClass.getVariables()) { Variable variable = getSymbols().getVariable(variableRef); - if(variable.isDeclaredVolatile()) { + if(variable.isVolatile()) { return true; } } diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java index 7c40bf578..3f33298e2 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java @@ -46,10 +46,10 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization { if(variable == null) { // Already deleted eliminate = true; - } else if(!variable.isDeclaredVolatile()) { + } else if(!variable.isVolatile()) { // Not volatile eliminate = true; - } else if(variable.isDeclaredVolatile() && variable.getType() instanceof SymbolTypeStruct) { + } else if(variable.isVolatile() && variable.getType() instanceof SymbolTypeStruct) { // If an unwound volatile struct - eliminate it StructUnwinding.VariableUnwinding variableUnwinding = getProgram().getStructUnwinding().getVariableUnwinding(variable.getRef()); if(variableUnwinding != null) { diff --git a/src/test/ref/address-of-0.cfg b/src/test/ref/address-of-0.cfg index 11a27ccda..633ce0594 100644 --- a/src/test/ref/address-of-0.cfg +++ b/src/test/ref/address-of-0.cfg @@ -8,10 +8,10 @@ @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] phi() + [4] (byte) main::b#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - [5] (byte) main::b#2 ← phi( main/(byte) 0 main::@1/(byte) main::b#1 ) + [5] (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 [8] (byte) main::b#1 ← ++ (byte) main::b#2 diff --git a/src/test/ref/address-of-0.log b/src/test/ref/address-of-0.log index 787320b73..0774434c9 100644 --- a/src/test/ref/address-of-0.log +++ b/src/test/ref/address-of-0.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte*~) main::$0 ← & (byte) main::b Adding pointer type conversion cast (byte*) main::SCREEN in (byte*) main::SCREEN ← (number) $400 Identified constant variable (byte*) main::SCREEN Culled Empty Block (label) main::@2 @@ -71,7 +72,6 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [3] (byte*) main::bp#0 ← & (byte) main::b#2 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::SCREEN#0 = (byte*) 1024 -Constant (const byte) main::b#0 = 0 Constant (const byte*) main::bp#0 = &main::b#2 Successful SSA optimization Pass2ConstantIdentification Resolved ranged next value [8] main::b#1 ← ++ main::b#2 to ++ @@ -82,27 +82,23 @@ Simplifying constant integer cast $b Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $b Successful SSA optimization PassNFinalizeNumberTypeConversions -Inlining constant with var siblings (const byte) main::b#0 -Constant inlined main::b#0 = (byte) 0 -Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @2 Adding NOP phi() at start of @end -Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:2 Created 1 initial phi equivalence classes -Coalesced [12] main::b#3 ← main::b#1 +Coalesced [6] main::b#3 ← main::b#0 +Coalesced [13] main::b#4 ← main::b#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) @2 Culled Empty Block (label) main::@3 Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end -Adding NOP phi() at start of main FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -115,10 +111,10 @@ FINAL CONTROL FLOW GRAPH @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] phi() + [4] (byte) main::b#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - [5] (byte) main::b#2 ← phi( main/(byte) 0 main::@1/(byte) main::b#1 ) + [5] (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 [8] (byte) main::b#1 ← ++ (byte) main::b#2 @@ -133,19 +129,20 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::SCREEN (byte) main::b +(byte) main::b#0 4.0 (byte) main::b#1 16.5 -(byte) main::b#2 11.0 +(byte) main::b#2 11.666666666666666 (byte*) main::bp (byte) main::c (byte) main::c#0 22.0 Initial phi equivalence classes -[ main::b#2 main::b#1 ] +[ main::b#2 main::b#0 main::b#1 ] Added variable main::c#0 to zero page equivalence class [ main::c#0 ] Complete equivalence classes -[ main::b#2 main::b#1 ] +[ main::b#2 main::b#0 main::b#1 ] [ main::c#0 ] -Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +Allocated zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] Allocated zp ZP_BYTE:3 [ main::c#0 ] INITIAL ASM @@ -164,67 +161,64 @@ b1_from_bbegin: //SEG5 @1 b1: //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG8 @end bend: -//SEG10 main +//SEG9 main main: { .label SCREEN = $400 .label bp = b - .label c = 3 .label b = 2 - //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: - //SEG12 [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + .label c = 3 + //SEG10 [4] (byte) main::b#0 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta b - jmp b1 - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + b1_from_main: b1_from_b1: - //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG12 [5] phi (byte) main::b#2 = (byte) main::b#0 [phi:main/main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG13 main::@1 b1: - //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuz1=_deref_pbuc1_plus_1 + //SEG14 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuz1=_deref_pbuc1_plus_1 ldy bp iny sty c - //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG15 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy b sta SCREEN,y - //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG16 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG19 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG17 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$b cmp b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG18 main::@return breturn: - //SEG21 [10] return + //SEG19 [10] return rts } REGISTER UPLIFT POTENTIAL REGISTERS +Statement [4] (byte) main::b#0 ← (byte) 0 [ main::b#0 ] ( main:2 [ main::b#0 ] ) always clobbers reg byte a Statement [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte y Statement [9] if((byte) main::b#1!=(byte) $b) goto main::@1 [ main::b#1 ] ( main:2 [ main::b#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::b#2 main::b#1 ] : zp ZP_BYTE:2 , +Potential registers zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] : zp ZP_BYTE:2 , Potential registers zp ZP_BYTE:3 [ main::c#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp ZP_BYTE:2 [ main::b#2 main::b#1 ] 22: zp ZP_BYTE:3 [ main::c#0 ] +Uplift Scope [main] 32.17: zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] 22: zp ZP_BYTE:3 [ main::c#0 ] Uplift Scope [] -Uplifting [main] best 443 combination zp ZP_BYTE:2 [ main::b#2 main::b#1 ] reg byte a [ main::c#0 ] -Uplifting [] best 443 combination -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::b#2 main::b#1 ] -Uplifting [main] best 443 combination zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +Uplifting [main] best 368 combination zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] reg byte a [ main::c#0 ] +Uplifting [] best 368 combination +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] +Uplifting [main] best 368 combination zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -242,48 +236,44 @@ b1_from_bbegin: //SEG5 @1 b1: //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG8 @end bend: -//SEG10 main +//SEG9 main main: { .label SCREEN = $400 .label bp = b .label b = 2 - //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: - //SEG12 [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG10 [4] (byte) main::b#0 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta b - jmp b1 - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + b1_from_main: b1_from_b1: - //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG12 [5] phi (byte) main::b#2 = (byte) main::b#0 [phi:main/main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG13 main::@1 b1: - //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG14 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuaa=_deref_pbuc1_plus_1 lda bp clc adc #1 - //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG15 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta SCREEN,y - //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG16 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG19 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG17 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$b cmp b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG18 main::@return breturn: - //SEG21 [10] return + //SEG19 [10] return rts } @@ -296,19 +286,16 @@ Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Removing instruction b1_from_bbegin: Removing instruction b1: -Removing instruction main_from_b1: Removing instruction bend_from_b1: +Removing instruction b1_from_main: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: -Removing instruction b1_from_main: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin -Removing instruction jmp b1 -Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination @@ -322,19 +309,20 @@ FINAL SYMBOL TABLE (byte*) main::SCREEN (const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 (byte) main::b +(byte) main::b#0 b zp ZP_BYTE:2 4.0 (byte) main::b#1 b zp ZP_BYTE:2 16.5 -(byte) main::b#2 b zp ZP_BYTE:2 11.0 +(byte) main::b#2 b zp ZP_BYTE:2 11.666666666666666 (byte*) main::bp (const byte*) main::bp#0 bp = &(byte) main::b#2 (byte) main::c (byte) main::c#0 reg byte a 22.0 -zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] reg byte a [ main::c#0 ] FINAL ASSEMBLER -Score: 341 +Score: 296 //SEG0 File Comments // Test address-of - use the pointer to get the value @@ -347,37 +335,35 @@ Score: 341 //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] //SEG5 @1 //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -//SEG9 @end -//SEG10 main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label SCREEN = $400 .label bp = b .label b = 2 - //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG10 [4] (byte) main::b#0 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta b - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 main::@1 + //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + //SEG12 [5] phi (byte) main::b#2 = (byte) main::b#0 [phi:main/main::@1->main::@1#0] -- register_copy + //SEG13 main::@1 b1: - //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG14 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte) 1 -- vbuaa=_deref_pbuc1_plus_1 lda bp clc adc #1 - //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG15 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta SCREEN,y - //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG16 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG19 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG17 [9] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$b cmp b bne b1 - //SEG20 main::@return - //SEG21 [10] return + //SEG18 main::@return + //SEG19 [10] return rts } diff --git a/src/test/ref/address-of-0.sym b/src/test/ref/address-of-0.sym index d06f605a2..5299a9b43 100644 --- a/src/test/ref/address-of-0.sym +++ b/src/test/ref/address-of-0.sym @@ -7,12 +7,13 @@ (byte*) main::SCREEN (const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 (byte) main::b +(byte) main::b#0 b zp ZP_BYTE:2 4.0 (byte) main::b#1 b zp ZP_BYTE:2 16.5 -(byte) main::b#2 b zp ZP_BYTE:2 11.0 +(byte) main::b#2 b zp ZP_BYTE:2 11.666666666666666 (byte*) main::bp (const byte*) main::bp#0 bp = &(byte) main::b#2 (byte) main::c (byte) main::c#0 reg byte a 22.0 -zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ] reg byte a [ main::c#0 ] diff --git a/src/test/ref/address-of-1.log b/src/test/ref/address-of-1.log index 8a8c03968..bfa98e534 100644 --- a/src/test/ref/address-of-1.log +++ b/src/test/ref/address-of-1.log @@ -1,3 +1,6 @@ +Setting inferred volatile on symbol affected by address-of (byte*~) main::$0 ← & (byte) main::b1 +Setting inferred volatile on symbol affected by address-of (byte*~) main::$2 ← & (byte) main::b2 +Setting inferred volatile on symbol affected by address-of (byte*~) main::$4 ← & (byte) main::b3 Adding pointer type conversion cast (byte*) main::SCREEN in (byte*) main::SCREEN ← (number) $400 Identified constant variable (byte*) main::SCREEN Culled Empty Block (label) @1 @@ -246,9 +249,6 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ setByte::b#3 ] [ setByte::ptr#3 ] -Added variable main::b1#0 to zero page equivalence class [ main::b1#0 ] -Added variable main::b2#0 to zero page equivalence class [ main::b2#0 ] -Added variable main::b3#0 to zero page equivalence class [ main::b3#0 ] Complete equivalence classes [ setByte::b#3 ] [ setByte::ptr#3 ] diff --git a/src/test/ref/address-of-2.asm b/src/test/ref/address-of-2.asm index b2bad2eac..255dfcd6d 100644 --- a/src/test/ref/address-of-2.asm +++ b/src/test/ref/address-of-2.asm @@ -1,13 +1,18 @@ // Test address-of by assigning the affected variable in multiple ways .pc = $801 "Basic" -:BasicUpstart(main) +:BasicUpstart(bbegin) .pc = $80d "Program" .label val = 2 +bbegin: + lda #0 + sta val + jsr main + rts main: { .label SCREEN1 = $400 .label ptr = val .label SCREEN2 = SCREEN1+$28 - lda #0 + lda val sta SCREEN1 lda #'.' sta SCREEN2 @@ -17,24 +22,26 @@ main: { sta SCREEN1+1 lda #'.' sta SCREEN2+1 + // Set value directly lda #2 + sta val sta SCREEN1+2 lda ptr sta SCREEN2+2 // Set value through pointer lda #3 sta ptr - lda #2 + lda val sta SCREEN1+3 lda ptr sta SCREEN2+3 jsr setv - lda #setv.v + lda val sta SCREEN1+4 lda ptr sta SCREEN2+4 jsr setp - lda #setv.v + lda val sta SCREEN1+5 lda ptr sta SCREEN2+5 @@ -47,6 +54,8 @@ setp: { rts } setv: { - .label v = 4 + .const v = 4 + lda #v + sta val rts } diff --git a/src/test/ref/address-of-2.cfg b/src/test/ref/address-of-2.cfg index ae82daf58..6756e1d01 100644 --- a/src/test/ref/address-of-2.cfg +++ b/src/test/ref/address-of-2.cfg @@ -1,5 +1,5 @@ @begin: scope:[] from - [0] phi() + [0] (byte) val#0 ← (byte) 0 to:@1 @1: scope:[] from @begin [1] phi() @@ -8,39 +8,40 @@ @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 + [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' [6] (byte) val#1 ← (byte) 1 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' - [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 - [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) - [11] *((const byte*) main::ptr#0) ← (byte) 3 - [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 - [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) - [14] call setv + [9] (byte) val#2 ← (byte) 2 + [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 + [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) + [12] *((const byte*) main::ptr#0) ← (byte) 3 + [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 + [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) + [15] call setv to:main::@1 main::@1: scope:[main] from main - [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 - [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) - [17] call setp + [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 + [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) + [18] call setp to:main::@2 main::@2: scope:[main] from main::@1 - [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 - [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) + [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 + [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) to:main::@return main::@return: scope:[main] from main::@2 - [20] return + [21] return to:@return setp: scope:[setp] from main::@1 - [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 + [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 to:setp::@return setp::@return: scope:[setp] from setp - [22] return + [23] return to:@return setv: scope:[setv] from main - [23] phi() + [24] (byte) val#12 ← (const byte) setv::v#0 to:setv::@return setv::@return: scope:[setv] from setv - [24] return + [25] return to:@return diff --git a/src/test/ref/address-of-2.log b/src/test/ref/address-of-2.log index fd1f7e258..39ae7daa5 100644 --- a/src/test/ref/address-of-2.log +++ b/src/test/ref/address-of-2.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte*~) main::$1 ← & (byte) val Adding pointer type conversion cast (byte*) main::SCREEN1 in (byte*) main::SCREEN1 ← (number) $400 Culled Empty Block (label) @1 Culled Empty Block (label) @2 @@ -198,41 +199,38 @@ Identical Phi Values (byte) val#13 (byte) val#10 Successful SSA optimization Pass2IdenticalPhiElimination Constant right-side identified [13] (byte*) main::ptr#0 ← & (byte) val#1 Successful SSA optimization Pass2ConstantRValueConsolidation -Constant (const byte) val#0 = 0 Constant (const byte*) main::SCREEN1#0 = (byte*) 1024 Constant (const byte) main::idx#0 = 0 Constant (const byte*) main::ptr#0 = &val#1 -Constant (const byte) val#2 = 2 Constant (const byte) setv::v#0 = 4 Constant (const byte) setp::v#0 = 5 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) setp::p#0 = main::ptr#0 -Constant (const byte) val#12 = setv::v#0 Successful SSA optimization Pass2ConstantIdentification -Simplifying expression containing zero main::SCREEN1#0 in [6] *((const byte*) main::SCREEN1#0 + (const byte) main::idx#0) ← (const byte) val#0 +Simplifying expression containing zero main::SCREEN1#0 in [6] *((const byte*) main::SCREEN1#0 + (const byte) main::idx#0) ← (byte) val#0 Simplifying expression containing zero main::SCREEN2#0 in [7] *((byte*) main::SCREEN2#0 + (const byte) main::idx#0) ← (byte) '.' Successful SSA optimization PassNSimplifyExpressionWithZero -Eliminating unused variable (byte) main::idx#6 and assignment [22] (byte) main::idx#6 ← ++ (byte) main::idx#5 +Eliminating unused variable (byte) main::idx#6 and assignment [24] (byte) main::idx#6 ← ++ (byte) main::idx#5 Successful SSA optimization PassNEliminateUnusedVars -Constant right-side identified [0] (byte*) main::SCREEN2#0 ← (const byte*) main::SCREEN1#0 + (byte) $28 -Constant right-side identified [3] (byte) main::idx#1 ← ++ (const byte) main::idx#0 +Constant right-side identified [1] (byte*) main::SCREEN2#0 ← (const byte*) main::SCREEN1#0 + (byte) $28 +Constant right-side identified [4] (byte) main::idx#1 ← ++ (const byte) main::idx#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::SCREEN2#0 = main::SCREEN1#0+$28 Constant (const byte) main::idx#1 = ++main::idx#0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [5] (byte) main::idx#2 ← ++ (const byte) main::idx#1 +Constant right-side identified [6] (byte) main::idx#2 ← ++ (const byte) main::idx#1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::idx#2 = ++main::idx#1 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [7] (byte) main::idx#3 ← ++ (const byte) main::idx#2 +Constant right-side identified [9] (byte) main::idx#3 ← ++ (const byte) main::idx#2 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::idx#3 = ++main::idx#2 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [10] (byte) main::idx#4 ← ++ (const byte) main::idx#3 +Constant right-side identified [12] (byte) main::idx#4 ← ++ (const byte) main::idx#3 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::idx#4 = ++main::idx#3 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [13] (byte) main::idx#5 ← ++ (const byte) main::idx#4 +Constant right-side identified [15] (byte) main::idx#5 ← ++ (const byte) main::idx#4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::idx#5 = ++main::idx#4 Successful SSA optimization Pass2ConstantIdentification @@ -242,19 +240,13 @@ Inlining constant with different constant siblings (const byte) main::idx#2 Inlining constant with different constant siblings (const byte) main::idx#3 Inlining constant with different constant siblings (const byte) main::idx#4 Inlining constant with different constant siblings (const byte) main::idx#5 -Inlining constant with var siblings (const byte) val#0 -Inlining constant with var siblings (const byte) val#2 -Inlining constant with var siblings (const byte) val#12 Constant inlined main::idx#0 = (byte) 0 Constant inlined main::idx#1 = ++(byte) 0 -Constant inlined val#0 = (byte) 0 Constant inlined main::idx#2 = ++++(byte) 0 Constant inlined main::idx#3 = ++++++(byte) 0 Constant inlined main::idx#4 = ++++++++(byte) 0 Constant inlined main::idx#5 = ++++++++++(byte) 0 -Constant inlined val#12 = (const byte) setv::v#0 Constant inlined setp::p#0 = (const byte*) main::ptr#0 -Constant inlined val#2 = (byte) 2 Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in *(main::SCREEN1#0+++0) Consolidated array index constant in *(main::SCREEN2#0+++0) @@ -283,27 +275,23 @@ Simplifying constant integer increment ++2 Simplifying constant integer increment ++3 Simplifying constant integer increment ++4 Successful SSA optimization Pass2ConstantSimplification -Adding NOP phi() at start of @begin Adding NOP phi() at start of @3 Adding NOP phi() at start of @4 Adding NOP phi() at start of @end -Adding NOP phi() at start of setv CALL GRAPH Calls in [] to main:2 -Calls in [main] to setv:15 setp:18 +Calls in [main] to setv:16 setp:19 Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes Culled Empty Block (label) @4 Renumbering block @3 to @1 -Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end -Adding NOP phi() at start of setv FINAL CONTROL FLOW GRAPH @begin: scope:[] from - [0] phi() + [0] (byte) val#0 ← (byte) 0 to:@1 @1: scope:[] from @begin [1] phi() @@ -312,41 +300,42 @@ FINAL CONTROL FLOW GRAPH @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 + [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' [6] (byte) val#1 ← (byte) 1 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' - [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 - [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) - [11] *((const byte*) main::ptr#0) ← (byte) 3 - [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 - [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) - [14] call setv + [9] (byte) val#2 ← (byte) 2 + [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 + [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) + [12] *((const byte*) main::ptr#0) ← (byte) 3 + [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 + [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) + [15] call setv to:main::@1 main::@1: scope:[main] from main - [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 - [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) - [17] call setp + [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 + [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) + [18] call setp to:main::@2 main::@2: scope:[main] from main::@1 - [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 - [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) + [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 + [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) to:main::@return main::@return: scope:[main] from main::@2 - [20] return + [21] return to:@return setp: scope:[setp] from main::@1 - [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 + [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 to:setp::@return setp::@return: scope:[setp] from setp - [22] return + [23] return to:@return setv: scope:[setv] from main - [23] phi() + [24] (byte) val#12 ← (const byte) setv::v#0 to:setv::@return setv::@return: scope:[setv] from setv - [24] return + [25] return to:@return @@ -362,13 +351,18 @@ VARIABLE REGISTER WEIGHTS (void()) setv((byte) setv::v) (byte) setv::v (byte) val +(byte) val#0 2.0 (byte) val#1 4.0 +(byte) val#12 1.0 +(byte) val#2 1.5 Initial phi equivalence classes -Added variable val#1 to zero page equivalence class [ val#1 ] +Coalescing volatile variable equivalence classes [ val#0 ] and [ val#1 ] +Coalescing volatile variable equivalence classes [ val#0 val#1 ] and [ val#2 ] +Coalescing volatile variable equivalence classes [ val#0 val#1 val#2 ] and [ val#12 ] Complete equivalence classes -[ val#1 ] -Allocated zp ZP_BYTE:2 [ val#1 ] +[ val#0 val#1 val#2 val#12 ] +Allocated zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] INITIAL ASM //SEG0 File Comments @@ -381,137 +375,148 @@ INITIAL ASM .label val = 2 //SEG3 @begin bbegin: -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [0] (byte) val#0 ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta val +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG6 @1 b1: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN1 = $400 .label ptr = val .label SCREEN2 = SCREEN1+$28 - //SEG10 [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 - lda #0 + //SEG11 [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1 - //SEG11 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2 - //SEG12 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 + //SEG13 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 // Here we have not yet used address-of - so val can be versioned freely lda #1 sta val - //SEG13 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 + //SEG14 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 lda val sta SCREEN1+1 - //SEG14 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2+1 - //SEG15 [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG16 [9] (byte) val#2 ← (byte) 2 -- vbuz1=vbuc1 + // Set value directly lda #2 + sta val + //SEG17 [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+2 - //SEG16 [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG18 [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+2 - //SEG17 [11] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG19 [12] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 // Set value through pointer lda #3 sta ptr - //SEG18 [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 + //SEG20 [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+3 - //SEG19 [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG21 [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+3 - //SEG20 [14] call setv - //SEG21 [23] phi from main to setv [phi:main->setv] - setv_from_main: + //SEG22 [15] call setv jsr setv jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG24 [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+4 - //SEG24 [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG25 [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+4 - //SEG25 [17] call setp + //SEG26 [18] call setp jsr setp jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG28 [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+5 - //SEG28 [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG29 [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+5 jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [20] return + //SEG31 [21] return rts } -//SEG31 setp +//SEG32 setp setp: { .const v = 5 - //SEG32 [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 + //SEG33 [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 lda #v sta main.ptr jmp breturn - //SEG33 setp::@return + //SEG34 setp::@return breturn: - //SEG34 [22] return + //SEG35 [23] return rts } -//SEG35 setv +//SEG36 setv setv: { - .label v = 4 + .const v = 4 + //SEG37 [24] (byte) val#12 ← (const byte) setv::v#0 -- vbuz1=vbuc1 + lda #v + sta val jmp breturn - //SEG36 setv::@return + //SEG38 setv::@return breturn: - //SEG37 [24] return + //SEG39 [25] return rts } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [0] (byte) val#0 ← (byte) 0 [ val#0 ] ( ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] (byte) val#1 ← (byte) 1 [ val#1 ] ( main:2 [ val#1 ] ) always clobbers reg byte a Statement [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::ptr#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 [ ] ( main:2::setp:17 [ ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ val#1 ] : zp ZP_BYTE:2 , +Statement [9] (byte) val#2 ← (byte) 2 [ val#2 ] ( main:2 [ val#2 ] ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 [ val#2 ] ( main:2 [ val#2 ] ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) [ val#2 ] ( main:2 [ val#2 ] ) always clobbers reg byte a +Statement [12] *((const byte*) main::ptr#0) ← (byte) 3 [ val#2 ] ( main:2 [ val#2 ] ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 [ val#12 ] ( main:2 [ val#12 ] ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) [ val#12 ] ( main:2 [ val#12 ] ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 [ ] ( main:2::setp:18 [ val#12 ] ) always clobbers reg byte a +Statement [24] (byte) val#12 ← (const byte) setv::v#0 [ val#12 ] ( main:2::setv:15 [ val#12 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] : zp ZP_BYTE:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 4: zp ZP_BYTE:2 [ val#1 ] +Uplift Scope [] 8.5: zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] Uplift Scope [main] Uplift Scope [setv] Uplift Scope [setp] -Uplifting [] best 182 combination zp ZP_BYTE:2 [ val#1 ] -Uplifting [main] best 182 combination -Uplifting [setv] best 182 combination -Uplifting [setp] best 182 combination -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ val#1 ] -Uplifting [] best 182 combination zp ZP_BYTE:2 [ val#1 ] +Uplifting [] best 175 combination zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] +Uplifting [main] best 175 combination +Uplifting [setv] best 175 combination +Uplifting [setp] best 175 combination +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] +Uplifting [] best 175 combination zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -524,104 +529,112 @@ ASSEMBLER BEFORE OPTIMIZATION .label val = 2 //SEG3 @begin bbegin: -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [0] (byte) val#0 ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta val +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG6 @1 b1: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN1 = $400 .label ptr = val .label SCREEN2 = SCREEN1+$28 - //SEG10 [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 - lda #0 + //SEG11 [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1 - //SEG11 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2 - //SEG12 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 + //SEG13 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 // Here we have not yet used address-of - so val can be versioned freely lda #1 sta val - //SEG13 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 + //SEG14 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 lda val sta SCREEN1+1 - //SEG14 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2+1 - //SEG15 [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG16 [9] (byte) val#2 ← (byte) 2 -- vbuz1=vbuc1 + // Set value directly lda #2 + sta val + //SEG17 [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+2 - //SEG16 [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG18 [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+2 - //SEG17 [11] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG19 [12] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 // Set value through pointer lda #3 sta ptr - //SEG18 [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 + //SEG20 [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+3 - //SEG19 [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG21 [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+3 - //SEG20 [14] call setv - //SEG21 [23] phi from main to setv [phi:main->setv] - setv_from_main: + //SEG22 [15] call setv jsr setv jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG24 [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+4 - //SEG24 [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG25 [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+4 - //SEG25 [17] call setp + //SEG26 [18] call setp jsr setp jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG28 [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+5 - //SEG28 [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG29 [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+5 jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [20] return + //SEG31 [21] return rts } -//SEG31 setp +//SEG32 setp setp: { .const v = 5 - //SEG32 [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 + //SEG33 [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 lda #v sta main.ptr jmp breturn - //SEG33 setp::@return + //SEG34 setp::@return breturn: - //SEG34 [22] return + //SEG35 [23] return rts } -//SEG35 setv +//SEG36 setv setv: { - .label v = 4 + .const v = 4 + //SEG37 [24] (byte) val#12 ← (const byte) setv::v#0 -- vbuz1=vbuc1 + lda #v + sta val jmp breturn - //SEG36 setv::@return + //SEG38 setv::@return breturn: - //SEG37 [24] return + //SEG39 [25] return rts } @@ -635,24 +648,21 @@ Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda val +Removing instruction lda val Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction b1_from_bbegin: -Removing instruction b1: Removing instruction bend_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b1: Removing instruction bend: -Removing instruction setv_from_main: Removing instruction b1: Removing instruction b2: Removing instruction breturn: Removing instruction breturn: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Updating BasicUpstart to call main directly -Removing instruction jsr main -Succesful ASM optimization Pass5SkipBegin -Removing instruction bbegin: -Succesful ASM optimization Pass5UnusedLabelElimination +Adding RTS to root block +Succesful ASM optimization Pass5AddMainRts FINAL SYMBOL TABLE (label) @1 @@ -679,102 +689,116 @@ FINAL SYMBOL TABLE (byte) setv::v (const byte) setv::v#0 v = (byte) 4 (byte) val +(byte) val#0 val zp ZP_BYTE:2 2.0 (byte) val#1 val zp ZP_BYTE:2 4.0 +(byte) val#12 val zp ZP_BYTE:2 1.0 +(byte) val#2 val zp ZP_BYTE:2 1.5 -zp ZP_BYTE:2 [ val#1 ] +zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] FINAL ASSEMBLER -Score: 125 +Score: 154 //SEG0 File Comments // Test address-of by assigning the affected variable in multiple ways //SEG1 Basic Upstart .pc = $801 "Basic" -:BasicUpstart(main) +:BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels .label val = 2 //SEG3 @begin -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG5 @1 -//SEG6 [2] call main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +bbegin: +//SEG4 [0] (byte) val#0 ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta val +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG6 @1 +//SEG7 [2] call main + jsr main + rts +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN1 = $400 .label ptr = val .label SCREEN2 = SCREEN1+$28 - //SEG10 [4] *((const byte*) main::SCREEN1#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 - lda #0 + //SEG11 [4] *((const byte*) main::SCREEN1#0) ← (byte) val#0 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1 - //SEG11 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN2#0) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2 - //SEG12 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 + //SEG13 [6] (byte) val#1 ← (byte) 1 -- vbuz1=vbuc1 // Here we have not yet used address-of - so val can be versioned freely lda #1 sta val - //SEG13 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 + //SEG14 [7] *((const byte*) main::SCREEN1#0+(byte) 1) ← (byte) val#1 -- _deref_pbuc1=vbuz1 sta SCREEN1+1 - //SEG14 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) main::SCREEN2#0+(byte) 1) ← (byte) '.' -- _deref_pbuc1=vbuc2 lda #'.' sta SCREEN2+1 - //SEG15 [9] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG16 [9] (byte) val#2 ← (byte) 2 -- vbuz1=vbuc1 + // Set value directly lda #2 + sta val + //SEG17 [10] *((const byte*) main::SCREEN1#0+(byte) 2) ← (byte) val#2 -- _deref_pbuc1=vbuz1 sta SCREEN1+2 - //SEG16 [10] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG18 [11] *((const byte*) main::SCREEN2#0+(byte) 2) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+2 - //SEG17 [11] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG19 [12] *((const byte*) main::ptr#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 // Set value through pointer lda #3 sta ptr - //SEG18 [12] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 + //SEG20 [13] *((const byte*) main::SCREEN1#0+(byte) 3) ← (byte) val#2 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+3 - //SEG19 [13] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG21 [14] *((const byte*) main::SCREEN2#0+(byte) 3) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+3 - //SEG20 [14] call setv - //SEG21 [23] phi from main to setv [phi:main->setv] + //SEG22 [15] call setv jsr setv - //SEG22 main::@1 - //SEG23 [15] *((const byte*) main::SCREEN1#0+(byte) 4) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG23 main::@1 + //SEG24 [16] *((const byte*) main::SCREEN1#0+(byte) 4) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+4 - //SEG24 [16] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG25 [17] *((const byte*) main::SCREEN2#0+(byte) 4) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+4 - //SEG25 [17] call setp + //SEG26 [18] call setp jsr setp - //SEG26 main::@2 - //SEG27 [18] *((const byte*) main::SCREEN1#0+(byte) 5) ← (const byte) setv::v#0 -- _deref_pbuc1=vbuc2 - lda #setv.v + //SEG27 main::@2 + //SEG28 [19] *((const byte*) main::SCREEN1#0+(byte) 5) ← (byte) val#12 -- _deref_pbuc1=vbuz1 + lda val sta SCREEN1+5 - //SEG28 [19] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG29 [20] *((const byte*) main::SCREEN2#0+(byte) 5) ← *((const byte*) main::ptr#0) -- _deref_pbuc1=_deref_pbuc2 lda ptr sta SCREEN2+5 - //SEG29 main::@return - //SEG30 [20] return + //SEG30 main::@return + //SEG31 [21] return rts } -//SEG31 setp +//SEG32 setp setp: { .const v = 5 - //SEG32 [21] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 + //SEG33 [22] *((const byte*) main::ptr#0) ← (const byte) setp::v#0 -- _deref_pbuc1=vbuc2 lda #v sta main.ptr - //SEG33 setp::@return - //SEG34 [22] return + //SEG34 setp::@return + //SEG35 [23] return rts } -//SEG35 setv +//SEG36 setv setv: { - .label v = 4 - //SEG36 setv::@return - //SEG37 [24] return + .const v = 4 + //SEG37 [24] (byte) val#12 ← (const byte) setv::v#0 -- vbuz1=vbuc1 + lda #v + sta val + //SEG38 setv::@return + //SEG39 [25] return rts } diff --git a/src/test/ref/address-of-2.sym b/src/test/ref/address-of-2.sym index 5bb29bff7..0f1993185 100644 --- a/src/test/ref/address-of-2.sym +++ b/src/test/ref/address-of-2.sym @@ -22,6 +22,9 @@ (byte) setv::v (const byte) setv::v#0 v = (byte) 4 (byte) val +(byte) val#0 val zp ZP_BYTE:2 2.0 (byte) val#1 val zp ZP_BYTE:2 4.0 +(byte) val#12 val zp ZP_BYTE:2 1.0 +(byte) val#2 val zp ZP_BYTE:2 1.5 -zp ZP_BYTE:2 [ val#1 ] +zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ] diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index 18e633ef2..fd22a80ac 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -120,6 +120,7 @@ .const toSpritePtr1_return = PLAYFIELD_SPRITES/$40 .label keyboard_events_size = $42 .label render_screen_showing = $55 + .label score_bcd = $28 .label irq_raster_next = $56 .label irq_sprite_ypos = $57 .label irq_sprite_ptr = $58 @@ -139,7 +140,6 @@ .label render_screen_show = 2 .label current_movedown_counter = 4 .label lines_bcd = $26 - .label score_bcd = $28 .label current_piece_17 = $1e .label render_screen_render_33 = $e .label current_xpos_59 = $f @@ -161,6 +161,11 @@ bbegin: // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing + // Current score in BCD-format + sta score_bcd + sta score_bcd+1 + sta score_bcd+2 + sta score_bcd+3 // Original Color Data // The raster line of the next IRQ lda #IRQ_RASTER_FIRST @@ -218,10 +223,6 @@ main: { lda #0 sta level_bcd sta level - sta score_bcd - sta score_bcd+1 - sta score_bcd+2 - sta score_bcd+3 sta lines_bcd sta lines_bcd+1 sta current_movedown_counter diff --git a/src/test/ref/complex/tetris/tetris.cfg b/src/test/ref/complex/tetris/tetris.cfg index a56858513..bc6ed50df 100644 --- a/src/test/ref/complex/tetris/tetris.cfg +++ b/src/test/ref/complex/tetris/tetris.cfg @@ -3,6 +3,7 @@ to:@1 @1: scope:[] from @begin [1] (byte) render_screen_showing#0 ← (byte) 0 + [2] (dword) score_bcd#0 ← (byte) 0 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -36,1183 +37,1183 @@ }} to:@3 @3: scope:[] from @2 - [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 + [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 to:toSpritePtr1 toSpritePtr1: scope:[] from @3 - [8] phi() + [9] phi() to:@5 @5: scope:[] from toSpritePtr1 - [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 - [10] (byte) irq_cnt#0 ← (byte) 0 + [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 + [11] (byte) irq_cnt#0 ← (byte) 0 to:@4 @4: scope:[] from @5 - [11] phi() - [12] call main + [12] phi() + [13] call main to:@end @end: scope:[] from @4 - [13] phi() -main: scope:[main] from @4 [14] phi() - [15] call sid_rnd_init +main: scope:[main] from @4 + [15] phi() + [16] call sid_rnd_init to:main::@8 main::@8: scope:[main] from main asm { sei } - [17] call render_init + [18] call render_init to:main::@9 main::@9: scope:[main] from main::@8 - [18] phi() - [19] call sprites_init + [19] phi() + [20] call sprites_init to:main::@10 main::@10: scope:[main] from main::@9 - [20] phi() - [21] call sprites_irq_init + [21] phi() + [22] call sprites_irq_init to:main::@11 main::@11: scope:[main] from main::@10 - [22] phi() - [23] call play_init + [23] phi() + [24] call play_init to:main::@12 main::@12: scope:[main] from main::@11 - [24] phi() - [25] call play_spawn_current + [25] phi() + [26] call play_spawn_current to:main::@13 main::@13: scope:[main] from main::@12 - [26] phi() - [27] call play_spawn_current + [27] phi() + [28] call play_spawn_current to:main::@14 main::@14: scope:[main] from main::@13 - [28] phi() - [29] call render_playfield + [29] phi() + [30] call render_playfield to:main::@15 main::@15: scope:[main] from main::@14 - [30] (byte~) current_ypos#98 ← (byte) current_ypos#6 - [31] (byte~) current_xpos#119 ← (byte) current_xpos#100 - [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [33] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 - [34] call render_moving + [31] (byte~) current_ypos#98 ← (byte) current_ypos#6 + [32] (byte~) current_xpos#119 ← (byte) current_xpos#100 + [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 + [35] call render_moving to:main::@16 main::@16: scope:[main] from main::@15 - [35] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 - [36] call render_next + [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 + [37] call render_next to:main::@17 main::@17: scope:[main] from main::@16 - [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) to:main::@1 main::@1: scope:[main] from main::@17 main::@25 main::@6 - [39] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@17/(byte) 0 main::@25/(byte) level_bcd#17 ) - [39] (byte) level#10 ← phi( main::@6/(byte) level#17 main::@17/(byte) 0 main::@25/(byte) level#17 ) - [39] (dword) score_bcd#18 ← phi( main::@6/(dword) score_bcd#14 main::@17/(byte) 0 main::@25/(dword) score_bcd#14 ) - [39] (word) lines_bcd#19 ← phi( main::@6/(word) lines_bcd#15 main::@17/(byte) 0 main::@25/(word) lines_bcd#15 ) - [39] (byte) current_movedown_counter#16 ← phi( main::@6/(byte) current_movedown_counter#14 main::@17/(byte) 0 main::@25/(byte) current_movedown_counter#14 ) - [39] (byte) keyboard_events_size#19 ← phi( main::@6/(byte) keyboard_events_size#16 main::@17/(byte) 0 main::@25/(byte) keyboard_events_size#16 ) - [39] (byte) next_piece_idx#10 ← phi( main::@6/(byte) next_piece_idx#16 main::@17/(byte) play_spawn_current::piece_idx#2 main::@25/(byte) next_piece_idx#16 ) - [39] (byte) game_over#10 ← phi( main::@6/(byte) game_over#15 main::@17/(byte) game_over#52 main::@25/(byte) game_over#15 ) - [39] (byte) current_ypos#11 ← phi( main::@6/(byte) current_ypos#19 main::@17/(byte) current_ypos#6 main::@25/(byte) current_ypos#19 ) - [39] (byte) current_xpos#14 ← phi( main::@6/(byte) current_xpos#19 main::@17/(byte) current_xpos#100 main::@25/(byte) current_xpos#19 ) - [39] (byte*) current_piece_gfx#13 ← phi( main::@6/(byte*) current_piece_gfx#18 main::@17/(byte*~) current_piece_gfx#124 main::@25/(byte*) current_piece_gfx#18 ) - [39] (byte) current_orientation#13 ← phi( main::@6/(byte) current_orientation#17 main::@17/(byte) 0 main::@25/(byte) current_orientation#17 ) - [39] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@17/(byte) current_piece_char#5 main::@25/(byte) current_piece_char#16 ) - [39] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@17/(byte*~) current_piece#102 main::@25/(byte*) current_piece#15 ) - [39] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@17/(byte) current_movedown_slow#1 main::@25/(byte) current_movedown_slow#21 ) - [39] (byte) render_screen_render#18 ← phi( main::@17/(byte) $20 main::@25/(byte) render_screen_render#11 ) - [39] (byte) render_screen_show#16 ← phi( main::@17/(byte) 0 main::@25/(byte) render_screen_show#13 ) + [40] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@17/(byte) 0 main::@25/(byte) level_bcd#17 ) + [40] (byte) level#10 ← phi( main::@6/(byte) level#17 main::@17/(byte) 0 main::@25/(byte) level#17 ) + [40] (dword) score_bcd#18 ← phi( main::@6/(dword) score_bcd#14 main::@17/(dword) score_bcd#0 main::@25/(dword) score_bcd#14 ) + [40] (word) lines_bcd#19 ← phi( main::@6/(word) lines_bcd#15 main::@17/(byte) 0 main::@25/(word) lines_bcd#15 ) + [40] (byte) current_movedown_counter#16 ← phi( main::@6/(byte) current_movedown_counter#14 main::@17/(byte) 0 main::@25/(byte) current_movedown_counter#14 ) + [40] (byte) keyboard_events_size#19 ← phi( main::@6/(byte) keyboard_events_size#16 main::@17/(byte) 0 main::@25/(byte) keyboard_events_size#16 ) + [40] (byte) next_piece_idx#10 ← phi( main::@6/(byte) next_piece_idx#16 main::@17/(byte) play_spawn_current::piece_idx#2 main::@25/(byte) next_piece_idx#16 ) + [40] (byte) game_over#10 ← phi( main::@6/(byte) game_over#15 main::@17/(byte) game_over#52 main::@25/(byte) game_over#15 ) + [40] (byte) current_ypos#11 ← phi( main::@6/(byte) current_ypos#19 main::@17/(byte) current_ypos#6 main::@25/(byte) current_ypos#19 ) + [40] (byte) current_xpos#14 ← phi( main::@6/(byte) current_xpos#19 main::@17/(byte) current_xpos#100 main::@25/(byte) current_xpos#19 ) + [40] (byte*) current_piece_gfx#13 ← phi( main::@6/(byte*) current_piece_gfx#18 main::@17/(byte*~) current_piece_gfx#124 main::@25/(byte*) current_piece_gfx#18 ) + [40] (byte) current_orientation#13 ← phi( main::@6/(byte) current_orientation#17 main::@17/(byte) 0 main::@25/(byte) current_orientation#17 ) + [40] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@17/(byte) current_piece_char#5 main::@25/(byte) current_piece_char#16 ) + [40] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@17/(byte*~) current_piece#102 main::@25/(byte*) current_piece#15 ) + [40] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@17/(byte) current_movedown_slow#1 main::@25/(byte) current_movedown_slow#21 ) + [40] (byte) render_screen_render#18 ← phi( main::@17/(byte) $20 main::@25/(byte) render_screen_render#11 ) + [40] (byte) render_screen_show#16 ← phi( main::@17/(byte) 0 main::@25/(byte) render_screen_show#13 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 + [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 - [41] phi() - [42] call render_show + [42] phi() + [43] call render_show to:main::@18 main::@18: scope:[main] from main::@3 - [43] phi() - [44] call keyboard_event_scan + [44] phi() + [45] call keyboard_event_scan to:main::@19 main::@19: scope:[main] from main::@18 - [45] phi() - [46] call keyboard_event_get - [47] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + [46] phi() + [47] call keyboard_event_get + [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@20 main::@20: scope:[main] from main::@19 - [48] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [49] if((byte) game_over#10==(byte) 0) goto main::@4 + [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [50] if((byte) game_over#10==(byte) 0) goto main::@4 to:main::@5 main::@5: scope:[main] from main::@20 main::@5 - [50] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) to:main::@5 main::@4: scope:[main] from main::@20 - [51] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 - [52] call play_movement - [53] (byte) play_movement::return#3 ← (byte) play_movement::return#2 + [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 + [53] call play_movement + [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2 to:main::@21 main::@21: scope:[main] from main::@4 - [54] (byte) main::render#1 ← (byte) play_movement::return#3 + [55] (byte) main::render#1 ← (byte) play_movement::return#3 to:main::@6 main::@6: scope:[main] from main::@21 - [55] if((byte) main::render#1==(byte) 0) goto main::@1 + [56] if((byte) main::render#1==(byte) 0) goto main::@1 to:main::@7 main::@7: scope:[main] from main::@6 - [56] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 - [57] call render_playfield + [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 + [58] call render_playfield to:main::@22 main::@22: scope:[main] from main::@7 - [58] (byte~) current_ypos#99 ← (byte) current_ypos#19 - [59] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 - [60] (byte~) current_xpos#120 ← (byte) current_xpos#19 - [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 - [62] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 - [63] call render_moving + [59] (byte~) current_ypos#99 ← (byte) current_ypos#19 + [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 + [61] (byte~) current_xpos#120 ← (byte) current_xpos#19 + [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 + [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 + [64] call render_moving to:main::@23 main::@23: scope:[main] from main::@22 - [64] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 - [65] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 - [66] call render_next + [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 + [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 + [67] call render_next to:main::@24 main::@24: scope:[main] from main::@23 - [67] phi() - [68] call render_score + [68] phi() + [69] call render_score to:main::@25 main::@25: scope:[main] from main::@24 - [69] phi() - [70] call render_screen_swap + [70] phi() + [71] call render_screen_swap to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@25 - [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 - [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 + [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 + [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [73] return + [74] return to:@return render_score: scope:[render_score] from main::@24 - [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 + [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 to:render_score::@2 render_score::@1: scope:[render_score] from render_score - [75] phi() + [76] phi() to:render_score::@2 render_score::@2: scope:[render_score] from render_score render_score::@1 - [76] (byte*) render_score::screen#3 ← phi( render_score::@1/(const byte*) PLAYFIELD_SCREEN_1#0 render_score/(const byte*) PLAYFIELD_SCREEN_2#0 ) - [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 - [78] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) - [79] call render_bcd + [77] (byte*) render_score::screen#3 ← phi( render_score::@1/(const byte*) PLAYFIELD_SCREEN_1#0 render_score/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 + [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) + [80] call render_bcd to:render_score::@3 render_score::@3: scope:[render_score] from render_score::@2 - [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 - [81] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) - [82] call render_bcd + [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 + [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) + [83] call render_bcd to:render_score::@4 render_score::@4: scope:[render_score] from render_score::@3 - [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 - [84] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) - [85] call render_bcd + [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 + [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) + [86] call render_bcd to:render_score::@5 render_score::@5: scope:[render_score] from render_score::@4 - [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 - [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 - [88] call render_bcd + [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 + [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 + [89] call render_bcd to:render_score::@6 render_score::@6: scope:[render_score] from render_score::@5 - [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 - [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 - [91] call render_bcd + [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 + [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 + [92] call render_bcd to:render_score::@7 render_score::@7: scope:[render_score] from render_score::@6 - [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 - [93] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 - [94] call render_bcd + [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 + [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 + [95] call render_bcd to:render_score::@return render_score::@return: scope:[render_score] from render_score::@7 - [95] return + [96] return to:@return render_bcd: scope:[render_bcd] from render_score::@2 render_score::@3 render_score::@4 render_score::@5 render_score::@6 render_score::@7 - [96] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@3/(byte) render_bcd::bcd#1 render_score::@4/(byte) render_bcd::bcd#2 render_score::@5/(byte) render_bcd::bcd#3 render_score::@6/(byte) render_bcd::bcd#4 render_score::@7/(byte) render_bcd::bcd#5 ) - [96] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) 0 render_score::@3/(byte) 0 render_score::@4/(byte) 0 render_score::@5/(byte) 1 render_score::@6/(byte) 0 render_score::@7/(byte) 0 ) - [96] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@3/(const word) render_score::score_offset#0+(byte) 2 render_score::@4/(const word) render_score::score_offset#0+(byte) 4 render_score::@5/(const word) render_score::lines_offset#0 render_score::@6/(const word) render_score::lines_offset#0+(byte) 1 render_score::@7/(const word) render_score::level_offset#0 ) - [96] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@3/(byte*) render_bcd::screen#1 render_score::@4/(byte*) render_bcd::screen#2 render_score::@5/(byte*) render_bcd::screen#3 render_score::@6/(byte*) render_bcd::screen#4 render_score::@7/(byte*) render_bcd::screen#5 ) - [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 - [98] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 + [97] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@3/(byte) render_bcd::bcd#1 render_score::@4/(byte) render_bcd::bcd#2 render_score::@5/(byte) render_bcd::bcd#3 render_score::@6/(byte) render_bcd::bcd#4 render_score::@7/(byte) render_bcd::bcd#5 ) + [97] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) 0 render_score::@3/(byte) 0 render_score::@4/(byte) 0 render_score::@5/(byte) 1 render_score::@6/(byte) 0 render_score::@7/(byte) 0 ) + [97] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@3/(const word) render_score::score_offset#0+(byte) 2 render_score::@4/(const word) render_score::score_offset#0+(byte) 4 render_score::@5/(const word) render_score::lines_offset#0 render_score::@6/(const word) render_score::lines_offset#0+(byte) 1 render_score::@7/(const word) render_score::level_offset#0 ) + [97] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@3/(byte*) render_bcd::screen#1 render_score::@4/(byte*) render_bcd::screen#2 render_score::@5/(byte*) render_bcd::screen#3 render_score::@6/(byte*) render_bcd::screen#4 render_score::@7/(byte*) render_bcd::screen#5 ) + [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 + [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 to:render_bcd::@2 render_bcd::@2: scope:[render_bcd] from render_bcd - [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 - [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 - [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 - [102] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 + [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 + [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 + [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 + [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 to:render_bcd::@1 render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2 - [103] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) - [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f - [105] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 - [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 + [104] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) + [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f + [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 + [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 to:render_bcd::@return render_bcd::@return: scope:[render_bcd] from render_bcd::@1 - [107] return + [108] return to:@return render_next: scope:[render_next] from main::@16 main::@23 - [108] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#77 main::@23/(byte~) next_piece_idx#78 ) - [108] (byte) render_screen_render#15 ← phi( main::@16/(byte) $20 main::@23/(byte~) render_screen_render#66 ) - [109] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 + [109] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#77 main::@23/(byte~) next_piece_idx#78 ) + [109] (byte) render_screen_render#15 ← phi( main::@16/(byte) $20 main::@23/(byte~) render_screen_render#66 ) + [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 to:render_next::@2 render_next::@1: scope:[render_next] from render_next - [110] phi() + [111] phi() to:render_next::@2 render_next::@2: scope:[render_next] from render_next render_next::@1 - [111] (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) - [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 - [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) - [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) + [112] (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) + [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 + [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) + [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) to:render_next::@3 render_next::@3: scope:[render_next] from render_next::@2 render_next::@8 - [115] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@2/(byte) 0 ) - [115] (byte*) render_next::screen_next_area#10 ← phi( render_next::@8/(byte*) render_next::screen_next_area#4 render_next::@2/(byte*) render_next::screen_next_area#11 ) - [115] (byte*) render_next::next_piece_gfx#3 ← phi( render_next::@8/(byte*) render_next::next_piece_gfx#1 render_next::@2/(byte*~) render_next::next_piece_gfx#9 ) + [116] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@2/(byte) 0 ) + [116] (byte*) render_next::screen_next_area#10 ← phi( render_next::@8/(byte*) render_next::screen_next_area#4 render_next::@2/(byte*) render_next::screen_next_area#11 ) + [116] (byte*) render_next::next_piece_gfx#3 ← phi( render_next::@8/(byte*) render_next::next_piece_gfx#1 render_next::@2/(byte*~) render_next::next_piece_gfx#9 ) to:render_next::@4 render_next::@4: scope:[render_next] from render_next::@3 render_next::@6 - [116] (byte) render_next::c#2 ← phi( render_next::@3/(byte) 0 render_next::@6/(byte) render_next::c#1 ) - [116] (byte*) render_next::screen_next_area#5 ← phi( render_next::@3/(byte*) render_next::screen_next_area#10 render_next::@6/(byte*) render_next::screen_next_area#3 ) - [116] (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@3/(byte*) render_next::next_piece_gfx#3 render_next::@6/(byte*) render_next::next_piece_gfx#1 ) - [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) - [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 - [119] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 + [117] (byte) render_next::c#2 ← phi( render_next::@3/(byte) 0 render_next::@6/(byte) render_next::c#1 ) + [117] (byte*) render_next::screen_next_area#5 ← phi( render_next::@3/(byte*) render_next::screen_next_area#10 render_next::@6/(byte*) render_next::screen_next_area#3 ) + [117] (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@3/(byte*) render_next::next_piece_gfx#3 render_next::@6/(byte*) render_next::next_piece_gfx#1 ) + [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) + [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 + [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 to:render_next::@7 render_next::@7: scope:[render_next] from render_next::@4 - [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 + [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 to:render_next::@6 render_next::@6: scope:[render_next] from render_next::@5 render_next::@7 - [121] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 - [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 - [123] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 + [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 + [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 + [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 to:render_next::@8 render_next::@8: scope:[render_next] from render_next::@6 - [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 - [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 - [126] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 + [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 + [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 + [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 to:render_next::@return render_next::@return: scope:[render_next] from render_next::@8 - [127] return + [128] return to:@return render_next::@5: scope:[render_next] from render_next::@4 - [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 + [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 to:render_next::@6 render_moving: scope:[render_moving] from main::@15 main::@22 - [129] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#100 main::@22/(byte~) current_piece_char#101 ) - [129] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#112 main::@22/(byte*~) current_piece_gfx#113 ) - [129] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#119 main::@22/(byte~) current_xpos#120 ) - [129] (byte) render_screen_render#33 ← phi( main::@15/(byte) $20 main::@22/(byte~) render_screen_render#65 ) - [129] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#98 main::@22/(byte~) current_ypos#99 ) - [130] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 + [130] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#100 main::@22/(byte~) current_piece_char#101 ) + [130] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#112 main::@22/(byte*~) current_piece_gfx#113 ) + [130] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#119 main::@22/(byte~) current_xpos#120 ) + [130] (byte) render_screen_render#33 ← phi( main::@15/(byte) $20 main::@22/(byte~) render_screen_render#65 ) + [130] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#98 main::@22/(byte~) current_ypos#99 ) + [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 - [131] (byte) render_moving::l#4 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::l#1 ) - [131] (byte) render_moving::i#3 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::i#8 ) - [131] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) - [132] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 + [132] (byte) render_moving::l#4 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::l#1 ) + [132] (byte) render_moving::i#3 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::i#8 ) + [132] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) + [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 - [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 + [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 - [134] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) - [135] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 - [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 - [137] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 + [135] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) + [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 + [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 + [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 to:render_moving::@return render_moving::@return: scope:[render_moving] from render_moving::@3 - [138] return + [139] return to:@return render_moving::@2: scope:[render_moving] from render_moving::@1 - [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 - [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 - [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) - [142] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 + [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 + [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 + [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) + [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [143] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte) 0 render_moving::@5/(byte) render_moving::c#1 ) - [143] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [143] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) - [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) - [145] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 - [146] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 + [144] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte) 0 render_moving::@5/(byte) render_moving::c#1 ) + [144] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [144] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) + [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) + [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 + [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 to:render_moving::@6 render_moving::@6: scope:[render_moving] from render_moving::@4 - [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 + [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6 - [148] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [149] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [150] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 + [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 to:render_moving::@3 render_playfield: scope:[render_playfield] from main::@14 main::@7 - [151] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#64 main::@14/(byte) $20 ) + [152] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#64 main::@14/(byte) $20 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [152] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [152] (byte) render_playfield::l#2 ← phi( render_playfield/(byte) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 - [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 - [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) + [153] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [153] (byte) render_playfield::l#2 ← phi( render_playfield/(byte) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 + [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 + [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [156] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [156] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [156] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [158] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [159] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [160] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [161] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 + [157] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [157] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [157] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [162] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [163] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 + [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [164] return + [165] return to:@return play_movement: scope:[play_movement] from main::@4 - [165] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 - [166] call play_move_down - [167] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [167] call play_move_down + [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:play_movement::@2 play_movement::@2: scope:[play_movement] from play_movement - [168] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 - [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 + [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 + [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 to:play_movement::@return play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@4 - [170] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) - [170] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) - [170] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) - [170] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) - [171] return + [171] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) + [171] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) + [171] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) + [171] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) + [172] return to:@return play_movement::@1: scope:[play_movement] from play_movement::@2 - [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 - [173] call play_move_leftright - [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [174] call play_move_leftright + [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:play_movement::@3 play_movement::@3: scope:[play_movement] from play_movement::@1 - [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 - [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 - [178] call play_move_rotate - [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [179] call play_move_rotate + [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:play_movement::@4 play_movement::@4: scope:[play_movement] from play_movement::@3 - [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 to:play_movement::@return play_move_rotate: scope:[play_move_rotate] from play_movement::@3 - [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate - [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@4 play_move_rotate::@5 play_move_rotate::@6 - [184] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) - [184] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) - [184] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte) 1 play_move_rotate::@6/(byte) 0 play_move_rotate::@4/(byte) 0 ) - [185] return + [185] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) + [185] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) + [185] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte) 1 play_move_rotate::@6/(byte) 0 play_move_rotate::@4/(byte) 0 ) + [186] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@4 - [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 - [187] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f + [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 + [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f to:play_move_rotate::@3 play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [188] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 - [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 - [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 - [193] call play_collision - [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + [189] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 + [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 + [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 + [194] call play_collision + [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@3 - [195] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - [196] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@5 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@6 - [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 - [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 + [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 - [200] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f + [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 + [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f to:play_move_rotate::@3 play_collision: scope:[play_collision] from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current - [201] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) - [201] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) - [201] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte) 0 ) - [201] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#96 play_move_leftright::@1/(byte*~) current_piece#97 play_move_leftright::@3/(byte*~) current_piece#98 play_move_rotate::@3/(byte*~) current_piece#99 play_spawn_current/(byte*~) current_piece#100 ) - [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 + [202] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) + [202] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) + [202] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte) 0 ) + [202] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#96 play_move_leftright::@1/(byte*~) current_piece#97 play_move_leftright::@3/(byte*~) current_piece#98 play_move_rotate::@3/(byte*~) current_piece#99 play_spawn_current/(byte*~) current_piece#100 ) + [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@9 - [203] (byte) play_collision::l#6 ← phi( play_collision/(byte) 0 play_collision::@9/(byte) play_collision::l#1 ) - [203] (byte) play_collision::i#3 ← phi( play_collision/(byte) 0 play_collision::@9/(byte~) play_collision::i#10 ) - [203] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) - [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 - [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) - [206] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 + [204] (byte) play_collision::l#6 ← phi( play_collision/(byte) 0 play_collision::@9/(byte) play_collision::l#1 ) + [204] (byte) play_collision::i#3 ← phi( play_collision/(byte) 0 play_collision::@9/(byte~) play_collision::i#10 ) + [204] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) + [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 + [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) + [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@10 - [207] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte) 0 play_collision::@10/(byte) play_collision::c#1 ) - [207] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#8 play_collision::@10/(byte) play_collision::xp#1 ) - [207] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#12 ) - [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 + [208] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte) 0 play_collision::@10/(byte) play_collision::c#1 ) + [208] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#8 play_collision::@10/(byte) play_collision::xp#1 ) + [208] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#12 ) + [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 to:play_collision::@7 play_collision::@7: scope:[play_collision] from play_collision::@2 - [210] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@4: scope:[play_collision] from play_collision::@7 - [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 - [212] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 + [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 + [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [213] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 + [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8 - [215] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) - [216] return + [216] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) + [217] return to:@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [217] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 - [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [219] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 + [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 + [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@3 - [220] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 - [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [222] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 + [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 + [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 to:play_collision::@return play_collision::@9: scope:[play_collision] from play_collision::@8 - [223] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 + [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@10: scope:[play_collision] from play_collision::@3 - [224] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 + [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from play_movement::@1 - [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@2 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright - [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@3 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@2 - [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 - [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 - [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 - [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 - [231] call play_collision - [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 + [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 + [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 + [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 + [232] call play_collision + [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@3 - [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@4 play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@7 - [235] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 + [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7 - [236] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) - [236] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte) 0 play_move_leftright::@4/(byte) 1 play_move_leftright::@5/(byte) 1 play_move_leftright::@7/(byte) 0 play_move_leftright::@2/(byte) 0 ) - [237] return + [237] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) + [237] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte) 0 play_move_leftright::@4/(byte) 1 play_move_leftright::@5/(byte) 1 play_move_leftright::@7/(byte) 0 play_move_leftright::@2/(byte) 0 ) + [238] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 - [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 - [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 - [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 - [242] call play_collision - [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 + [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 + [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 + [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 + [243] call play_collision + [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@1 - [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@5 play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@6 - [246] (byte) current_xpos#8 ← -- (byte) current_xpos#22 + [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from play_movement - [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 - [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down - [249] phi() + [250] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@4 - [250] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte) 0 play_move_down::@4/(byte) 1 ) - [251] call keyboard_event_pressed - [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [251] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte) 0 play_move_down::@4/(byte) 1 ) + [252] call keyboard_event_pressed + [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@1 - [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [254] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 + [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 to:play_move_down::@5 play_move_down::@5: scope:[play_move_down] from play_move_down::@12 - [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@6 play_move_down::@6: scope:[play_move_down] from play_move_down::@5 - [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@12 play_move_down::@5 play_move_down::@6 - [257] (byte) play_move_down::movedown#7 ← phi( play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) - [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 + [258] (byte) play_move_down::movedown#7 ← phi( play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) + [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@2 - [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@3 play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@7 - [260] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) - [261] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return + [261] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) + [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down::@3 - [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 - [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 - [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 - [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 - [266] call play_collision - [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 + [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 + [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 + [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 + [267] call play_collision + [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@8 - [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 + [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@13 - [270] phi() - [271] call play_lock_current + [271] phi() + [272] call play_lock_current to:play_move_down::@14 play_move_down::@14: scope:[play_move_down] from play_move_down::@9 - [272] phi() - [273] call play_remove_lines - [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 + [273] phi() + [274] call play_remove_lines + [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 to:play_move_down::@15 play_move_down::@15: scope:[play_move_down] from play_move_down::@14 - [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [277] call play_update_score + [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [278] call play_update_score to:play_move_down::@16 play_move_down::@16: scope:[play_move_down] from play_move_down::@15 - [278] phi() - [279] call play_spawn_current + [279] phi() + [280] call play_spawn_current to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@16 - [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 - [282] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@17/(byte) play_spawn_current::piece_idx#2 ) - [282] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@17/(byte) game_over#52 ) - [282] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#14 play_move_down::@17/(byte) current_xpos#100 ) - [282] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#13 play_move_down::@17/(byte*~) current_piece_gfx#117 ) - [282] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@17/(byte) 0 ) - [282] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@17/(byte) current_piece_char#5 ) - [282] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@17/(byte*~) current_piece#93 ) - [282] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@17/(byte) level_bcd#19 ) - [282] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@17/(byte) current_movedown_slow#23 ) - [282] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@17/(byte) level#19 ) - [282] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@17/(dword) score_bcd#16 ) - [282] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@17/(word) lines_bcd#17 ) - [282] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@17/(byte) current_ypos#6 ) + [283] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@17/(byte) play_spawn_current::piece_idx#2 ) + [283] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@17/(byte) game_over#52 ) + [283] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#14 play_move_down::@17/(byte) current_xpos#100 ) + [283] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#13 play_move_down::@17/(byte*~) current_piece_gfx#117 ) + [283] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@17/(byte) 0 ) + [283] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@17/(byte) current_piece_char#5 ) + [283] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@17/(byte*~) current_piece#93 ) + [283] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@17/(byte) level_bcd#19 ) + [283] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@17/(byte) current_movedown_slow#23 ) + [283] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@17/(byte) level#19 ) + [283] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@17/(dword) score_bcd#16 ) + [283] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@17/(word) lines_bcd#17 ) + [283] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@17/(byte) current_ypos#6 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@11 play_move_down::@3 - [283] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) - [283] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) - [283] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#14 ) - [283] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#13 ) - [283] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) - [283] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) - [283] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) - [283] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) - [283] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) - [283] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) - [283] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) - [283] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) - [283] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#11 ) - [283] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) - [283] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte) 1 play_move_down::@3/(byte) 0 ) - [284] return + [284] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) + [284] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) + [284] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#14 ) + [284] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#13 ) + [284] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) + [284] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) + [284] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) + [284] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) + [284] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) + [284] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) + [284] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) + [284] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) + [284] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#11 ) + [284] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) + [284] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte) 1 play_move_down::@3/(byte) 0 ) + [285] return to:@return play_move_down::@10: scope:[play_move_down] from play_move_down::@13 - [285] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 + [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 to:play_move_down::@11 play_spawn_current: scope:[play_spawn_current] from main::@12 main::@13 play_move_down::@16 - [286] (byte) game_over#65 ← phi( main::@12/(byte) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) - [286] (byte) next_piece_idx#17 ← phi( main::@12/(byte) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) - [287] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 - [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 - [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) - [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) - [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) - [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 - [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 - [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [295] call play_collision - [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + [287] (byte) game_over#65 ← phi( main::@12/(byte) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) + [287] (byte) next_piece_idx#17 ← phi( main::@12/(byte) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) + [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 + [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 + [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) + [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) + [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) + [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 + [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 + [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [296] call play_collision + [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15 to:play_spawn_current::@4 play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current - [297] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 - [298] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 + [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 to:play_spawn_current::@1 play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@4 - [299] phi() + [300] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@5 - [300] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte) 1 ) + [301] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte) 1 ) to:play_spawn_current::@2 play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@3 - [301] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) - [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 + [302] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) + [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@2 - [303] return + [304] return to:@return play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@2 - [304] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::sid_rnd1 - [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 + [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 to:play_spawn_current::@2 play_update_score: scope:[play_update_score] from play_move_down::@15 - [306] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return + [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return to:play_update_score::@1 play_update_score::@1: scope:[play_update_score] from play_update_score - [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 - [308] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 - [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 - [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) + [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 + [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 + [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) asm { sed } - [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 - [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 + [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 - [316] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 - [317] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 + [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 + [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@2 play_update_score::@2: scope:[play_update_score] from play_update_score::@1 - [318] phi() - [319] call play_increase_level + [319] phi() + [320] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@2 - [320] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#62 ) - [320] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#66 ) - [320] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) - [320] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#29 ) - [320] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#29 ) - [321] return + [321] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#62 ) + [321] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#66 ) + [321] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) + [321] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#29 ) + [321] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#29 ) + [322] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@2 - [322] (byte) level#21 ← ++ (byte) level#10 - [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 + [323] (byte) level#21 ← ++ (byte) level#10 + [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level - [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) + [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) to:play_increase_level::@1 play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@3 - [325] (byte) current_movedown_slow#66 ← phi( play_increase_level/(byte) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) - [326] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 - [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f - [328] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 + [326] (byte) current_movedown_slow#66 ← phi( play_increase_level/(byte) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) + [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f + [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@1 - [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 + [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4 - [330] (byte) level_bcd#62 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) + [331] (byte) level_bcd#62 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5 - [332] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) - [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 - [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) - [335] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [336] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 + [333] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) + [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 + [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) + [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 to:play_increase_level::@6 play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@5 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@6 - [338] return + [339] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@14 - [339] phi() + [340] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@6 - [340] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) - [340] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) - [340] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [340] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) + [341] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) + [341] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) + [341] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [341] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [341] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [341] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [341] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [341] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [342] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [343] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [344] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 + [342] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [342] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [342] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [342] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 to:play_remove_lines::@3 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@2 - [345] phi() + [346] phi() to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@9 - [346] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte) 0 ) - [347] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [348] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [349] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [350] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 + [347] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte) 0 ) + [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@3 - [351] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 + [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 - [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [353] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@6 play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@5 - [354] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) - [354] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) - [355] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [356] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 + [355] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) + [355] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) + [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 to:play_remove_lines::@7 play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@6 play_remove_lines::@8 - [357] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [358] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 + [358] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@7 - [359] return + [360] return to:@return play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7 - [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 - [361] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 + [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@7 play_lock_current: scope:[play_lock_current] from play_move_down::@9 - [362] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 + [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@6 - [363] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) - [363] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) - [363] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) - [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 - [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) - [366] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 + [364] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) + [364] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) + [364] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) + [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 + [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) + [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@7 - [367] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) - [367] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) - [367] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) - [368] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 + [368] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) + [368] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) + [368] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) + [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 + [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [371] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 - [372] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [373] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 + [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 + [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [374] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 - [375] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [376] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 + [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 + [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [377] return + [378] return to:@return play_lock_current::@6: scope:[play_lock_current] from play_lock_current::@5 - [378] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@3 - [379] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1 - [380] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 - [382] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 - [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [381] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 + [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 + [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [385] return + [386] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@19 - [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return + [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return to:keyboard_event_get::@1 keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get - [387] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@1 - [389] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) - [389] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) - [390] return + [390] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) + [390] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) + [391] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@18 - [391] phi() + [392] phi() to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [392] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) - [392] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) - [392] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) - [393] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [394] call keyboard_matrix_read - [395] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [393] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) + [393] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) + [393] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) + [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [395] call keyboard_matrix_read + [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@7 - [396] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 + [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@19 - [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 + [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 to:keyboard_event_scan::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [399] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) - [399] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) - [400] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 + [400] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) + [400] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) + [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@8 - [402] phi() - [403] call keyboard_event_pressed - [404] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [403] phi() + [404] call keyboard_event_pressed + [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@17 - [405] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - [406] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 + [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 to:keyboard_event_scan::@18 keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [407] phi() + [408] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@20 - [408] phi() - [409] call keyboard_event_pressed - [410] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [409] phi() + [410] call keyboard_event_pressed + [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [411] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - [412] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 + [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 to:keyboard_event_scan::@4 keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@21 - [413] phi() + [414] phi() to:keyboard_event_scan::@2 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@4 - [414] phi() - [415] call keyboard_event_pressed - [416] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [415] phi() + [416] call keyboard_event_pressed + [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@2 - [417] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - [418] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 + [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@22 - [419] phi() + [420] phi() to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@5 - [420] phi() - [421] call keyboard_event_pressed - [422] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [421] phi() + [422] call keyboard_event_pressed + [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [423] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - [424] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return + [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@6 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@23 - [425] phi() + [426] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@6 - [426] return + [427] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [427] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [427] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) - [427] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) - [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [430] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 + [428] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [428] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) + [428] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) + [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@12 keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 + [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@12 - [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [433] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 + [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@14 keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [435] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [436] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) - [437] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 - [438] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [439] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 + [437] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 + [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@8 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 - [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 - [443] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 + [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 + [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7 - [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [446] return + [447] return to:@return render_show: scope:[render_show] from main::@3 - [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 + [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [448] phi() + [449] phi() to:render_show::@1 render_show::@1: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [449] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [450] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) - [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) - [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [450] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) + [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) + [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@1 - [454] return + [455] return to:@return render_show::toD0181: scope:[render_show] from render_show - [455] phi() + [456] phi() to:render_show::@1 play_init: scope:[play_init] from main::@11 - [456] phi() + [457] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [457] (byte) play_init::idx#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::idx#1 ) - [457] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [457] (byte) play_init::j#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::j#1 ) - [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 - [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 - [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [463] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [464] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 + [458] (byte) play_init::idx#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::idx#1 ) + [458] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [458] (byte) play_init::j#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::j#1 ) + [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 + [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 + [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@1 - [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 - [467] (byte) play_init::b#2 ← phi( play_init::@2/(byte) 0 play_init::@3/(byte) play_init::b#1 ) - [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 - [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) - [470] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [471] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 + [468] (byte) play_init::b#2 ← phi( play_init::@2/(byte) 0 play_init::@3/(byte) play_init::b#1 ) + [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 + [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) + [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@3 - [472] return + [473] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@10 asm { sei } - [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f - [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [484] return + [485] return to:@return sprites_init: scope:[sprites_init] from main::@9 - [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f - [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f + [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [489] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [489] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 - [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 - [494] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [495] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 + [490] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [490] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 + [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 + [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [496] return + [497] return to:@return render_init: scope:[render_init] from main::@8 - [497] phi() + [498] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [499] phi() + [500] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 - [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) - [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) - [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [507] call render_screen_original + [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) + [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) + [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [508] call render_screen_original to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 - [508] phi() - [509] call render_screen_original + [509] phi() + [510] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@3 - [510] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 ) - [510] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 ) - [510] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte) 0 ) - [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 - [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 - [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 - [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 - [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 - [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 + [511] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 ) + [511] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 ) + [511] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte) 0 ) + [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 + [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 + [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 + [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 + [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 + [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [518] return + [519] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@2 render_init::@3 - [519] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [520] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5 - [520] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) - [520] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) - [520] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) - [520] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) - [520] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) + [521] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) + [521] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) + [521] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) + [521] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) + [521] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [521] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [521] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [521] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [527] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 + [522] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [522] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [522] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [528] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [528] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [528] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [528] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [528] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [536] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 + [529] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [529] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [529] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [529] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [529] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [537] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [537] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [537] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [543] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 + [538] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [538] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [538] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 to:render_screen_original::@5 render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4 - [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [545] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 + [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5 - [546] return + [547] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff - [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff + [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [549] return + [550] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [553] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 - [554] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 - [555] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 - [556] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 - [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 + [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 + [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 + [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 + [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 + [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 + [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 - [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 - [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 + [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 + [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 + [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 + [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 + [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 - [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 + [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [573] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [574] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [576] return + [577] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [577] (byte) irq_cnt#2 ← (byte) 0 - [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [578] (byte) irq_cnt#2 ← (byte) 0 + [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 - [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 + [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [583] phi() + [584] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 - [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 - [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 + [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 + [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 + [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index d92ae1d1a..427e0e578 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -7,6 +7,7 @@ Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE +Setting inferred volatile on symbol affected by address-of (dword*~) render_score::$1 ← & (dword) score_bcd Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte) render_init::i) Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_2 + (byte) render_init::i) Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte~) render_playfield::$2) @@ -9976,7 +9977,6 @@ Constant (const byte) current_xpos#0 = 0 Constant (const byte) current_ypos#0 = 0 Constant (const byte) render_screen_render#0 = $20 Constant (const byte) render_screen_show#0 = 0 -Constant (const dword) score_bcd#0 = 0 Constant (const word) lines_bcd#0 = 0 Constant (const byte) level_bcd#0 = 0 Constant (const byte) level#0 = 0 @@ -10187,7 +10187,7 @@ Simplifying expression containing zero MOVEDOWN_SLOW_SPEEDS#0 in [762] (byte) cu Simplifying expression containing zero play_movement::$0 in [794] (byte) play_movement::render#1 ← (const byte) play_movement::render#0 + (byte~) play_movement::$0 Simplifying expression containing zero current_piece#5 in [1101] (byte*) current_piece_gfx#74 ← (byte*) current_piece#5 + (const byte) current_orientation#69 Successful SSA optimization PassNSimplifyExpressionWithZero -Eliminating unused variable (byte*) render_bcd::screen_pos#1 and assignment [185] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 +Eliminating unused variable (byte*) render_bcd::screen_pos#1 and assignment [186] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 Eliminating unused variable - keeping the phi block (byte) irq_cnt#3 Eliminating unused variable - keeping the phi block (byte) irq_sprite_ypos#11 Eliminating unused variable - keeping the phi block (byte) irq_sprite_ptr#11 @@ -10349,34 +10349,34 @@ Successful SSA optimization Pass2IdenticalPhiElimination Constant right-side identified [65] (byte*) PLAYFIELD_SPRITE_PTRS_1#0 ← (const byte*) PLAYFIELD_SCREEN_1#0 + (const word) SPRITE_PTRS#0 Constant right-side identified [66] (byte*) PLAYFIELD_SPRITE_PTRS_2#0 ← (const byte*) PLAYFIELD_SCREEN_2#0 + (const word) SPRITE_PTRS#0 Constant right-side identified [67] (byte~) $3 ← (const byte) PLAYFIELD_LINES#0 * (const byte) PLAYFIELD_COLS#0 -Constant right-side identified [73] (byte[]) PIECES_COLORS_1#0 ← { (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0 } -Constant right-side identified [74] (byte[]) PIECES_COLORS_2#0 ← { (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0, (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0, (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0 } -Constant right-side identified [83] (byte~) render_init::$1 ← (const byte) VIC_ECM#0 | (const byte) VIC_DEN#0 -Constant right-side identified [100] (byte~) render_init::$12 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 -Constant right-side identified [143] (number~) render_score::$4 ← (const number) render_score::$3 + (number) $1c -Constant right-side identified [157] (number~) render_score::$11 ← (const number) render_score::$10 + (number) $16 -Constant right-side identified [167] (number~) render_score::$18 ← (const number) render_score::$17 + (number) $1f -Constant right-side identified [219] (byte) render_playfield::i#0 ← (const byte) PLAYFIELD_COLS#0 * (byte) 2 -Constant right-side identified [220] (byte~) render_playfield::$1 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 -Constant right-side identified [225] (byte~) render_playfield::$3 ← (const byte) PLAYFIELD_COLS#0 - (byte) 1 -Constant right-side identified [258] (number~) render_next::$1 ← (const number) render_next::$0 + (number) $18 -Constant right-side identified [287] (number~) sprites_init::$1 ← (number) $18 + (const number) sprites_init::$0 -Constant right-side identified [297] (byte~) $4 ← (const byte) SPRITES_FIRST_YPOS#0 + (byte) $13 -Constant right-side identified [300] (byte~) $5 ← (const byte) SPRITES_FIRST_YPOS#0 + (byte) $15 -Constant right-side identified [366] (number~) $9 ← (const number) $8 * (number) 4 -Constant right-side identified [367] (number~) $11 ← (const number) $10 * (number) 4 -Constant right-side identified [368] (number~) $13 ← (const number) $12 * (number) 4 -Constant right-side identified [369] (number~) $15 ← (const number) $14 * (number) 4 -Constant right-side identified [370] (number~) $17 ← (const number) $16 * (number) 4 -Constant right-side identified [371] (number~) $19 ← (const number) $18 * (number) 4 -Constant right-side identified [372] (number~) $21 ← (const number) $20 * (number) 4 -Constant right-side identified [382] (byte~) $29 ← (const byte) PLAYFIELD_LINES#0 + (byte) 1 -Constant right-side identified [385] (byte~) play_init::$1 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 -Constant right-side identified [394] (byte~) play_init::$0 ← (const byte) PLAYFIELD_COLS#0 * (const byte) PLAYFIELD_LINES#0 -Constant right-side identified [428] (byte) play_move_down::movedown#1 ← ++ (const byte) play_move_down::movedown#0 -Constant right-side identified [550] (byte~) play_remove_lines::$2 ← (const byte) PLAYFIELD_LINES#0 * (const byte) PLAYFIELD_COLS#0 -Constant right-side identified [554] (byte~) play_remove_lines::$4 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 -Constant right-side identified [556] (byte~) play_remove_lines::$5 ← (const byte) PLAYFIELD_COLS#0 - (byte) 1 +Constant right-side identified [74] (byte[]) PIECES_COLORS_1#0 ← { (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) GREEN#0, (const byte) PURPLE#0, (const byte) BLUE#0, (const byte) RED#0, (const byte) LIGHT_GREEN#0, (const byte) RED#0, (const byte) BLUE#0, (const byte) LIGHT_BLUE#0, (const byte) RED#0 } +Constant right-side identified [75] (byte[]) PIECES_COLORS_2#0 ← { (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0, (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0, (const byte) CYAN#0, (const byte) LIGHT_GREEN#0, (const byte) PINK#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_GREEN#0, (const byte) LIGHT_BLUE#0, (const byte) DARK_GREY#0, (const byte) PURPLE#0, (const byte) RED#0, (const byte) ORANGE#0 } +Constant right-side identified [84] (byte~) render_init::$1 ← (const byte) VIC_ECM#0 | (const byte) VIC_DEN#0 +Constant right-side identified [101] (byte~) render_init::$12 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 +Constant right-side identified [144] (number~) render_score::$4 ← (const number) render_score::$3 + (number) $1c +Constant right-side identified [158] (number~) render_score::$11 ← (const number) render_score::$10 + (number) $16 +Constant right-side identified [168] (number~) render_score::$18 ← (const number) render_score::$17 + (number) $1f +Constant right-side identified [220] (byte) render_playfield::i#0 ← (const byte) PLAYFIELD_COLS#0 * (byte) 2 +Constant right-side identified [221] (byte~) render_playfield::$1 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 +Constant right-side identified [226] (byte~) render_playfield::$3 ← (const byte) PLAYFIELD_COLS#0 - (byte) 1 +Constant right-side identified [259] (number~) render_next::$1 ← (const number) render_next::$0 + (number) $18 +Constant right-side identified [288] (number~) sprites_init::$1 ← (number) $18 + (const number) sprites_init::$0 +Constant right-side identified [298] (byte~) $4 ← (const byte) SPRITES_FIRST_YPOS#0 + (byte) $13 +Constant right-side identified [301] (byte~) $5 ← (const byte) SPRITES_FIRST_YPOS#0 + (byte) $15 +Constant right-side identified [367] (number~) $9 ← (const number) $8 * (number) 4 +Constant right-side identified [368] (number~) $11 ← (const number) $10 * (number) 4 +Constant right-side identified [369] (number~) $13 ← (const number) $12 * (number) 4 +Constant right-side identified [370] (number~) $15 ← (const number) $14 * (number) 4 +Constant right-side identified [371] (number~) $17 ← (const number) $16 * (number) 4 +Constant right-side identified [372] (number~) $19 ← (const number) $18 * (number) 4 +Constant right-side identified [373] (number~) $21 ← (const number) $20 * (number) 4 +Constant right-side identified [383] (byte~) $29 ← (const byte) PLAYFIELD_LINES#0 + (byte) 1 +Constant right-side identified [386] (byte~) play_init::$1 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 +Constant right-side identified [395] (byte~) play_init::$0 ← (const byte) PLAYFIELD_COLS#0 * (const byte) PLAYFIELD_LINES#0 +Constant right-side identified [429] (byte) play_move_down::movedown#1 ← ++ (const byte) play_move_down::movedown#0 +Constant right-side identified [551] (byte~) play_remove_lines::$2 ← (const byte) PLAYFIELD_LINES#0 * (const byte) PLAYFIELD_COLS#0 +Constant right-side identified [555] (byte~) play_remove_lines::$4 ← (const byte) PLAYFIELD_LINES#0 - (byte) 1 +Constant right-side identified [557] (byte~) play_remove_lines::$5 ← (const byte) PLAYFIELD_COLS#0 - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) PLAYFIELD_SPRITE_PTRS_1#0 = PLAYFIELD_SCREEN_1#0+SPRITE_PTRS#0 Constant (const byte*) PLAYFIELD_SPRITE_PTRS_2#0 = PLAYFIELD_SCREEN_2#0+SPRITE_PTRS#0 @@ -10435,24 +10435,24 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) IRQ_RASTER_FIRST#0 = $4 Successful SSA optimization Pass2ConstantIdentification Constant value identified { fill( $3, 0) } in [68] (byte[$3]) playfield#0 ← { fill( $3, 0) } -Constant value identified (unumber)render_score::$4 in [144] (word) render_score::score_offset#0 ← (unumber)(const number) render_score::$4 -Constant value identified (unumber)render_score::$11 in [158] (word) render_score::lines_offset#0 ← (unumber)(const number) render_score::$11 -Constant value identified (unumber)render_score::$18 in [168] (word) render_score::level_offset#0 ← (unumber)(const number) render_score::$18 -Constant value identified (unumber)sprites_init::$1 in [288] (byte) sprites_init::xpos#0 ← (unumber)(const number) sprites_init::$1 -Constant value identified { fill( $29, 0) } in [383] (byte[$29]) playfield_lines_idx#0 ← { fill( $29, 0) } +Constant value identified (unumber)render_score::$4 in [145] (word) render_score::score_offset#0 ← (unumber)(const number) render_score::$4 +Constant value identified (unumber)render_score::$11 in [159] (word) render_score::lines_offset#0 ← (unumber)(const number) render_score::$11 +Constant value identified (unumber)render_score::$18 in [169] (word) render_score::level_offset#0 ← (unumber)(const number) render_score::$18 +Constant value identified (unumber)sprites_init::$1 in [289] (byte) sprites_init::xpos#0 ← (unumber)(const number) sprites_init::$1 +Constant value identified { fill( $29, 0) } in [384] (byte[$29]) playfield_lines_idx#0 ← { fill( $29, 0) } Successful SSA optimization Pass2ConstantValues -Resolved ranged next value [108] render_init::i#1 ← ++ render_init::i#2 to ++ -Resolved ranged comparison value [109] if(render_init::i#1!=rangelast(0,render_init::$12)) goto render_init::@1 to (const byte) render_init::$12+(number) 1 -Resolved ranged next value [230] render_playfield::c#1 ← ++ render_playfield::c#2 to ++ -Resolved ranged comparison value [231] if(render_playfield::c#1!=rangelast(0,render_playfield::$3)) goto render_playfield::@2 to (const byte) render_playfield::$3+(number) 1 -Resolved ranged next value [232] render_playfield::l#1 ← ++ render_playfield::l#2 to ++ -Resolved ranged comparison value [233] if(render_playfield::l#1!=rangelast(2,render_playfield::$1)) goto render_playfield::@1 to (const byte) render_playfield::$1+(number) 1 -Resolved ranged next value [392] play_init::j#1 ← ++ play_init::j#2 to ++ -Resolved ranged comparison value [393] if(play_init::j#1!=rangelast(0,play_init::$1)) goto play_init::@1 to (const byte) play_init::$1+(number) 1 -Resolved ranged next value [564] play_remove_lines::x#1 ← ++ play_remove_lines::x#2 to ++ -Resolved ranged comparison value [565] if(play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 to (const byte) play_remove_lines::$5+(number) 1 -Resolved ranged next value [568] play_remove_lines::y#1 ← ++ play_remove_lines::y#8 to ++ -Resolved ranged comparison value [569] if(play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 to (const byte) play_remove_lines::$4+(number) 1 +Resolved ranged next value [109] render_init::i#1 ← ++ render_init::i#2 to ++ +Resolved ranged comparison value [110] if(render_init::i#1!=rangelast(0,render_init::$12)) goto render_init::@1 to (const byte) render_init::$12+(number) 1 +Resolved ranged next value [231] render_playfield::c#1 ← ++ render_playfield::c#2 to ++ +Resolved ranged comparison value [232] if(render_playfield::c#1!=rangelast(0,render_playfield::$3)) goto render_playfield::@2 to (const byte) render_playfield::$3+(number) 1 +Resolved ranged next value [233] render_playfield::l#1 ← ++ render_playfield::l#2 to ++ +Resolved ranged comparison value [234] if(render_playfield::l#1!=rangelast(2,render_playfield::$1)) goto render_playfield::@1 to (const byte) render_playfield::$1+(number) 1 +Resolved ranged next value [393] play_init::j#1 ← ++ play_init::j#2 to ++ +Resolved ranged comparison value [394] if(play_init::j#1!=rangelast(0,play_init::$1)) goto play_init::@1 to (const byte) play_init::$1+(number) 1 +Resolved ranged next value [565] play_remove_lines::x#1 ← ++ play_remove_lines::x#2 to ++ +Resolved ranged comparison value [566] if(play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 to (const byte) play_remove_lines::$5+(number) 1 +Resolved ranged next value [569] play_remove_lines::y#1 ← ++ play_remove_lines::y#8 to ++ +Resolved ranged comparison value [570] if(play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 to (const byte) play_remove_lines::$4+(number) 1 Adding number conversion cast (unumber) render_init::$12+1 in if((byte) render_init::i#1!=(const byte) render_init::$12+(number) 1) goto render_init::@1 Adding number conversion cast (unumber) 1 in if((byte) render_init::i#1!=(unumber)(const byte) render_init::$12+(number) 1) goto render_init::@1 Adding number conversion cast (unumber) render_playfield::$3+1 in if((byte) render_playfield::c#1!=(const byte) render_playfield::$3+(number) 1) goto render_playfield::@2 @@ -10493,22 +10493,22 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $7 Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte~) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#1 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 -Constant right-side identified [67] (byte~) render_init::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) render_init::vicSelectGfxBank1_toDd001_$0#0 -Constant right-side identified [71] (byte~) render_init::$2 ← (const byte) render_init::$1 | (const byte) VIC_RSEL#0 -Constant right-side identified [81] (byte*~) render_init::$7 ← (const byte*) PLAYFIELD_SCREEN_1#0 + (const unumber) render_init::$16 -Constant right-side identified [83] (byte*~) render_init::$10 ← (const byte*) PLAYFIELD_SCREEN_2#0 + (const unumber) render_init::$17 -Constant right-side identified [95] (word~) render_show::toD0181_$1#0 ← (const word) render_show::toD0181_$0#0 & (word) $3fff -Constant right-side identified [98] (byte~) render_show::toD0181_$5#0 ← > (const word) render_show::toD0181_$4#0 -Constant right-side identified [102] (word~) render_show::toD0182_$1#0 ← (const word) render_show::toD0182_$0#0 & (word) $3fff -Constant right-side identified [105] (byte~) render_show::toD0182_$5#0 ← > (const word) render_show::toD0182_$4#0 -Constant right-side identified [161] (byte*) render_screen_original::oscr#0 ← (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 + (const unumber) render_screen_original::$8 -Constant right-side identified [162] (byte*) render_screen_original::ocols#0 ← (const byte*) PLAYFIELD_COLORS_ORIGINAL#0 + (const unumber) render_screen_original::$9 -Constant right-side identified [227] (number~) render_next::$2 ← (const number) render_next::$1 + (number) 4 -Constant right-side identified [266] (word~) toSpritePtr1_$1#0 ← (const word) toSpritePtr1_$0#0 / (byte) $40 -Constant right-side identified [310] (word~) sprites_irq::toSpritePtr2_$1#0 ← (const word) sprites_irq::toSpritePtr2_$0#0 / (byte) $40 -Constant right-side identified [328] (word[]) PIECES#0 ← { (const word) $22, (const word) $23, (const word) $24, (const word) $25, (const word) $26, (const word) $27, (const word) $28 } -Constant right-side identified [491] (byte) play_remove_lines::r#0 ← (const byte) play_remove_lines::$2 - (byte) 1 -Constant right-side identified [492] (byte) play_remove_lines::w#0 ← (const byte) play_remove_lines::$2 - (byte) 1 +Constant right-side identified [68] (byte~) render_init::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) render_init::vicSelectGfxBank1_toDd001_$0#0 +Constant right-side identified [72] (byte~) render_init::$2 ← (const byte) render_init::$1 | (const byte) VIC_RSEL#0 +Constant right-side identified [82] (byte*~) render_init::$7 ← (const byte*) PLAYFIELD_SCREEN_1#0 + (const unumber) render_init::$16 +Constant right-side identified [84] (byte*~) render_init::$10 ← (const byte*) PLAYFIELD_SCREEN_2#0 + (const unumber) render_init::$17 +Constant right-side identified [96] (word~) render_show::toD0181_$1#0 ← (const word) render_show::toD0181_$0#0 & (word) $3fff +Constant right-side identified [99] (byte~) render_show::toD0181_$5#0 ← > (const word) render_show::toD0181_$4#0 +Constant right-side identified [103] (word~) render_show::toD0182_$1#0 ← (const word) render_show::toD0182_$0#0 & (word) $3fff +Constant right-side identified [106] (byte~) render_show::toD0182_$5#0 ← > (const word) render_show::toD0182_$4#0 +Constant right-side identified [162] (byte*) render_screen_original::oscr#0 ← (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 + (const unumber) render_screen_original::$8 +Constant right-side identified [163] (byte*) render_screen_original::ocols#0 ← (const byte*) PLAYFIELD_COLORS_ORIGINAL#0 + (const unumber) render_screen_original::$9 +Constant right-side identified [228] (number~) render_next::$2 ← (const number) render_next::$1 + (number) 4 +Constant right-side identified [267] (word~) toSpritePtr1_$1#0 ← (const word) toSpritePtr1_$0#0 / (byte) $40 +Constant right-side identified [311] (word~) sprites_irq::toSpritePtr2_$1#0 ← (const word) sprites_irq::toSpritePtr2_$0#0 / (byte) $40 +Constant right-side identified [329] (word[]) PIECES#0 ← { (const word) $22, (const word) $23, (const word) $24, (const word) $25, (const word) $26, (const word) $27, (const word) $28 } +Constant right-side identified [492] (byte) play_remove_lines::r#0 ← (const byte) play_remove_lines::$2 - (byte) 1 +Constant right-side identified [493] (byte) play_remove_lines::w#0 ← (const byte) play_remove_lines::$2 - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte[$3]) playfield#0 = { fill( $3, 0) } Constant (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0 = >render_init::vicSelectGfxBank1_toDd001_$0#0 @@ -10538,9 +10538,9 @@ Constant (const word) render_bcd::offset#3 = render_score::lines_offset#0 Constant (const word) render_bcd::offset#5 = render_score::level_offset#0 Constant (const byte*) play_init::pli#0 = playfield#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (unumber)render_next::$2 in [228] (word) render_next::next_area_offset#0 ← (unumber)(const number) render_next::$2 -Constant value identified (byte)toSpritePtr1_$1#0 in [267] (byte) toSpritePtr1_return#0 ← (byte)(const word) toSpritePtr1_$1#0 -Constant value identified (byte)sprites_irq::toSpritePtr2_$1#0 in [311] (byte~) sprites_irq::toSpritePtr2_$2#0 ← (byte)(const word) sprites_irq::toSpritePtr2_$1#0 +Constant value identified (unumber)render_next::$2 in [229] (word) render_next::next_area_offset#0 ← (unumber)(const number) render_next::$2 +Constant value identified (byte)toSpritePtr1_$1#0 in [268] (byte) toSpritePtr1_return#0 ← (byte)(const word) toSpritePtr1_$1#0 +Constant value identified (byte)sprites_irq::toSpritePtr2_$1#0 in [312] (byte~) sprites_irq::toSpritePtr2_$2#0 ← (byte)(const word) sprites_irq::toSpritePtr2_$1#0 Successful SSA optimization Pass2ConstantValues Simplifying constant integer cast (const unumber) render_score::$4 Simplifying constant integer cast (const unumber) render_score::$11 @@ -10550,17 +10550,17 @@ Successful SSA optimization PassNCastSimplification Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $7 Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte~) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#1 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 -Constant right-side identified [66] (byte~) render_init::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 -Constant right-side identified [69] (byte~) render_init::$3 ← (const byte) render_init::$2 | (byte) 3 -Constant right-side identified [78] (byte*) render_init::li_1#0 ← (const byte*) render_init::$7 + (byte) $10 -Constant right-side identified [79] (byte*) render_init::li_2#0 ← (const byte*) render_init::$10 + (byte) $10 -Constant right-side identified [90] (word~) render_show::toD0181_$2#0 ← (const word) render_show::toD0181_$1#0 * (byte) 4 -Constant right-side identified [92] (byte~) render_show::toD0181_$6#0 ← (const byte) render_show::toD0181_$5#0 / (byte) 4 -Constant right-side identified [95] (word~) render_show::toD0182_$2#0 ← (const word) render_show::toD0182_$1#0 * (byte) 4 -Constant right-side identified [97] (byte~) render_show::toD0182_$6#0 ← (const byte) render_show::toD0182_$5#0 / (byte) 4 -Constant right-side identified [114] (word) render_bcd::offset#1 ← (const word) render_score::score_offset#0 + (byte) 2 -Constant right-side identified [118] (word) render_bcd::offset#2 ← (const word) render_score::score_offset#0 + (byte) 4 -Constant right-side identified [125] (word) render_bcd::offset#4 ← (const word) render_score::lines_offset#0 + (byte) 1 +Constant right-side identified [67] (byte~) render_init::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Constant right-side identified [70] (byte~) render_init::$3 ← (const byte) render_init::$2 | (byte) 3 +Constant right-side identified [79] (byte*) render_init::li_1#0 ← (const byte*) render_init::$7 + (byte) $10 +Constant right-side identified [80] (byte*) render_init::li_2#0 ← (const byte*) render_init::$10 + (byte) $10 +Constant right-side identified [91] (word~) render_show::toD0181_$2#0 ← (const word) render_show::toD0181_$1#0 * (byte) 4 +Constant right-side identified [93] (byte~) render_show::toD0181_$6#0 ← (const byte) render_show::toD0181_$5#0 / (byte) 4 +Constant right-side identified [96] (word~) render_show::toD0182_$2#0 ← (const word) render_show::toD0182_$1#0 * (byte) 4 +Constant right-side identified [98] (byte~) render_show::toD0182_$6#0 ← (const byte) render_show::toD0182_$5#0 / (byte) 4 +Constant right-side identified [115] (word) render_bcd::offset#1 ← (const word) render_score::score_offset#0 + (byte) 2 +Constant right-side identified [119] (word) render_bcd::offset#2 ← (const word) render_score::score_offset#0 + (byte) 4 +Constant right-side identified [126] (word) render_bcd::offset#4 ← (const word) render_score::lines_offset#0 + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) render_init::vicSelectGfxBank1_toDd001_$2#0 = render_init::vicSelectGfxBank1_toDd001_$1#0/$40 Constant (const byte) render_init::$3 = render_init::$2|3 @@ -10585,7 +10585,7 @@ Constant (const byte) sprites_irq::$5 = sprites_irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification Simplifying constant evaluating to zero (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0/(byte) $40 in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero 3 in [67] (byte) render_init::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) render_init::vicSelectGfxBank1_toDd001_$2#0 +Simplifying expression containing zero 3 in [68] (byte) render_init::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) render_init::vicSelectGfxBank1_toDd001_$2#0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0 Eliminating unused constant (const byte) render_init::vicSelectGfxBank1_toDd001_$2#0 @@ -10598,13 +10598,13 @@ Simplifying constant integer cast (const unumber) render_next::$2 Successful SSA optimization PassNCastSimplification Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $7 Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 -Constant right-side identified [86] (byte~) render_show::toD0181_$3#0 ← > (const word) render_show::toD0181_$2#0 -Constant right-side identified [87] (byte~) render_show::toD0181_$7#0 ← (const byte) render_show::toD0181_$6#0 & (byte) $f -Constant right-side identified [89] (byte~) render_show::toD0182_$3#0 ← > (const word) render_show::toD0182_$2#0 -Constant right-side identified [90] (byte~) render_show::toD0182_$7#0 ← (const byte) render_show::toD0182_$6#0 & (byte) $f -Constant right-side identified [200] (byte*) render_next::screen_next_area#1 ← (const byte*) PLAYFIELD_SCREEN_1#0 + (const word) render_next::next_area_offset#0 -Constant right-side identified [201] (byte*) render_next::screen_next_area#2 ← (const byte*) PLAYFIELD_SCREEN_2#0 + (const word) render_next::next_area_offset#0 -Constant right-side identified [235] (byte~) $7 ← (const byte) toSpritePtr1_return#0 + (byte) 3 +Constant right-side identified [87] (byte~) render_show::toD0181_$3#0 ← > (const word) render_show::toD0181_$2#0 +Constant right-side identified [88] (byte~) render_show::toD0181_$7#0 ← (const byte) render_show::toD0181_$6#0 & (byte) $f +Constant right-side identified [90] (byte~) render_show::toD0182_$3#0 ← > (const word) render_show::toD0182_$2#0 +Constant right-side identified [91] (byte~) render_show::toD0182_$7#0 ← (const byte) render_show::toD0182_$6#0 & (byte) $f +Constant right-side identified [201] (byte*) render_next::screen_next_area#1 ← (const byte*) PLAYFIELD_SCREEN_1#0 + (const word) render_next::next_area_offset#0 +Constant right-side identified [202] (byte*) render_next::screen_next_area#2 ← (const byte*) PLAYFIELD_SCREEN_2#0 + (const word) render_next::next_area_offset#0 +Constant right-side identified [236] (byte~) $7 ← (const byte) toSpritePtr1_return#0 + (byte) 3 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 = 3 Constant (const byte) render_show::toD0181_$3#0 = >render_show::toD0181_$2#0 @@ -10616,28 +10616,28 @@ Constant (const byte*) render_next::screen_next_area#2 = PLAYFIELD_SCREEN_2#0+re Constant (const byte) $7 = toSpritePtr1_return#0+3 Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 -Constant right-side identified [85] (byte) render_show::toD0181_return#0 ← (const byte) render_show::toD0181_$3#0 | (const byte) render_show::toD0181_$7#0 -Constant right-side identified [86] (byte) render_show::toD0182_return#0 ← (const byte) render_show::toD0182_$3#0 | (const byte) render_show::toD0182_$7#0 +Constant right-side identified [86] (byte) render_show::toD0181_return#0 ← (const byte) render_show::toD0181_$3#0 | (const byte) render_show::toD0181_$7#0 +Constant right-side identified [87] (byte) render_show::toD0182_return#0 ← (const byte) render_show::toD0182_$3#0 | (const byte) render_show::toD0182_$7#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) render_show::toD0181_return#0 = render_show::toD0181_$3#0|render_show::toD0181_$7#0 Constant (const byte) render_show::toD0182_return#0 = render_show::toD0182_$3#0|render_show::toD0182_$7#0 Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 -Inlining Noop Cast [195] (byte*) render_next::next_piece_gfx#0 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) keeping *(PIECES#0 + render_next::$9) -Inlining Noop Cast [423] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) keeping *(PIECES#0 + play_spawn_current::$7) +Inlining Noop Cast [196] (byte*) render_next::next_piece_gfx#0 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) keeping *(PIECES#0 + render_next::$9) +Inlining Noop Cast [424] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) keeping *(PIECES#0 + play_spawn_current::$7) Successful SSA optimization Pass2NopCastInlining -Rewriting multiplication to use shift [76] (byte~) render_init::$15 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [158] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [174] (byte~) render_moving::$6 ← (byte~) render_moving::$1 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [194] (byte~) render_next::$9 ← (byte) next_piece_idx#12 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [217] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 * (byte) 2 -Rewriting multiplication to use shift [281] (byte~) play_init::$4 ← (byte) play_init::j#2 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [291] (byte~) play_init::$5 ← (byte) play_init::b#2 * (const byte) SIZEOF_DWORD -Rewriting multiplication to use shift [386] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [406] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 * (const byte) SIZEOF_POINTER -Rewriting multiplication to use shift [422] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [464] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 * (const byte) SIZEOF_DWORD -Rewriting multiplication to use shift [487] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 * (const byte) SIZEOF_DWORD +Rewriting multiplication to use shift [77] (byte~) render_init::$15 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [159] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [175] (byte~) render_moving::$6 ← (byte~) render_moving::$1 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [195] (byte~) render_next::$9 ← (byte) next_piece_idx#12 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [218] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 * (byte) 2 +Rewriting multiplication to use shift [282] (byte~) play_init::$4 ← (byte) play_init::j#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [292] (byte~) play_init::$5 ← (byte) play_init::b#2 * (const byte) SIZEOF_DWORD +Rewriting multiplication to use shift [387] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [407] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift [423] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [465] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 * (const byte) SIZEOF_DWORD +Rewriting multiplication to use shift [488] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 * (const byte) SIZEOF_DWORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0 Inlining constant with var siblings (const byte) keyboard_event_scan::row#0 @@ -10721,7 +10721,6 @@ Inlining constant with var siblings (const byte) play_remove_lines::r#0 Inlining constant with var siblings (const byte) play_remove_lines::w#0 Inlining constant with var siblings (const byte) play_increase_level::b#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 -Inlining constant with var siblings (const dword) score_bcd#0 Inlining constant with var siblings (const word) lines_bcd#0 Inlining constant with var siblings (const byte) level_bcd#0 Inlining constant with var siblings (const byte) level#0 @@ -10856,7 +10855,6 @@ Constant inlined $7 = (const byte) toSpritePtr1_return#0+(byte) 3 Constant inlined $8 = (number) 4*(number) 4 Constant inlined $9 = (number) 4*(number) 4*(number) 4 Constant inlined render_playfield::c#0 = (byte) 0 -Constant inlined score_bcd#0 = (byte) 0 Constant inlined play_spawn_current::piece_idx#0 = (byte) 7 Constant inlined play_remove_lines::removed#0 = (byte) 0 Constant inlined play_remove_lines::full#1 = (byte) 0 @@ -10932,24 +10930,24 @@ Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Successful SSA optimization Pass2ConstantAdditionElimination Simplifying constant integer increment ++0 Successful SSA optimization Pass2ConstantSimplification -Adding number conversion cast (unumber) 2*$28 in [75] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_2#0+(number) 2*(number) $28+(byte) $10 ) - [75] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_1#0+(number) 2*(number) $28+(byte) $10 ) - [75] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@5/(byte) 0 ) -Adding number conversion cast (unumber) 2*$28 in [75] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_2#0+(number) 2*(number) $28+(byte) $10 ) - [75] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_1#0+(unumber)(number) 2*(number) $28+(byte) $10 ) - [75] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@5/(byte) 0 ) -Adding number conversion cast (unumber) $20*2 in [128] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [128] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) - [128] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) - [128] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) - [128] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) -Adding number conversion cast (unumber) $20*2 in [128] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [128] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) - [128] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(unumber)(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) - [128] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) - [128] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) -Adding number conversion cast (unumber) $18+$f*8 in [216] (byte) sprites_init::xpos#2 ← phi( sprites_init/(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [216] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) +Adding number conversion cast (unumber) 2*$28 in [76] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_2#0+(number) 2*(number) $28+(byte) $10 ) + [76] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_1#0+(number) 2*(number) $28+(byte) $10 ) + [76] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@5/(byte) 0 ) +Adding number conversion cast (unumber) 2*$28 in [76] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_2#0+(number) 2*(number) $28+(byte) $10 ) + [76] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@5/(const byte*) PLAYFIELD_SCREEN_1#0+(unumber)(number) 2*(number) $28+(byte) $10 ) + [76] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@5/(byte) 0 ) +Adding number conversion cast (unumber) $20*2 in [129] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [129] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) + [129] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) + [129] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) + [129] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) +Adding number conversion cast (unumber) $20*2 in [129] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [129] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) + [129] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(unumber)(number) $20*(number) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) + [129] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) + [129] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) +Adding number conversion cast (unumber) $18+$f*8 in [217] (byte) sprites_init::xpos#2 ← phi( sprites_init/(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [217] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) Successful SSA optimization PassNAddNumberTypeConversions Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Eliminating unused constant (const byte) SIZEOF_POINTER @@ -11066,322 +11064,323 @@ Adding NOP phi() at start of render_init::@2 Adding NOP phi() at start of sprites_irq::toSpritePtr2 Adding NOP phi() at start of sprites_irq::toSpritePtr2_@return CALL GRAPH -Calls in [] to main:18 -Calls in [main] to sid_rnd_init:22 render_init:24 sprites_init:26 sprites_irq_init:28 play_init:30 play_spawn_current:32 play_spawn_current:35 render_playfield:37 render_moving:42 render_next:44 render_show:56 keyboard_event_scan:58 keyboard_event_get:60 play_movement:67 render_playfield:72 render_moving:78 render_next:81 render_score:83 render_screen_swap:85 -Calls in [render_score] to render_bcd:128 render_bcd:133 render_bcd:138 render_bcd:143 render_bcd:148 render_bcd:153 -Calls in [play_movement] to play_move_down:257 play_move_leftright:268 play_move_rotate:273 -Calls in [play_move_rotate] to play_collision:298 -Calls in [play_move_leftright] to play_collision:355 play_collision:371 -Calls in [play_move_down] to keyboard_event_pressed:381 play_collision:401 play_lock_current:406 play_remove_lines:408 play_update_score:412 play_spawn_current:415 -Calls in [play_spawn_current] to play_collision:486 -Calls in [play_update_score] to play_increase_level:514 -Calls in [keyboard_event_scan] to keyboard_matrix_read:637 keyboard_event_pressed:648 keyboard_event_pressed:654 keyboard_event_pressed:660 keyboard_event_pressed:666 -Calls in [render_init] to render_screen_original:779 render_screen_original:781 +Calls in [] to main:19 +Calls in [main] to sid_rnd_init:23 render_init:25 sprites_init:27 sprites_irq_init:29 play_init:31 play_spawn_current:33 play_spawn_current:36 render_playfield:38 render_moving:43 render_next:45 render_show:58 keyboard_event_scan:60 keyboard_event_get:62 play_movement:69 render_playfield:74 render_moving:80 render_next:83 render_score:85 render_screen_swap:87 +Calls in [render_score] to render_bcd:130 render_bcd:135 render_bcd:140 render_bcd:145 render_bcd:150 render_bcd:155 +Calls in [play_movement] to play_move_down:259 play_move_leftright:270 play_move_rotate:275 +Calls in [play_move_rotate] to play_collision:300 +Calls in [play_move_leftright] to play_collision:357 play_collision:373 +Calls in [play_move_down] to keyboard_event_pressed:383 play_collision:403 play_lock_current:408 play_remove_lines:410 play_update_score:414 play_spawn_current:417 +Calls in [play_spawn_current] to play_collision:488 +Calls in [play_update_score] to play_increase_level:516 +Calls in [keyboard_event_scan] to keyboard_matrix_read:639 keyboard_event_pressed:650 keyboard_event_pressed:656 keyboard_event_pressed:662 keyboard_event_pressed:668 +Calls in [render_init] to render_screen_original:781 render_screen_original:783 Created 172 initial phi equivalence classes -Coalesced [33] next_piece_idx#83 ← next_piece_idx#18 -Coalesced [34] game_over#90 ← game_over#52 -Not coalescing [38] current_ypos#98 ← current_ypos#6 -Not coalescing [39] current_xpos#119 ← current_xpos#100 -Not coalescing [41] current_piece_char#100 ← current_piece_char#5 -Not coalescing [43] next_piece_idx#77 ← next_piece_idx#18 -Coalesced [45] current_movedown_slow#97 ← current_movedown_slow#1 -Coalesced [47] current_piece_char#107 ← current_piece_char#5 -Coalesced [49] current_xpos#131 ← current_xpos#100 -Coalesced [50] current_ypos#105 ← current_ypos#6 -Coalesced [51] game_over#94 ← game_over#52 -Coalesced [52] next_piece_idx#86 ← next_piece_idx#18 -Not coalescing [71] render_screen_render#64 ← render_screen_render#18 -Not coalescing [73] current_ypos#99 ← current_ypos#19 -Not coalescing [74] render_screen_render#65 ← render_screen_render#18 -Not coalescing [75] current_xpos#120 ← current_xpos#19 -Not coalescing [76] current_piece_gfx#113 ← current_piece_gfx#18 -Not coalescing [77] current_piece_char#101 ← current_piece_char#16 -Not coalescing [79] render_screen_render#66 ← render_screen_render#18 -Not coalescing [80] next_piece_idx#78 ← next_piece_idx#16 -Coalesced [86] render_screen_show#60 ← render_screen_show#13 -Coalesced [87] render_screen_render#67 ← render_screen_render#11 -Coalesced [88] current_movedown_slow#98 ← current_movedown_slow#21 -Coalesced [89] current_piece#103 ← current_piece#15 -Coalesced [90] current_piece_char#108 ← current_piece_char#16 -Coalesced [91] current_orientation#105 ← current_orientation#17 -Coalesced [92] current_piece_gfx#125 ← current_piece_gfx#18 -Coalesced [93] current_xpos#132 ← current_xpos#19 -Coalesced [94] current_ypos#106 ← current_ypos#19 -Coalesced [95] game_over#95 ← game_over#15 -Coalesced [96] next_piece_idx#87 ← next_piece_idx#16 -Coalesced [97] keyboard_events_size#93 ← keyboard_events_size#16 -Coalesced [98] current_movedown_counter#61 ← current_movedown_counter#14 -Coalesced [99] lines_bcd#96 ← lines_bcd#15 -Coalesced [100] score_bcd#92 ← score_bcd#14 -Coalesced [101] level#112 ← level#17 -Coalesced [102] level_bcd#111 ← level_bcd#17 -Coalesced (already) [103] current_movedown_slow#96 ← current_movedown_slow#21 -Coalesced (already) [104] current_piece#101 ← current_piece#15 -Coalesced (already) [105] current_piece_char#106 ← current_piece_char#16 -Coalesced (already) [106] current_orientation#104 ← current_orientation#17 -Coalesced (already) [107] current_piece_gfx#123 ← current_piece_gfx#18 -Coalesced (already) [108] current_xpos#130 ← current_xpos#19 -Coalesced (already) [109] current_ypos#104 ← current_ypos#19 -Coalesced (already) [110] game_over#93 ← game_over#15 -Coalesced (already) [111] next_piece_idx#85 ← next_piece_idx#16 -Coalesced (already) [112] keyboard_events_size#92 ← keyboard_events_size#16 -Coalesced (already) [113] current_movedown_counter#60 ← current_movedown_counter#14 -Coalesced (already) [114] lines_bcd#95 ← lines_bcd#15 -Coalesced (already) [115] score_bcd#91 ← score_bcd#14 -Coalesced (already) [116] level#111 ← level#17 -Coalesced (already) [117] level_bcd#110 ← level_bcd#17 -Coalesced [126] render_bcd::screen#7 ← render_bcd::screen#0 -Coalesced [127] render_bcd::bcd#9 ← render_bcd::bcd#0 -Coalesced [131] render_bcd::screen#8 ← render_bcd::screen#1 -Coalesced [132] render_bcd::bcd#10 ← render_bcd::bcd#1 -Coalesced [136] render_bcd::screen#9 ← render_bcd::screen#2 -Coalesced [137] render_bcd::bcd#11 ← render_bcd::bcd#2 -Coalesced [141] render_bcd::screen#10 ← render_bcd::screen#3 -Coalesced [142] render_bcd::bcd#12 ← render_bcd::bcd#3 -Coalesced [146] render_bcd::screen#11 ← render_bcd::screen#4 -Coalesced [147] render_bcd::bcd#13 ← render_bcd::bcd#4 -Coalesced [151] render_bcd::screen#12 ← render_bcd::screen#5 -Coalesced [152] render_bcd::bcd#14 ← render_bcd::bcd#5 -Coalesced [164] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 -Coalesced [170] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 -Coalesced [178] render_next::screen_next_area#13 ← render_next::screen_next_area#11 -Coalesced [180] render_next::next_piece_gfx#10 ← render_next::next_piece_gfx#3 -Coalesced [181] render_next::screen_next_area#14 ← render_next::screen_next_area#10 -Coalesced [194] render_next::next_piece_gfx#8 ← render_next::next_piece_gfx#1 -Coalesced [195] render_next::screen_next_area#12 ← render_next::screen_next_area#4 -Coalesced [196] render_next::l#8 ← render_next::l#1 -Coalesced (already) [197] render_next::next_piece_gfx#11 ← render_next::next_piece_gfx#1 -Coalesced [198] render_next::screen_next_area#15 ← render_next::screen_next_area#3 -Coalesced [199] render_next::c#6 ← render_next::c#1 -Coalesced [204] render_moving::ypos#9 ← render_moving::ypos#0 -Coalesced [208] render_moving::i#12 ← render_moving::i#1 -Coalesced [214] render_moving::ypos#10 ← render_moving::ypos#1 -Coalesced [215] render_moving::i#10 ← render_moving::i#8 -Coalesced [216] render_moving::l#9 ← render_moving::l#1 -Coalesced [221] render_moving::i#13 ← render_moving::i#3 -Coalesced [222] render_moving::xpos#5 ← render_moving::xpos#0 -Coalesced [231] render_moving::i#11 ← render_moving::i#2 -Coalesced (already) [232] render_moving::i#14 ← render_moving::i#2 -Coalesced [233] render_moving::xpos#6 ← render_moving::xpos#1 -Coalesced [234] render_moving::c#5 ← render_moving::c#1 -Coalesced [240] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [241] render_playfield::screen_line#3 ← render_playfield::screen_line#0 -Coalesced [251] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [252] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [253] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [254] render_playfield::screen_line#4 ← render_playfield::screen_line#1 -Coalesced [255] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [261] play_movement::return#6 ← play_movement::render#1 -Coalesced [262] current_orientation#96 ← current_orientation#20 -Coalesced [263] current_piece_gfx#114 ← current_piece_gfx#20 -Coalesced [264] current_xpos#121 ← current_xpos#22 -Coalesced [277] play_movement::return#7 ← play_movement::return#0 -Coalesced [278] current_orientation#97 ← current_orientation#25 -Coalesced [279] current_piece_gfx#115 ← current_piece_gfx#21 -Coalesced [280] current_xpos#122 ← current_xpos#26 -Coalesced (already) [283] current_orientation#103 ← current_orientation#20 -Coalesced (already) [284] current_piece_gfx#122 ← current_piece_gfx#20 -Coalesced [289] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [294] current_piece#99 ← current_piece#15 -Coalesced [295] play_collision::orientation#9 ← play_collision::orientation#3 -Coalesced [296] play_collision::yp#13 ← play_collision::ypos#3 -Coalesced [297] play_collision::xpos#17 ← play_collision::xpos#3 -Coalesced [304] current_orientation#101 ← current_orientation#7 -Coalesced [305] current_piece_gfx#120 ← current_piece_gfx#7 -Coalesced (already) [306] current_orientation#102 ← current_orientation#20 -Coalesced (already) [307] current_piece_gfx#121 ← current_piece_gfx#20 -Coalesced [310] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [313] play_collision::yp#15 ← play_collision::yp#0 -Coalesced [317] play_collision::i#11 ← play_collision::i#3 -Not coalescing [318] play_collision::xp#8 ← play_collision::xpos#6 -Coalesced [340] play_collision::yp#16 ← play_collision::yp#1 -Not coalescing [341] play_collision::i#10 ← play_collision::i#1 -Coalesced [342] play_collision::l#10 ← play_collision::l#1 -Not coalescing [343] play_collision::i#12 ← play_collision::i#1 -Coalesced [344] play_collision::xp#9 ← play_collision::xp#1 -Coalesced [345] play_collision::c#8 ← play_collision::c#1 -Not coalescing [351] current_piece#98 ← current_piece#15 -Coalesced [352] play_collision::orientation#8 ← play_collision::orientation#2 -Coalesced [353] play_collision::yp#12 ← play_collision::ypos#2 -Coalesced [354] play_collision::xpos#16 ← play_collision::xpos#2 -Coalesced [360] current_xpos#128 ← current_xpos#6 -Coalesced (already) [363] current_xpos#127 ← current_xpos#22 -Not coalescing [367] current_piece#97 ← current_piece#15 -Coalesced [368] play_collision::orientation#7 ← play_collision::orientation#1 -Coalesced [369] play_collision::yp#11 ← play_collision::ypos#1 -Coalesced [370] play_collision::xpos#15 ← play_collision::xpos#1 -Coalesced [376] current_xpos#129 ← current_xpos#8 -Coalesced [387] play_move_down::movedown#14 ← play_move_down::movedown#2 -Coalesced [391] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [397] current_piece#96 ← current_piece#10 -Coalesced [398] play_collision::orientation#6 ← play_collision::orientation#0 -Coalesced [399] play_collision::yp#10 ← play_collision::ypos#0 -Coalesced [400] play_collision::xpos#14 ← play_collision::xpos#0 -Coalesced (already) [413] next_piece_idx#84 ← next_piece_idx#10 -Coalesced (already) [414] game_over#91 ← game_over#10 -Coalesced [416] current_ypos#101 ← current_ypos#6 -Coalesced [417] lines_bcd#89 ← lines_bcd#17 -Coalesced [418] score_bcd#85 ← score_bcd#16 -Coalesced [419] level#105 ← level#19 -Coalesced [420] current_movedown_slow#89 ← current_movedown_slow#23 -Coalesced [421] level_bcd#102 ← level_bcd#19 -Coalesced [423] current_piece_char#103 ← current_piece_char#5 -Coalesced [425] current_xpos#124 ← current_xpos#100 -Coalesced [426] game_over#87 ← game_over#52 -Coalesced [427] next_piece_idx#80 ← next_piece_idx#18 -Coalesced (already) [429] current_ypos#102 ← current_ypos#38 -Coalesced [430] lines_bcd#90 ← lines_bcd#26 -Coalesced [431] score_bcd#86 ← score_bcd#26 -Coalesced [432] level#106 ← level#33 -Coalesced [433] current_movedown_slow#90 ← current_movedown_slow#37 -Coalesced [434] level_bcd#103 ← level_bcd#31 -Coalesced [435] current_piece#94 ← current_piece#28 -Coalesced (already) [436] current_piece_char#104 ← current_piece_char#29 -Coalesced [437] current_orientation#99 ← current_orientation#37 -Coalesced [438] current_piece_gfx#118 ← current_piece_gfx#35 -Coalesced (already) [439] current_xpos#125 ← current_xpos#43 -Coalesced (already) [440] game_over#88 ← game_over#27 -Coalesced (already) [441] next_piece_idx#81 ← next_piece_idx#30 -Coalesced [445] current_ypos#100 ← current_ypos#3 -Coalesced (already) [446] lines_bcd#88 ← lines_bcd#19 -Coalesced (already) [447] score_bcd#84 ← score_bcd#18 -Coalesced (already) [448] level#104 ← level#10 -Coalesced (already) [449] current_movedown_slow#88 ← current_movedown_slow#14 -Coalesced (already) [450] level_bcd#101 ← level_bcd#11 -Coalesced (already) [451] current_piece#92 ← current_piece#10 -Coalesced (already) [452] current_piece_char#102 ← current_piece_char#10 -Coalesced (already) [453] current_orientation#98 ← current_orientation#13 -Coalesced (already) [454] current_piece_gfx#116 ← current_piece_gfx#13 -Coalesced (already) [455] current_xpos#123 ← current_xpos#14 -Coalesced (already) [456] game_over#86 ← game_over#10 -Coalesced (already) [457] next_piece_idx#79 ← next_piece_idx#10 -Coalesced [458] current_movedown_counter#59 ← current_movedown_counter#12 -Coalesced (already) [459] current_ypos#103 ← current_ypos#11 -Coalesced (already) [460] lines_bcd#91 ← lines_bcd#19 -Coalesced (already) [461] score_bcd#87 ← score_bcd#18 -Coalesced (already) [462] level#107 ← level#10 -Coalesced (already) [463] current_movedown_slow#91 ← current_movedown_slow#14 -Coalesced (already) [464] level_bcd#104 ← level_bcd#11 -Coalesced (already) [465] current_piece#95 ← current_piece#10 -Coalesced (already) [466] current_piece_char#105 ← current_piece_char#10 -Coalesced (already) [467] current_orientation#100 ← current_orientation#13 -Coalesced (already) [468] current_piece_gfx#119 ← current_piece_gfx#13 -Coalesced (already) [469] current_xpos#126 ← current_xpos#14 -Coalesced (already) [470] game_over#89 ← game_over#10 -Coalesced (already) [471] next_piece_idx#82 ← next_piece_idx#10 -Coalesced [472] play_move_down::movedown#15 ← play_move_down::movedown#7 -Coalesced [473] play_move_down::movedown#13 ← play_move_down::movedown#10 -Coalesced (already) [474] play_move_down::movedown#12 ← play_move_down::movedown#10 -Coalesced [484] play_collision::yp#14 ← play_collision::ypos#4 -Coalesced [485] play_collision::xpos#18 ← play_collision::xpos#4 -Coalesced [494] next_piece_idx#18 ← play_spawn_current::piece_idx#2 -Coalesced [499] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced (already) [500] game_over#92 ← game_over#65 -Coalesced [515] lines_bcd#94 ← lines_bcd#29 -Coalesced [516] score_bcd#90 ← score_bcd#29 -Coalesced [517] level#110 ← level#21 -Coalesced [518] current_movedown_slow#94 ← current_movedown_slow#66 -Coalesced [519] level_bcd#107 ← level_bcd#62 -Coalesced (already) [522] lines_bcd#93 ← lines_bcd#29 -Coalesced (already) [523] score_bcd#89 ← score_bcd#29 -Coalesced (already) [524] level#109 ← level#10 -Coalesced (already) [525] current_movedown_slow#93 ← current_movedown_slow#14 -Coalesced (already) [526] level_bcd#106 ← level_bcd#11 -Coalesced (already) [527] lines_bcd#92 ← lines_bcd#19 -Coalesced (already) [528] score_bcd#88 ← score_bcd#18 -Coalesced (already) [529] level#108 ← level#10 -Coalesced (already) [530] current_movedown_slow#92 ← current_movedown_slow#14 -Coalesced (already) [531] level_bcd#105 ← level_bcd#11 -Coalesced [535] current_movedown_slow#95 ← current_movedown_slow#10 -Coalesced [541] level_bcd#109 ← level_bcd#8 -Coalesced [551] play_increase_level::b#3 ← play_increase_level::b#1 -Coalesced [552] level_bcd#108 ← level_bcd#21 -Coalesced [556] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [557] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [571] play_remove_lines::w#17 ← play_remove_lines::w#2 -Coalesced [572] play_remove_lines::removed#14 ← play_remove_lines::removed#1 -Coalesced [576] play_remove_lines::w#19 ← play_remove_lines::w#11 -Coalesced [583] play_remove_lines::w#18 ← play_remove_lines::w#3 -Coalesced [584] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [585] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [586] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [587] play_remove_lines::removed#12 ← play_remove_lines::removed#8 -Coalesced [588] play_remove_lines::w#16 ← play_remove_lines::w#1 -Coalesced (already) [589] play_remove_lines::removed#13 ← play_remove_lines::removed#11 -Coalesced (already) [590] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [591] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [592] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [593] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [594] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [596] play_lock_current::yp#7 ← play_lock_current::yp#0 -Coalesced [601] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [602] play_lock_current::xp#5 ← play_lock_current::xp#0 -Coalesced [614] play_lock_current::yp#8 ← play_lock_current::yp#1 -Not coalescing [615] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [616] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [617] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [618] play_lock_current::xp#6 ← play_lock_current::xp#1 -Coalesced [619] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [629] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [630] keyboard_events_size#91 ← keyboard_events_size#4 -Coalesced [633] keyboard_events_size#90 ← keyboard_events_size#13 -Coalesced [634] keyboard_events_size#80 ← keyboard_events_size#19 -Coalesced [642] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [643] keyboard_events_size#83 ← keyboard_events_size#30 -Coalesced [672] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 -Coalesced [673] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 -Coalesced (already) [674] keyboard_events_size#81 ← keyboard_events_size#13 -Coalesced [675] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [676] keyboard_events_size#85 ← keyboard_events_size#30 -Coalesced [686] keyboard_events_size#89 ← keyboard_events_size#2 -Coalesced [692] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced [693] keyboard_events_size#82 ← keyboard_events_size#29 -Coalesced [694] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 -Coalesced (already) [695] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 -Coalesced (already) [696] keyboard_events_size#84 ← keyboard_events_size#29 -Coalesced [700] keyboard_events_size#87 ← keyboard_events_size#1 -Coalesced (already) [701] keyboard_events_size#88 ← keyboard_events_size#10 -Coalesced (already) [702] keyboard_events_size#86 ← keyboard_events_size#10 -Coalesced [738] play_init::b#3 ← play_init::b#1 -Coalesced [739] play_init::j#3 ← play_init::j#1 -Coalesced [740] play_init::pli#3 ← play_init::pli#1 -Coalesced [741] play_init::idx#3 ← play_init::idx#1 -Coalesced [766] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [767] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [793] render_init::i#3 ← render_init::i#1 -Coalesced [794] render_init::li_1#3 ← render_init::li_1#1 -Coalesced [795] render_init::li_2#3 ← render_init::li_2#1 -Coalesced [797] render_screen_original::screen#11 ← render_screen_original::screen#9 -Coalesced [799] render_screen_original::screen#13 ← render_screen_original::screen#8 -Coalesced [800] render_screen_original::cols#10 ← render_screen_original::cols#7 -Coalesced [808] render_screen_original::oscr#8 ← render_screen_original::oscr#4 -Coalesced [809] render_screen_original::screen#15 ← render_screen_original::screen#2 -Coalesced [810] render_screen_original::ocols#8 ← render_screen_original::ocols#4 -Coalesced [811] render_screen_original::cols#12 ← render_screen_original::cols#1 -Coalesced [812] render_screen_original::x#8 ← render_screen_original::x#1 -Coalesced [822] render_screen_original::screen#17 ← render_screen_original::screen#3 -Coalesced [823] render_screen_original::cols#14 ← render_screen_original::cols#2 -Coalesced [824] render_screen_original::x#10 ← render_screen_original::x#2 -Coalesced [835] render_screen_original::screen#12 ← render_screen_original::screen#10 -Coalesced [836] render_screen_original::cols#9 ← render_screen_original::cols#3 -Coalesced [837] render_screen_original::oscr#7 ← render_screen_original::oscr#1 -Coalesced [838] render_screen_original::ocols#7 ← render_screen_original::ocols#1 -Coalesced [839] render_screen_original::y#7 ← render_screen_original::y#1 -Coalesced [840] render_screen_original::screen#18 ← render_screen_original::screen#10 -Coalesced [841] render_screen_original::cols#15 ← render_screen_original::cols#3 -Coalesced [842] render_screen_original::x#11 ← render_screen_original::x#3 -Coalesced (already) [843] render_screen_original::oscr#9 ← render_screen_original::oscr#1 -Coalesced [844] render_screen_original::screen#16 ← render_screen_original::screen#3 -Coalesced (already) [845] render_screen_original::ocols#9 ← render_screen_original::ocols#1 -Coalesced [846] render_screen_original::cols#13 ← render_screen_original::cols#2 -Coalesced [847] render_screen_original::x#9 ← render_screen_original::x#2 -Coalesced (already) [848] render_screen_original::screen#14 ← render_screen_original::screen#2 -Coalesced (already) [849] render_screen_original::cols#11 ← render_screen_original::cols#1 -Coalesced [850] render_screen_original::x#7 ← render_screen_original::x#1 -Coalesced [877] irq_raster_next#27 ← irq_raster_next#3 -Coalesced [886] irq_raster_next#26 ← irq_raster_next#2 -Coalesced [892] irq_raster_next#25 ← irq_raster_next#1 +Coalesced [34] next_piece_idx#83 ← next_piece_idx#18 +Coalesced [35] game_over#90 ← game_over#52 +Not coalescing [39] current_ypos#98 ← current_ypos#6 +Not coalescing [40] current_xpos#119 ← current_xpos#100 +Not coalescing [42] current_piece_char#100 ← current_piece_char#5 +Not coalescing [44] next_piece_idx#77 ← next_piece_idx#18 +Coalesced [46] current_movedown_slow#97 ← current_movedown_slow#1 +Coalesced [48] current_piece_char#107 ← current_piece_char#5 +Coalesced [50] current_xpos#131 ← current_xpos#100 +Coalesced [51] current_ypos#105 ← current_ypos#6 +Coalesced [52] game_over#94 ← game_over#52 +Coalesced [53] next_piece_idx#86 ← next_piece_idx#18 +Coalesced [54] score_bcd#92 ← score_bcd#0 +Not coalescing [73] render_screen_render#64 ← render_screen_render#18 +Not coalescing [75] current_ypos#99 ← current_ypos#19 +Not coalescing [76] render_screen_render#65 ← render_screen_render#18 +Not coalescing [77] current_xpos#120 ← current_xpos#19 +Not coalescing [78] current_piece_gfx#113 ← current_piece_gfx#18 +Not coalescing [79] current_piece_char#101 ← current_piece_char#16 +Not coalescing [81] render_screen_render#66 ← render_screen_render#18 +Not coalescing [82] next_piece_idx#78 ← next_piece_idx#16 +Coalesced [88] render_screen_show#60 ← render_screen_show#13 +Coalesced [89] render_screen_render#67 ← render_screen_render#11 +Coalesced [90] current_movedown_slow#98 ← current_movedown_slow#21 +Coalesced [91] current_piece#103 ← current_piece#15 +Coalesced [92] current_piece_char#108 ← current_piece_char#16 +Coalesced [93] current_orientation#105 ← current_orientation#17 +Coalesced [94] current_piece_gfx#125 ← current_piece_gfx#18 +Coalesced [95] current_xpos#132 ← current_xpos#19 +Coalesced [96] current_ypos#106 ← current_ypos#19 +Coalesced [97] game_over#95 ← game_over#15 +Coalesced [98] next_piece_idx#87 ← next_piece_idx#16 +Coalesced [99] keyboard_events_size#93 ← keyboard_events_size#16 +Coalesced [100] current_movedown_counter#61 ← current_movedown_counter#14 +Coalesced [101] lines_bcd#96 ← lines_bcd#15 +Coalesced [102] score_bcd#93 ← score_bcd#14 +Coalesced [103] level#112 ← level#17 +Coalesced [104] level_bcd#111 ← level_bcd#17 +Coalesced (already) [105] current_movedown_slow#96 ← current_movedown_slow#21 +Coalesced (already) [106] current_piece#101 ← current_piece#15 +Coalesced (already) [107] current_piece_char#106 ← current_piece_char#16 +Coalesced (already) [108] current_orientation#104 ← current_orientation#17 +Coalesced (already) [109] current_piece_gfx#123 ← current_piece_gfx#18 +Coalesced (already) [110] current_xpos#130 ← current_xpos#19 +Coalesced (already) [111] current_ypos#104 ← current_ypos#19 +Coalesced (already) [112] game_over#93 ← game_over#15 +Coalesced (already) [113] next_piece_idx#85 ← next_piece_idx#16 +Coalesced (already) [114] keyboard_events_size#92 ← keyboard_events_size#16 +Coalesced (already) [115] current_movedown_counter#60 ← current_movedown_counter#14 +Coalesced (already) [116] lines_bcd#95 ← lines_bcd#15 +Coalesced (already) [117] score_bcd#91 ← score_bcd#14 +Coalesced (already) [118] level#111 ← level#17 +Coalesced (already) [119] level_bcd#110 ← level_bcd#17 +Coalesced [128] render_bcd::screen#7 ← render_bcd::screen#0 +Coalesced [129] render_bcd::bcd#9 ← render_bcd::bcd#0 +Coalesced [133] render_bcd::screen#8 ← render_bcd::screen#1 +Coalesced [134] render_bcd::bcd#10 ← render_bcd::bcd#1 +Coalesced [138] render_bcd::screen#9 ← render_bcd::screen#2 +Coalesced [139] render_bcd::bcd#11 ← render_bcd::bcd#2 +Coalesced [143] render_bcd::screen#10 ← render_bcd::screen#3 +Coalesced [144] render_bcd::bcd#12 ← render_bcd::bcd#3 +Coalesced [148] render_bcd::screen#11 ← render_bcd::screen#4 +Coalesced [149] render_bcd::bcd#13 ← render_bcd::bcd#4 +Coalesced [153] render_bcd::screen#12 ← render_bcd::screen#5 +Coalesced [154] render_bcd::bcd#14 ← render_bcd::bcd#5 +Coalesced [166] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 +Coalesced [172] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 +Coalesced [180] render_next::screen_next_area#13 ← render_next::screen_next_area#11 +Coalesced [182] render_next::next_piece_gfx#10 ← render_next::next_piece_gfx#3 +Coalesced [183] render_next::screen_next_area#14 ← render_next::screen_next_area#10 +Coalesced [196] render_next::next_piece_gfx#8 ← render_next::next_piece_gfx#1 +Coalesced [197] render_next::screen_next_area#12 ← render_next::screen_next_area#4 +Coalesced [198] render_next::l#8 ← render_next::l#1 +Coalesced (already) [199] render_next::next_piece_gfx#11 ← render_next::next_piece_gfx#1 +Coalesced [200] render_next::screen_next_area#15 ← render_next::screen_next_area#3 +Coalesced [201] render_next::c#6 ← render_next::c#1 +Coalesced [206] render_moving::ypos#9 ← render_moving::ypos#0 +Coalesced [210] render_moving::i#12 ← render_moving::i#1 +Coalesced [216] render_moving::ypos#10 ← render_moving::ypos#1 +Coalesced [217] render_moving::i#10 ← render_moving::i#8 +Coalesced [218] render_moving::l#9 ← render_moving::l#1 +Coalesced [223] render_moving::i#13 ← render_moving::i#3 +Coalesced [224] render_moving::xpos#5 ← render_moving::xpos#0 +Coalesced [233] render_moving::i#11 ← render_moving::i#2 +Coalesced (already) [234] render_moving::i#14 ← render_moving::i#2 +Coalesced [235] render_moving::xpos#6 ← render_moving::xpos#1 +Coalesced [236] render_moving::c#5 ← render_moving::c#1 +Coalesced [242] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [243] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [253] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [254] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [255] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [256] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [257] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [263] play_movement::return#6 ← play_movement::render#1 +Coalesced [264] current_orientation#96 ← current_orientation#20 +Coalesced [265] current_piece_gfx#114 ← current_piece_gfx#20 +Coalesced [266] current_xpos#121 ← current_xpos#22 +Coalesced [279] play_movement::return#7 ← play_movement::return#0 +Coalesced [280] current_orientation#97 ← current_orientation#25 +Coalesced [281] current_piece_gfx#115 ← current_piece_gfx#21 +Coalesced [282] current_xpos#122 ← current_xpos#26 +Coalesced (already) [285] current_orientation#103 ← current_orientation#20 +Coalesced (already) [286] current_piece_gfx#122 ← current_piece_gfx#20 +Coalesced [291] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [296] current_piece#99 ← current_piece#15 +Coalesced [297] play_collision::orientation#9 ← play_collision::orientation#3 +Coalesced [298] play_collision::yp#13 ← play_collision::ypos#3 +Coalesced [299] play_collision::xpos#17 ← play_collision::xpos#3 +Coalesced [306] current_orientation#101 ← current_orientation#7 +Coalesced [307] current_piece_gfx#120 ← current_piece_gfx#7 +Coalesced (already) [308] current_orientation#102 ← current_orientation#20 +Coalesced (already) [309] current_piece_gfx#121 ← current_piece_gfx#20 +Coalesced [312] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [315] play_collision::yp#15 ← play_collision::yp#0 +Coalesced [319] play_collision::i#11 ← play_collision::i#3 +Not coalescing [320] play_collision::xp#8 ← play_collision::xpos#6 +Coalesced [342] play_collision::yp#16 ← play_collision::yp#1 +Not coalescing [343] play_collision::i#10 ← play_collision::i#1 +Coalesced [344] play_collision::l#10 ← play_collision::l#1 +Not coalescing [345] play_collision::i#12 ← play_collision::i#1 +Coalesced [346] play_collision::xp#9 ← play_collision::xp#1 +Coalesced [347] play_collision::c#8 ← play_collision::c#1 +Not coalescing [353] current_piece#98 ← current_piece#15 +Coalesced [354] play_collision::orientation#8 ← play_collision::orientation#2 +Coalesced [355] play_collision::yp#12 ← play_collision::ypos#2 +Coalesced [356] play_collision::xpos#16 ← play_collision::xpos#2 +Coalesced [362] current_xpos#128 ← current_xpos#6 +Coalesced (already) [365] current_xpos#127 ← current_xpos#22 +Not coalescing [369] current_piece#97 ← current_piece#15 +Coalesced [370] play_collision::orientation#7 ← play_collision::orientation#1 +Coalesced [371] play_collision::yp#11 ← play_collision::ypos#1 +Coalesced [372] play_collision::xpos#15 ← play_collision::xpos#1 +Coalesced [378] current_xpos#129 ← current_xpos#8 +Coalesced [389] play_move_down::movedown#14 ← play_move_down::movedown#2 +Coalesced [393] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [399] current_piece#96 ← current_piece#10 +Coalesced [400] play_collision::orientation#6 ← play_collision::orientation#0 +Coalesced [401] play_collision::yp#10 ← play_collision::ypos#0 +Coalesced [402] play_collision::xpos#14 ← play_collision::xpos#0 +Coalesced (already) [415] next_piece_idx#84 ← next_piece_idx#10 +Coalesced (already) [416] game_over#91 ← game_over#10 +Coalesced [418] current_ypos#101 ← current_ypos#6 +Coalesced [419] lines_bcd#89 ← lines_bcd#17 +Coalesced [420] score_bcd#85 ← score_bcd#16 +Coalesced [421] level#105 ← level#19 +Coalesced [422] current_movedown_slow#89 ← current_movedown_slow#23 +Coalesced [423] level_bcd#102 ← level_bcd#19 +Coalesced [425] current_piece_char#103 ← current_piece_char#5 +Coalesced [427] current_xpos#124 ← current_xpos#100 +Coalesced [428] game_over#87 ← game_over#52 +Coalesced [429] next_piece_idx#80 ← next_piece_idx#18 +Coalesced (already) [431] current_ypos#102 ← current_ypos#38 +Coalesced [432] lines_bcd#90 ← lines_bcd#26 +Coalesced [433] score_bcd#86 ← score_bcd#26 +Coalesced [434] level#106 ← level#33 +Coalesced [435] current_movedown_slow#90 ← current_movedown_slow#37 +Coalesced [436] level_bcd#103 ← level_bcd#31 +Coalesced [437] current_piece#94 ← current_piece#28 +Coalesced (already) [438] current_piece_char#104 ← current_piece_char#29 +Coalesced [439] current_orientation#99 ← current_orientation#37 +Coalesced [440] current_piece_gfx#118 ← current_piece_gfx#35 +Coalesced (already) [441] current_xpos#125 ← current_xpos#43 +Coalesced (already) [442] game_over#88 ← game_over#27 +Coalesced (already) [443] next_piece_idx#81 ← next_piece_idx#30 +Coalesced [447] current_ypos#100 ← current_ypos#3 +Coalesced (already) [448] lines_bcd#88 ← lines_bcd#19 +Coalesced (already) [449] score_bcd#84 ← score_bcd#18 +Coalesced (already) [450] level#104 ← level#10 +Coalesced (already) [451] current_movedown_slow#88 ← current_movedown_slow#14 +Coalesced (already) [452] level_bcd#101 ← level_bcd#11 +Coalesced (already) [453] current_piece#92 ← current_piece#10 +Coalesced (already) [454] current_piece_char#102 ← current_piece_char#10 +Coalesced (already) [455] current_orientation#98 ← current_orientation#13 +Coalesced (already) [456] current_piece_gfx#116 ← current_piece_gfx#13 +Coalesced (already) [457] current_xpos#123 ← current_xpos#14 +Coalesced (already) [458] game_over#86 ← game_over#10 +Coalesced (already) [459] next_piece_idx#79 ← next_piece_idx#10 +Coalesced [460] current_movedown_counter#59 ← current_movedown_counter#12 +Coalesced (already) [461] current_ypos#103 ← current_ypos#11 +Coalesced (already) [462] lines_bcd#91 ← lines_bcd#19 +Coalesced (already) [463] score_bcd#87 ← score_bcd#18 +Coalesced (already) [464] level#107 ← level#10 +Coalesced (already) [465] current_movedown_slow#91 ← current_movedown_slow#14 +Coalesced (already) [466] level_bcd#104 ← level_bcd#11 +Coalesced (already) [467] current_piece#95 ← current_piece#10 +Coalesced (already) [468] current_piece_char#105 ← current_piece_char#10 +Coalesced (already) [469] current_orientation#100 ← current_orientation#13 +Coalesced (already) [470] current_piece_gfx#119 ← current_piece_gfx#13 +Coalesced (already) [471] current_xpos#126 ← current_xpos#14 +Coalesced (already) [472] game_over#89 ← game_over#10 +Coalesced (already) [473] next_piece_idx#82 ← next_piece_idx#10 +Coalesced [474] play_move_down::movedown#15 ← play_move_down::movedown#7 +Coalesced [475] play_move_down::movedown#13 ← play_move_down::movedown#10 +Coalesced (already) [476] play_move_down::movedown#12 ← play_move_down::movedown#10 +Coalesced [486] play_collision::yp#14 ← play_collision::ypos#4 +Coalesced [487] play_collision::xpos#18 ← play_collision::xpos#4 +Coalesced [496] next_piece_idx#18 ← play_spawn_current::piece_idx#2 +Coalesced [501] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced (already) [502] game_over#92 ← game_over#65 +Coalesced [517] lines_bcd#94 ← lines_bcd#29 +Coalesced [518] score_bcd#90 ← score_bcd#29 +Coalesced [519] level#110 ← level#21 +Coalesced [520] current_movedown_slow#94 ← current_movedown_slow#66 +Coalesced [521] level_bcd#107 ← level_bcd#62 +Coalesced (already) [524] lines_bcd#93 ← lines_bcd#29 +Coalesced (already) [525] score_bcd#89 ← score_bcd#29 +Coalesced (already) [526] level#109 ← level#10 +Coalesced (already) [527] current_movedown_slow#93 ← current_movedown_slow#14 +Coalesced (already) [528] level_bcd#106 ← level_bcd#11 +Coalesced (already) [529] lines_bcd#92 ← lines_bcd#19 +Coalesced (already) [530] score_bcd#88 ← score_bcd#18 +Coalesced (already) [531] level#108 ← level#10 +Coalesced (already) [532] current_movedown_slow#92 ← current_movedown_slow#14 +Coalesced (already) [533] level_bcd#105 ← level_bcd#11 +Coalesced [537] current_movedown_slow#95 ← current_movedown_slow#10 +Coalesced [543] level_bcd#109 ← level_bcd#8 +Coalesced [553] play_increase_level::b#3 ← play_increase_level::b#1 +Coalesced [554] level_bcd#108 ← level_bcd#21 +Coalesced [558] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [559] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [573] play_remove_lines::w#17 ← play_remove_lines::w#2 +Coalesced [574] play_remove_lines::removed#14 ← play_remove_lines::removed#1 +Coalesced [578] play_remove_lines::w#19 ← play_remove_lines::w#11 +Coalesced [585] play_remove_lines::w#18 ← play_remove_lines::w#3 +Coalesced [586] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [587] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [588] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [589] play_remove_lines::removed#12 ← play_remove_lines::removed#8 +Coalesced [590] play_remove_lines::w#16 ← play_remove_lines::w#1 +Coalesced (already) [591] play_remove_lines::removed#13 ← play_remove_lines::removed#11 +Coalesced (already) [592] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [593] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [594] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [595] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [596] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [598] play_lock_current::yp#7 ← play_lock_current::yp#0 +Coalesced [603] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [604] play_lock_current::xp#5 ← play_lock_current::xp#0 +Coalesced [616] play_lock_current::yp#8 ← play_lock_current::yp#1 +Not coalescing [617] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [618] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [619] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [620] play_lock_current::xp#6 ← play_lock_current::xp#1 +Coalesced [621] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [631] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [632] keyboard_events_size#91 ← keyboard_events_size#4 +Coalesced [635] keyboard_events_size#90 ← keyboard_events_size#13 +Coalesced [636] keyboard_events_size#80 ← keyboard_events_size#19 +Coalesced [644] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [645] keyboard_events_size#83 ← keyboard_events_size#30 +Coalesced [674] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 +Coalesced [675] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 +Coalesced (already) [676] keyboard_events_size#81 ← keyboard_events_size#13 +Coalesced [677] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [678] keyboard_events_size#85 ← keyboard_events_size#30 +Coalesced [688] keyboard_events_size#89 ← keyboard_events_size#2 +Coalesced [694] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced [695] keyboard_events_size#82 ← keyboard_events_size#29 +Coalesced [696] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 +Coalesced (already) [697] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 +Coalesced (already) [698] keyboard_events_size#84 ← keyboard_events_size#29 +Coalesced [702] keyboard_events_size#87 ← keyboard_events_size#1 +Coalesced (already) [703] keyboard_events_size#88 ← keyboard_events_size#10 +Coalesced (already) [704] keyboard_events_size#86 ← keyboard_events_size#10 +Coalesced [740] play_init::b#3 ← play_init::b#1 +Coalesced [741] play_init::j#3 ← play_init::j#1 +Coalesced [742] play_init::pli#3 ← play_init::pli#1 +Coalesced [743] play_init::idx#3 ← play_init::idx#1 +Coalesced [768] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [769] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [795] render_init::i#3 ← render_init::i#1 +Coalesced [796] render_init::li_1#3 ← render_init::li_1#1 +Coalesced [797] render_init::li_2#3 ← render_init::li_2#1 +Coalesced [799] render_screen_original::screen#11 ← render_screen_original::screen#9 +Coalesced [801] render_screen_original::screen#13 ← render_screen_original::screen#8 +Coalesced [802] render_screen_original::cols#10 ← render_screen_original::cols#7 +Coalesced [810] render_screen_original::oscr#8 ← render_screen_original::oscr#4 +Coalesced [811] render_screen_original::screen#15 ← render_screen_original::screen#2 +Coalesced [812] render_screen_original::ocols#8 ← render_screen_original::ocols#4 +Coalesced [813] render_screen_original::cols#12 ← render_screen_original::cols#1 +Coalesced [814] render_screen_original::x#8 ← render_screen_original::x#1 +Coalesced [824] render_screen_original::screen#17 ← render_screen_original::screen#3 +Coalesced [825] render_screen_original::cols#14 ← render_screen_original::cols#2 +Coalesced [826] render_screen_original::x#10 ← render_screen_original::x#2 +Coalesced [837] render_screen_original::screen#12 ← render_screen_original::screen#10 +Coalesced [838] render_screen_original::cols#9 ← render_screen_original::cols#3 +Coalesced [839] render_screen_original::oscr#7 ← render_screen_original::oscr#1 +Coalesced [840] render_screen_original::ocols#7 ← render_screen_original::ocols#1 +Coalesced [841] render_screen_original::y#7 ← render_screen_original::y#1 +Coalesced [842] render_screen_original::screen#18 ← render_screen_original::screen#10 +Coalesced [843] render_screen_original::cols#15 ← render_screen_original::cols#3 +Coalesced [844] render_screen_original::x#11 ← render_screen_original::x#3 +Coalesced (already) [845] render_screen_original::oscr#9 ← render_screen_original::oscr#1 +Coalesced [846] render_screen_original::screen#16 ← render_screen_original::screen#3 +Coalesced (already) [847] render_screen_original::ocols#9 ← render_screen_original::ocols#1 +Coalesced [848] render_screen_original::cols#13 ← render_screen_original::cols#2 +Coalesced [849] render_screen_original::x#9 ← render_screen_original::x#2 +Coalesced (already) [850] render_screen_original::screen#14 ← render_screen_original::screen#2 +Coalesced (already) [851] render_screen_original::cols#11 ← render_screen_original::cols#1 +Coalesced [852] render_screen_original::x#7 ← render_screen_original::x#1 +Coalesced [879] irq_raster_next#27 ← irq_raster_next#3 +Coalesced [888] irq_raster_next#26 ← irq_raster_next#2 +Coalesced [894] irq_raster_next#25 ← irq_raster_next#1 Coalesced down to 95 phi equivalence classes Culled Empty Block (label) @5 Culled Empty Block (label) @9 @@ -11633,6 +11632,7 @@ FINAL CONTROL FLOW GRAPH to:@1 @1: scope:[] from @begin [1] (byte) render_screen_showing#0 ← (byte) 0 + [2] (dword) score_bcd#0 ← (byte) 0 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -11666,1185 +11666,1185 @@ FINAL CONTROL FLOW GRAPH }} to:@3 @3: scope:[] from @2 - [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 + [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 to:toSpritePtr1 toSpritePtr1: scope:[] from @3 - [8] phi() + [9] phi() to:@5 @5: scope:[] from toSpritePtr1 - [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 - [10] (byte) irq_cnt#0 ← (byte) 0 + [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 + [11] (byte) irq_cnt#0 ← (byte) 0 to:@4 @4: scope:[] from @5 - [11] phi() - [12] call main + [12] phi() + [13] call main to:@end @end: scope:[] from @4 - [13] phi() -main: scope:[main] from @4 [14] phi() - [15] call sid_rnd_init +main: scope:[main] from @4 + [15] phi() + [16] call sid_rnd_init to:main::@8 main::@8: scope:[main] from main asm { sei } - [17] call render_init + [18] call render_init to:main::@9 main::@9: scope:[main] from main::@8 - [18] phi() - [19] call sprites_init + [19] phi() + [20] call sprites_init to:main::@10 main::@10: scope:[main] from main::@9 - [20] phi() - [21] call sprites_irq_init + [21] phi() + [22] call sprites_irq_init to:main::@11 main::@11: scope:[main] from main::@10 - [22] phi() - [23] call play_init + [23] phi() + [24] call play_init to:main::@12 main::@12: scope:[main] from main::@11 - [24] phi() - [25] call play_spawn_current + [25] phi() + [26] call play_spawn_current to:main::@13 main::@13: scope:[main] from main::@12 - [26] phi() - [27] call play_spawn_current + [27] phi() + [28] call play_spawn_current to:main::@14 main::@14: scope:[main] from main::@13 - [28] phi() - [29] call render_playfield + [29] phi() + [30] call render_playfield to:main::@15 main::@15: scope:[main] from main::@14 - [30] (byte~) current_ypos#98 ← (byte) current_ypos#6 - [31] (byte~) current_xpos#119 ← (byte) current_xpos#100 - [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [33] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 - [34] call render_moving + [31] (byte~) current_ypos#98 ← (byte) current_ypos#6 + [32] (byte~) current_xpos#119 ← (byte) current_xpos#100 + [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 + [35] call render_moving to:main::@16 main::@16: scope:[main] from main::@15 - [35] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 - [36] call render_next + [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 + [37] call render_next to:main::@17 main::@17: scope:[main] from main::@16 - [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) to:main::@1 main::@1: scope:[main] from main::@17 main::@25 main::@6 - [39] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@17/(byte) 0 main::@25/(byte) level_bcd#17 ) - [39] (byte) level#10 ← phi( main::@6/(byte) level#17 main::@17/(byte) 0 main::@25/(byte) level#17 ) - [39] (dword) score_bcd#18 ← phi( main::@6/(dword) score_bcd#14 main::@17/(byte) 0 main::@25/(dword) score_bcd#14 ) - [39] (word) lines_bcd#19 ← phi( main::@6/(word) lines_bcd#15 main::@17/(byte) 0 main::@25/(word) lines_bcd#15 ) - [39] (byte) current_movedown_counter#16 ← phi( main::@6/(byte) current_movedown_counter#14 main::@17/(byte) 0 main::@25/(byte) current_movedown_counter#14 ) - [39] (byte) keyboard_events_size#19 ← phi( main::@6/(byte) keyboard_events_size#16 main::@17/(byte) 0 main::@25/(byte) keyboard_events_size#16 ) - [39] (byte) next_piece_idx#10 ← phi( main::@6/(byte) next_piece_idx#16 main::@17/(byte) play_spawn_current::piece_idx#2 main::@25/(byte) next_piece_idx#16 ) - [39] (byte) game_over#10 ← phi( main::@6/(byte) game_over#15 main::@17/(byte) game_over#52 main::@25/(byte) game_over#15 ) - [39] (byte) current_ypos#11 ← phi( main::@6/(byte) current_ypos#19 main::@17/(byte) current_ypos#6 main::@25/(byte) current_ypos#19 ) - [39] (byte) current_xpos#14 ← phi( main::@6/(byte) current_xpos#19 main::@17/(byte) current_xpos#100 main::@25/(byte) current_xpos#19 ) - [39] (byte*) current_piece_gfx#13 ← phi( main::@6/(byte*) current_piece_gfx#18 main::@17/(byte*~) current_piece_gfx#124 main::@25/(byte*) current_piece_gfx#18 ) - [39] (byte) current_orientation#13 ← phi( main::@6/(byte) current_orientation#17 main::@17/(byte) 0 main::@25/(byte) current_orientation#17 ) - [39] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@17/(byte) current_piece_char#5 main::@25/(byte) current_piece_char#16 ) - [39] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@17/(byte*~) current_piece#102 main::@25/(byte*) current_piece#15 ) - [39] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@17/(byte) current_movedown_slow#1 main::@25/(byte) current_movedown_slow#21 ) - [39] (byte) render_screen_render#18 ← phi( main::@17/(byte) $20 main::@25/(byte) render_screen_render#11 ) - [39] (byte) render_screen_show#16 ← phi( main::@17/(byte) 0 main::@25/(byte) render_screen_show#13 ) + [40] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@17/(byte) 0 main::@25/(byte) level_bcd#17 ) + [40] (byte) level#10 ← phi( main::@6/(byte) level#17 main::@17/(byte) 0 main::@25/(byte) level#17 ) + [40] (dword) score_bcd#18 ← phi( main::@6/(dword) score_bcd#14 main::@17/(dword) score_bcd#0 main::@25/(dword) score_bcd#14 ) + [40] (word) lines_bcd#19 ← phi( main::@6/(word) lines_bcd#15 main::@17/(byte) 0 main::@25/(word) lines_bcd#15 ) + [40] (byte) current_movedown_counter#16 ← phi( main::@6/(byte) current_movedown_counter#14 main::@17/(byte) 0 main::@25/(byte) current_movedown_counter#14 ) + [40] (byte) keyboard_events_size#19 ← phi( main::@6/(byte) keyboard_events_size#16 main::@17/(byte) 0 main::@25/(byte) keyboard_events_size#16 ) + [40] (byte) next_piece_idx#10 ← phi( main::@6/(byte) next_piece_idx#16 main::@17/(byte) play_spawn_current::piece_idx#2 main::@25/(byte) next_piece_idx#16 ) + [40] (byte) game_over#10 ← phi( main::@6/(byte) game_over#15 main::@17/(byte) game_over#52 main::@25/(byte) game_over#15 ) + [40] (byte) current_ypos#11 ← phi( main::@6/(byte) current_ypos#19 main::@17/(byte) current_ypos#6 main::@25/(byte) current_ypos#19 ) + [40] (byte) current_xpos#14 ← phi( main::@6/(byte) current_xpos#19 main::@17/(byte) current_xpos#100 main::@25/(byte) current_xpos#19 ) + [40] (byte*) current_piece_gfx#13 ← phi( main::@6/(byte*) current_piece_gfx#18 main::@17/(byte*~) current_piece_gfx#124 main::@25/(byte*) current_piece_gfx#18 ) + [40] (byte) current_orientation#13 ← phi( main::@6/(byte) current_orientation#17 main::@17/(byte) 0 main::@25/(byte) current_orientation#17 ) + [40] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@17/(byte) current_piece_char#5 main::@25/(byte) current_piece_char#16 ) + [40] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@17/(byte*~) current_piece#102 main::@25/(byte*) current_piece#15 ) + [40] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@17/(byte) current_movedown_slow#1 main::@25/(byte) current_movedown_slow#21 ) + [40] (byte) render_screen_render#18 ← phi( main::@17/(byte) $20 main::@25/(byte) render_screen_render#11 ) + [40] (byte) render_screen_show#16 ← phi( main::@17/(byte) 0 main::@25/(byte) render_screen_show#13 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 + [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 - [41] phi() - [42] call render_show + [42] phi() + [43] call render_show to:main::@18 main::@18: scope:[main] from main::@3 - [43] phi() - [44] call keyboard_event_scan + [44] phi() + [45] call keyboard_event_scan to:main::@19 main::@19: scope:[main] from main::@18 - [45] phi() - [46] call keyboard_event_get - [47] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + [46] phi() + [47] call keyboard_event_get + [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@20 main::@20: scope:[main] from main::@19 - [48] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [49] if((byte) game_over#10==(byte) 0) goto main::@4 + [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [50] if((byte) game_over#10==(byte) 0) goto main::@4 to:main::@5 main::@5: scope:[main] from main::@20 main::@5 - [50] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) to:main::@5 main::@4: scope:[main] from main::@20 - [51] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 - [52] call play_movement - [53] (byte) play_movement::return#3 ← (byte) play_movement::return#2 + [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 + [53] call play_movement + [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2 to:main::@21 main::@21: scope:[main] from main::@4 - [54] (byte) main::render#1 ← (byte) play_movement::return#3 + [55] (byte) main::render#1 ← (byte) play_movement::return#3 to:main::@6 main::@6: scope:[main] from main::@21 - [55] if((byte) main::render#1==(byte) 0) goto main::@1 + [56] if((byte) main::render#1==(byte) 0) goto main::@1 to:main::@7 main::@7: scope:[main] from main::@6 - [56] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 - [57] call render_playfield + [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 + [58] call render_playfield to:main::@22 main::@22: scope:[main] from main::@7 - [58] (byte~) current_ypos#99 ← (byte) current_ypos#19 - [59] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 - [60] (byte~) current_xpos#120 ← (byte) current_xpos#19 - [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 - [62] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 - [63] call render_moving + [59] (byte~) current_ypos#99 ← (byte) current_ypos#19 + [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 + [61] (byte~) current_xpos#120 ← (byte) current_xpos#19 + [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 + [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 + [64] call render_moving to:main::@23 main::@23: scope:[main] from main::@22 - [64] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 - [65] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 - [66] call render_next + [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 + [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 + [67] call render_next to:main::@24 main::@24: scope:[main] from main::@23 - [67] phi() - [68] call render_score + [68] phi() + [69] call render_score to:main::@25 main::@25: scope:[main] from main::@24 - [69] phi() - [70] call render_screen_swap + [70] phi() + [71] call render_screen_swap to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@25 - [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 - [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 + [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 + [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [73] return + [74] return to:@return render_score: scope:[render_score] from main::@24 - [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 + [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 to:render_score::@2 render_score::@1: scope:[render_score] from render_score - [75] phi() + [76] phi() to:render_score::@2 render_score::@2: scope:[render_score] from render_score render_score::@1 - [76] (byte*) render_score::screen#3 ← phi( render_score::@1/(const byte*) PLAYFIELD_SCREEN_1#0 render_score/(const byte*) PLAYFIELD_SCREEN_2#0 ) - [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 - [78] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) - [79] call render_bcd + [77] (byte*) render_score::screen#3 ← phi( render_score::@1/(const byte*) PLAYFIELD_SCREEN_1#0 render_score/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 + [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) + [80] call render_bcd to:render_score::@3 render_score::@3: scope:[render_score] from render_score::@2 - [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 - [81] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) - [82] call render_bcd + [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 + [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) + [83] call render_bcd to:render_score::@4 render_score::@4: scope:[render_score] from render_score::@3 - [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 - [84] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) - [85] call render_bcd + [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 + [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) + [86] call render_bcd to:render_score::@5 render_score::@5: scope:[render_score] from render_score::@4 - [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 - [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 - [88] call render_bcd + [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 + [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 + [89] call render_bcd to:render_score::@6 render_score::@6: scope:[render_score] from render_score::@5 - [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 - [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 - [91] call render_bcd + [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 + [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 + [92] call render_bcd to:render_score::@7 render_score::@7: scope:[render_score] from render_score::@6 - [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 - [93] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 - [94] call render_bcd + [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 + [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 + [95] call render_bcd to:render_score::@return render_score::@return: scope:[render_score] from render_score::@7 - [95] return + [96] return to:@return render_bcd: scope:[render_bcd] from render_score::@2 render_score::@3 render_score::@4 render_score::@5 render_score::@6 render_score::@7 - [96] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@3/(byte) render_bcd::bcd#1 render_score::@4/(byte) render_bcd::bcd#2 render_score::@5/(byte) render_bcd::bcd#3 render_score::@6/(byte) render_bcd::bcd#4 render_score::@7/(byte) render_bcd::bcd#5 ) - [96] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) 0 render_score::@3/(byte) 0 render_score::@4/(byte) 0 render_score::@5/(byte) 1 render_score::@6/(byte) 0 render_score::@7/(byte) 0 ) - [96] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@3/(const word) render_score::score_offset#0+(byte) 2 render_score::@4/(const word) render_score::score_offset#0+(byte) 4 render_score::@5/(const word) render_score::lines_offset#0 render_score::@6/(const word) render_score::lines_offset#0+(byte) 1 render_score::@7/(const word) render_score::level_offset#0 ) - [96] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@3/(byte*) render_bcd::screen#1 render_score::@4/(byte*) render_bcd::screen#2 render_score::@5/(byte*) render_bcd::screen#3 render_score::@6/(byte*) render_bcd::screen#4 render_score::@7/(byte*) render_bcd::screen#5 ) - [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 - [98] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 + [97] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@3/(byte) render_bcd::bcd#1 render_score::@4/(byte) render_bcd::bcd#2 render_score::@5/(byte) render_bcd::bcd#3 render_score::@6/(byte) render_bcd::bcd#4 render_score::@7/(byte) render_bcd::bcd#5 ) + [97] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) 0 render_score::@3/(byte) 0 render_score::@4/(byte) 0 render_score::@5/(byte) 1 render_score::@6/(byte) 0 render_score::@7/(byte) 0 ) + [97] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@3/(const word) render_score::score_offset#0+(byte) 2 render_score::@4/(const word) render_score::score_offset#0+(byte) 4 render_score::@5/(const word) render_score::lines_offset#0 render_score::@6/(const word) render_score::lines_offset#0+(byte) 1 render_score::@7/(const word) render_score::level_offset#0 ) + [97] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@3/(byte*) render_bcd::screen#1 render_score::@4/(byte*) render_bcd::screen#2 render_score::@5/(byte*) render_bcd::screen#3 render_score::@6/(byte*) render_bcd::screen#4 render_score::@7/(byte*) render_bcd::screen#5 ) + [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 + [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 to:render_bcd::@2 render_bcd::@2: scope:[render_bcd] from render_bcd - [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 - [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 - [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 - [102] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 + [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 + [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 + [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 + [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 to:render_bcd::@1 render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2 - [103] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) - [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f - [105] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 - [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 + [104] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) + [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f + [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 + [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 to:render_bcd::@return render_bcd::@return: scope:[render_bcd] from render_bcd::@1 - [107] return + [108] return to:@return render_next: scope:[render_next] from main::@16 main::@23 - [108] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#77 main::@23/(byte~) next_piece_idx#78 ) - [108] (byte) render_screen_render#15 ← phi( main::@16/(byte) $20 main::@23/(byte~) render_screen_render#66 ) - [109] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 + [109] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#77 main::@23/(byte~) next_piece_idx#78 ) + [109] (byte) render_screen_render#15 ← phi( main::@16/(byte) $20 main::@23/(byte~) render_screen_render#66 ) + [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 to:render_next::@2 render_next::@1: scope:[render_next] from render_next - [110] phi() + [111] phi() to:render_next::@2 render_next::@2: scope:[render_next] from render_next render_next::@1 - [111] (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) - [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 - [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) - [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) + [112] (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) + [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 + [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) + [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) to:render_next::@3 render_next::@3: scope:[render_next] from render_next::@2 render_next::@8 - [115] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@2/(byte) 0 ) - [115] (byte*) render_next::screen_next_area#10 ← phi( render_next::@8/(byte*) render_next::screen_next_area#4 render_next::@2/(byte*) render_next::screen_next_area#11 ) - [115] (byte*) render_next::next_piece_gfx#3 ← phi( render_next::@8/(byte*) render_next::next_piece_gfx#1 render_next::@2/(byte*~) render_next::next_piece_gfx#9 ) + [116] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@2/(byte) 0 ) + [116] (byte*) render_next::screen_next_area#10 ← phi( render_next::@8/(byte*) render_next::screen_next_area#4 render_next::@2/(byte*) render_next::screen_next_area#11 ) + [116] (byte*) render_next::next_piece_gfx#3 ← phi( render_next::@8/(byte*) render_next::next_piece_gfx#1 render_next::@2/(byte*~) render_next::next_piece_gfx#9 ) to:render_next::@4 render_next::@4: scope:[render_next] from render_next::@3 render_next::@6 - [116] (byte) render_next::c#2 ← phi( render_next::@3/(byte) 0 render_next::@6/(byte) render_next::c#1 ) - [116] (byte*) render_next::screen_next_area#5 ← phi( render_next::@3/(byte*) render_next::screen_next_area#10 render_next::@6/(byte*) render_next::screen_next_area#3 ) - [116] (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@3/(byte*) render_next::next_piece_gfx#3 render_next::@6/(byte*) render_next::next_piece_gfx#1 ) - [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) - [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 - [119] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 + [117] (byte) render_next::c#2 ← phi( render_next::@3/(byte) 0 render_next::@6/(byte) render_next::c#1 ) + [117] (byte*) render_next::screen_next_area#5 ← phi( render_next::@3/(byte*) render_next::screen_next_area#10 render_next::@6/(byte*) render_next::screen_next_area#3 ) + [117] (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@3/(byte*) render_next::next_piece_gfx#3 render_next::@6/(byte*) render_next::next_piece_gfx#1 ) + [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) + [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 + [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 to:render_next::@7 render_next::@7: scope:[render_next] from render_next::@4 - [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 + [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 to:render_next::@6 render_next::@6: scope:[render_next] from render_next::@5 render_next::@7 - [121] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 - [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 - [123] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 + [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 + [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 + [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 to:render_next::@8 render_next::@8: scope:[render_next] from render_next::@6 - [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 - [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 - [126] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 + [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 + [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 + [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 to:render_next::@return render_next::@return: scope:[render_next] from render_next::@8 - [127] return + [128] return to:@return render_next::@5: scope:[render_next] from render_next::@4 - [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 + [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 to:render_next::@6 render_moving: scope:[render_moving] from main::@15 main::@22 - [129] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#100 main::@22/(byte~) current_piece_char#101 ) - [129] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#112 main::@22/(byte*~) current_piece_gfx#113 ) - [129] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#119 main::@22/(byte~) current_xpos#120 ) - [129] (byte) render_screen_render#33 ← phi( main::@15/(byte) $20 main::@22/(byte~) render_screen_render#65 ) - [129] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#98 main::@22/(byte~) current_ypos#99 ) - [130] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 + [130] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#100 main::@22/(byte~) current_piece_char#101 ) + [130] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#112 main::@22/(byte*~) current_piece_gfx#113 ) + [130] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#119 main::@22/(byte~) current_xpos#120 ) + [130] (byte) render_screen_render#33 ← phi( main::@15/(byte) $20 main::@22/(byte~) render_screen_render#65 ) + [130] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#98 main::@22/(byte~) current_ypos#99 ) + [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 - [131] (byte) render_moving::l#4 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::l#1 ) - [131] (byte) render_moving::i#3 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::i#8 ) - [131] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) - [132] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 + [132] (byte) render_moving::l#4 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::l#1 ) + [132] (byte) render_moving::i#3 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::i#8 ) + [132] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) + [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 - [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 + [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 - [134] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) - [135] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 - [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 - [137] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 + [135] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) + [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 + [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 + [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 to:render_moving::@return render_moving::@return: scope:[render_moving] from render_moving::@3 - [138] return + [139] return to:@return render_moving::@2: scope:[render_moving] from render_moving::@1 - [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 - [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 - [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) - [142] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 + [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 + [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 + [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) + [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [143] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte) 0 render_moving::@5/(byte) render_moving::c#1 ) - [143] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [143] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) - [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) - [145] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 - [146] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 + [144] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte) 0 render_moving::@5/(byte) render_moving::c#1 ) + [144] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [144] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) + [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) + [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 + [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 to:render_moving::@6 render_moving::@6: scope:[render_moving] from render_moving::@4 - [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 + [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6 - [148] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [149] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [150] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 + [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 to:render_moving::@3 render_playfield: scope:[render_playfield] from main::@14 main::@7 - [151] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#64 main::@14/(byte) $20 ) + [152] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#64 main::@14/(byte) $20 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [152] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [152] (byte) render_playfield::l#2 ← phi( render_playfield/(byte) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 - [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 - [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) + [153] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [153] (byte) render_playfield::l#2 ← phi( render_playfield/(byte) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 + [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 + [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [156] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [156] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [156] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [158] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [159] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [160] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [161] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 + [157] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [157] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [157] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [162] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [163] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 + [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [164] return + [165] return to:@return play_movement: scope:[play_movement] from main::@4 - [165] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 - [166] call play_move_down - [167] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [167] call play_move_down + [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:play_movement::@2 play_movement::@2: scope:[play_movement] from play_movement - [168] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 - [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 + [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 + [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 to:play_movement::@return play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@4 - [170] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) - [170] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) - [170] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) - [170] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) - [171] return + [171] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) + [171] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) + [171] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) + [171] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) + [172] return to:@return play_movement::@1: scope:[play_movement] from play_movement::@2 - [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 - [173] call play_move_leftright - [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [174] call play_move_leftright + [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:play_movement::@3 play_movement::@3: scope:[play_movement] from play_movement::@1 - [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 - [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 - [178] call play_move_rotate - [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [179] call play_move_rotate + [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:play_movement::@4 play_movement::@4: scope:[play_movement] from play_movement::@3 - [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 to:play_movement::@return play_move_rotate: scope:[play_move_rotate] from play_movement::@3 - [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate - [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@4 play_move_rotate::@5 play_move_rotate::@6 - [184] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) - [184] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) - [184] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte) 1 play_move_rotate::@6/(byte) 0 play_move_rotate::@4/(byte) 0 ) - [185] return + [185] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) + [185] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) + [185] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte) 1 play_move_rotate::@6/(byte) 0 play_move_rotate::@4/(byte) 0 ) + [186] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@4 - [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 - [187] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f + [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 + [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f to:play_move_rotate::@3 play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [188] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 - [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 - [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 - [193] call play_collision - [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + [189] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 + [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 + [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 + [194] call play_collision + [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@3 - [195] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - [196] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@5 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@6 - [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 - [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 + [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 - [200] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f + [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 + [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f to:play_move_rotate::@3 play_collision: scope:[play_collision] from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current - [201] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) - [201] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) - [201] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte) 0 ) - [201] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#96 play_move_leftright::@1/(byte*~) current_piece#97 play_move_leftright::@3/(byte*~) current_piece#98 play_move_rotate::@3/(byte*~) current_piece#99 play_spawn_current/(byte*~) current_piece#100 ) - [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 + [202] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) + [202] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) + [202] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte) 0 ) + [202] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#96 play_move_leftright::@1/(byte*~) current_piece#97 play_move_leftright::@3/(byte*~) current_piece#98 play_move_rotate::@3/(byte*~) current_piece#99 play_spawn_current/(byte*~) current_piece#100 ) + [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@9 - [203] (byte) play_collision::l#6 ← phi( play_collision/(byte) 0 play_collision::@9/(byte) play_collision::l#1 ) - [203] (byte) play_collision::i#3 ← phi( play_collision/(byte) 0 play_collision::@9/(byte~) play_collision::i#10 ) - [203] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) - [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 - [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) - [206] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 + [204] (byte) play_collision::l#6 ← phi( play_collision/(byte) 0 play_collision::@9/(byte) play_collision::l#1 ) + [204] (byte) play_collision::i#3 ← phi( play_collision/(byte) 0 play_collision::@9/(byte~) play_collision::i#10 ) + [204] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) + [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 + [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) + [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@10 - [207] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte) 0 play_collision::@10/(byte) play_collision::c#1 ) - [207] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#8 play_collision::@10/(byte) play_collision::xp#1 ) - [207] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#12 ) - [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 + [208] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte) 0 play_collision::@10/(byte) play_collision::c#1 ) + [208] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#8 play_collision::@10/(byte) play_collision::xp#1 ) + [208] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#12 ) + [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 to:play_collision::@7 play_collision::@7: scope:[play_collision] from play_collision::@2 - [210] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@4: scope:[play_collision] from play_collision::@7 - [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 - [212] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 + [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 + [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [213] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 + [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8 - [215] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) - [216] return + [216] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) + [217] return to:@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [217] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 - [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [219] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 + [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 + [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@3 - [220] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 - [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [222] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 + [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 + [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 to:play_collision::@return play_collision::@9: scope:[play_collision] from play_collision::@8 - [223] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 + [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@10: scope:[play_collision] from play_collision::@3 - [224] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 + [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from play_movement::@1 - [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@2 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright - [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@3 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@2 - [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 - [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 - [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 - [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 - [231] call play_collision - [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 + [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 + [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 + [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 + [232] call play_collision + [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@3 - [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@4 play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@7 - [235] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 + [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7 - [236] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) - [236] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte) 0 play_move_leftright::@4/(byte) 1 play_move_leftright::@5/(byte) 1 play_move_leftright::@7/(byte) 0 play_move_leftright::@2/(byte) 0 ) - [237] return + [237] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) + [237] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte) 0 play_move_leftright::@4/(byte) 1 play_move_leftright::@5/(byte) 1 play_move_leftright::@7/(byte) 0 play_move_leftright::@2/(byte) 0 ) + [238] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 - [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 - [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 - [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 - [242] call play_collision - [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 + [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 + [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 + [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 + [243] call play_collision + [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@1 - [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@5 play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@6 - [246] (byte) current_xpos#8 ← -- (byte) current_xpos#22 + [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from play_movement - [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 - [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down - [249] phi() + [250] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@4 - [250] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte) 0 play_move_down::@4/(byte) 1 ) - [251] call keyboard_event_pressed - [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [251] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte) 0 play_move_down::@4/(byte) 1 ) + [252] call keyboard_event_pressed + [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@1 - [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [254] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 + [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 to:play_move_down::@5 play_move_down::@5: scope:[play_move_down] from play_move_down::@12 - [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@6 play_move_down::@6: scope:[play_move_down] from play_move_down::@5 - [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@12 play_move_down::@5 play_move_down::@6 - [257] (byte) play_move_down::movedown#7 ← phi( play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) - [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 + [258] (byte) play_move_down::movedown#7 ← phi( play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) + [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@2 - [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@3 play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@7 - [260] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) - [261] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return + [261] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) + [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down::@3 - [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 - [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 - [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 - [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 - [266] call play_collision - [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 + [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 + [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 + [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 + [267] call play_collision + [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@8 - [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 + [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@13 - [270] phi() - [271] call play_lock_current + [271] phi() + [272] call play_lock_current to:play_move_down::@14 play_move_down::@14: scope:[play_move_down] from play_move_down::@9 - [272] phi() - [273] call play_remove_lines - [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 + [273] phi() + [274] call play_remove_lines + [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 to:play_move_down::@15 play_move_down::@15: scope:[play_move_down] from play_move_down::@14 - [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [277] call play_update_score + [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [278] call play_update_score to:play_move_down::@16 play_move_down::@16: scope:[play_move_down] from play_move_down::@15 - [278] phi() - [279] call play_spawn_current + [279] phi() + [280] call play_spawn_current to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@16 - [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 - [282] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@17/(byte) play_spawn_current::piece_idx#2 ) - [282] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@17/(byte) game_over#52 ) - [282] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#14 play_move_down::@17/(byte) current_xpos#100 ) - [282] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#13 play_move_down::@17/(byte*~) current_piece_gfx#117 ) - [282] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@17/(byte) 0 ) - [282] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@17/(byte) current_piece_char#5 ) - [282] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@17/(byte*~) current_piece#93 ) - [282] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@17/(byte) level_bcd#19 ) - [282] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@17/(byte) current_movedown_slow#23 ) - [282] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@17/(byte) level#19 ) - [282] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@17/(dword) score_bcd#16 ) - [282] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@17/(word) lines_bcd#17 ) - [282] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@17/(byte) current_ypos#6 ) + [283] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@17/(byte) play_spawn_current::piece_idx#2 ) + [283] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@17/(byte) game_over#52 ) + [283] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#14 play_move_down::@17/(byte) current_xpos#100 ) + [283] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#13 play_move_down::@17/(byte*~) current_piece_gfx#117 ) + [283] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@17/(byte) 0 ) + [283] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@17/(byte) current_piece_char#5 ) + [283] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@17/(byte*~) current_piece#93 ) + [283] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@17/(byte) level_bcd#19 ) + [283] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@17/(byte) current_movedown_slow#23 ) + [283] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@17/(byte) level#19 ) + [283] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@17/(dword) score_bcd#16 ) + [283] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@17/(word) lines_bcd#17 ) + [283] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@17/(byte) current_ypos#6 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@11 play_move_down::@3 - [283] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) - [283] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) - [283] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#14 ) - [283] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#13 ) - [283] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) - [283] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) - [283] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) - [283] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) - [283] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) - [283] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) - [283] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) - [283] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) - [283] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#11 ) - [283] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) - [283] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte) 1 play_move_down::@3/(byte) 0 ) - [284] return + [284] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) + [284] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) + [284] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#14 ) + [284] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#13 ) + [284] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) + [284] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) + [284] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) + [284] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) + [284] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) + [284] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) + [284] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) + [284] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) + [284] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#11 ) + [284] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) + [284] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte) 1 play_move_down::@3/(byte) 0 ) + [285] return to:@return play_move_down::@10: scope:[play_move_down] from play_move_down::@13 - [285] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 + [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 to:play_move_down::@11 play_spawn_current: scope:[play_spawn_current] from main::@12 main::@13 play_move_down::@16 - [286] (byte) game_over#65 ← phi( main::@12/(byte) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) - [286] (byte) next_piece_idx#17 ← phi( main::@12/(byte) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) - [287] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 - [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 - [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) - [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) - [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) - [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 - [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 - [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) - [295] call play_collision - [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + [287] (byte) game_over#65 ← phi( main::@12/(byte) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) + [287] (byte) next_piece_idx#17 ← phi( main::@12/(byte) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) + [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 + [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 + [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) + [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) + [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) + [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 + [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 + [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) + [296] call play_collision + [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15 to:play_spawn_current::@4 play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current - [297] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 - [298] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 + [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 to:play_spawn_current::@1 play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@4 - [299] phi() + [300] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@5 - [300] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte) 1 ) + [301] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte) 1 ) to:play_spawn_current::@2 play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@3 - [301] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) - [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 + [302] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) + [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@2 - [303] return + [304] return to:@return play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@2 - [304] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::sid_rnd1 - [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 + [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 to:play_spawn_current::@2 play_update_score: scope:[play_update_score] from play_move_down::@15 - [306] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return + [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return to:play_update_score::@1 play_update_score::@1: scope:[play_update_score] from play_update_score - [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 - [308] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 - [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 - [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) + [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 + [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 + [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) asm { sed } - [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 - [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 + [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 - [316] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 - [317] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 + [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 + [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@2 play_update_score::@2: scope:[play_update_score] from play_update_score::@1 - [318] phi() - [319] call play_increase_level + [319] phi() + [320] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@2 - [320] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#62 ) - [320] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#66 ) - [320] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) - [320] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#29 ) - [320] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#29 ) - [321] return + [321] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#62 ) + [321] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#66 ) + [321] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) + [321] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#29 ) + [321] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#29 ) + [322] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@2 - [322] (byte) level#21 ← ++ (byte) level#10 - [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 + [323] (byte) level#21 ← ++ (byte) level#10 + [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level - [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) + [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) to:play_increase_level::@1 play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@3 - [325] (byte) current_movedown_slow#66 ← phi( play_increase_level/(byte) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) - [326] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 - [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f - [328] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 + [326] (byte) current_movedown_slow#66 ← phi( play_increase_level/(byte) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) + [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f + [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@1 - [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 + [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4 - [330] (byte) level_bcd#62 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) + [331] (byte) level_bcd#62 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5 - [332] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) - [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 - [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) - [335] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [336] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 + [333] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) + [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 + [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) + [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 to:play_increase_level::@6 play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@5 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@6 - [338] return + [339] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@14 - [339] phi() + [340] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@6 - [340] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) - [340] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) - [340] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [340] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) + [341] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) + [341] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) + [341] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [341] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [341] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [341] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [341] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [341] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [342] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [343] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [344] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 + [342] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [342] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [342] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [342] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 to:play_remove_lines::@3 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@2 - [345] phi() + [346] phi() to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@9 - [346] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte) 0 ) - [347] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [348] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [349] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [350] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 + [347] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte) 0 ) + [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@3 - [351] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 + [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 - [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [353] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@6 play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@5 - [354] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) - [354] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) - [355] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [356] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 + [355] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) + [355] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) + [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 to:play_remove_lines::@7 play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@6 play_remove_lines::@8 - [357] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [358] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 + [358] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@7 - [359] return + [360] return to:@return play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7 - [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 - [361] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 + [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@7 play_lock_current: scope:[play_lock_current] from play_move_down::@9 - [362] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 + [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@6 - [363] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) - [363] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) - [363] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) - [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 - [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) - [366] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 + [364] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) + [364] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) + [364] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) + [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 + [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) + [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@7 - [367] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) - [367] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) - [367] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) - [368] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 + [368] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) + [368] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) + [368] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) + [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 + [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [371] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 - [372] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [373] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 + [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 + [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [374] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 - [375] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [376] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 + [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 + [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [377] return + [378] return to:@return play_lock_current::@6: scope:[play_lock_current] from play_lock_current::@5 - [378] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@3 - [379] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1 - [380] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 - [382] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 - [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [381] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 + [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 + [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [385] return + [386] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@19 - [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return + [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return to:keyboard_event_get::@1 keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get - [387] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@1 - [389] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) - [389] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) - [390] return + [390] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) + [390] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) + [391] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@18 - [391] phi() + [392] phi() to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [392] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) - [392] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) - [392] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) - [393] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [394] call keyboard_matrix_read - [395] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [393] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) + [393] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) + [393] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) + [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [395] call keyboard_matrix_read + [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@7 - [396] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 + [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@19 - [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 + [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 to:keyboard_event_scan::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [399] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) - [399] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) - [400] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 + [400] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) + [400] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) + [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@8 - [402] phi() - [403] call keyboard_event_pressed - [404] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [403] phi() + [404] call keyboard_event_pressed + [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@17 - [405] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - [406] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 + [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 to:keyboard_event_scan::@18 keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [407] phi() + [408] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@20 - [408] phi() - [409] call keyboard_event_pressed - [410] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [409] phi() + [410] call keyboard_event_pressed + [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [411] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - [412] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 + [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 to:keyboard_event_scan::@4 keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@21 - [413] phi() + [414] phi() to:keyboard_event_scan::@2 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@4 - [414] phi() - [415] call keyboard_event_pressed - [416] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [415] phi() + [416] call keyboard_event_pressed + [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@2 - [417] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - [418] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 + [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@22 - [419] phi() + [420] phi() to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@5 - [420] phi() - [421] call keyboard_event_pressed - [422] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [421] phi() + [422] call keyboard_event_pressed + [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [423] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - [424] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return + [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@6 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@23 - [425] phi() + [426] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@6 - [426] return + [427] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [427] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [427] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) - [427] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) - [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [430] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 + [428] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [428] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) + [428] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) + [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@12 keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 + [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@12 - [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [433] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 + [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@14 keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [435] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [436] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) - [437] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 - [438] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [439] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 + [437] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 + [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@8 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 - [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 - [443] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 + [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 + [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7 - [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [446] return + [447] return to:@return render_show: scope:[render_show] from main::@3 - [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 + [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [448] phi() + [449] phi() to:render_show::@1 render_show::@1: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [449] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [450] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) - [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) - [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [450] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) + [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) + [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@1 - [454] return + [455] return to:@return render_show::toD0181: scope:[render_show] from render_show - [455] phi() + [456] phi() to:render_show::@1 play_init: scope:[play_init] from main::@11 - [456] phi() + [457] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [457] (byte) play_init::idx#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::idx#1 ) - [457] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [457] (byte) play_init::j#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::j#1 ) - [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 - [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 - [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [463] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [464] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 + [458] (byte) play_init::idx#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::idx#1 ) + [458] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [458] (byte) play_init::j#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::j#1 ) + [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 + [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 + [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@1 - [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 - [467] (byte) play_init::b#2 ← phi( play_init::@2/(byte) 0 play_init::@3/(byte) play_init::b#1 ) - [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 - [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) - [470] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [471] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 + [468] (byte) play_init::b#2 ← phi( play_init::@2/(byte) 0 play_init::@3/(byte) play_init::b#1 ) + [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 + [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) + [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@3 - [472] return + [473] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@10 asm { sei } - [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f - [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [484] return + [485] return to:@return sprites_init: scope:[sprites_init] from main::@9 - [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f - [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f + [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [489] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [489] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 - [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 - [494] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [495] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 + [490] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [490] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 + [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 + [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [496] return + [497] return to:@return render_init: scope:[render_init] from main::@8 - [497] phi() + [498] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [499] phi() + [500] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 - [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) - [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) - [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [507] call render_screen_original + [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) + [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) + [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [508] call render_screen_original to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 - [508] phi() - [509] call render_screen_original + [509] phi() + [510] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@3 - [510] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 ) - [510] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 ) - [510] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte) 0 ) - [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 - [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 - [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 - [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 - [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 - [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 + [511] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 ) + [511] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 ) + [511] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte) 0 ) + [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 + [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 + [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 + [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 + [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 + [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [518] return + [519] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@2 render_init::@3 - [519] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [520] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5 - [520] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) - [520] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) - [520] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) - [520] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) - [520] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) + [521] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) + [521] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) + [521] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) + [521] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) + [521] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [521] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [521] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [521] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [527] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 + [522] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [522] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [522] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [528] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [528] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [528] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [528] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [528] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [536] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 + [529] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [529] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [529] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [529] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [529] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [537] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [537] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [537] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [543] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 + [538] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [538] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [538] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 to:render_screen_original::@5 render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4 - [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [545] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 + [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5 - [546] return + [547] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff - [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff + [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [549] return + [550] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [553] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 - [554] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 - [555] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 - [556] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 - [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 + [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 + [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 + [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 + [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 + [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 + [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 - [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 - [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 + [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 + [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 + [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 + [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 + [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 - [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 + [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [573] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [574] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [576] return + [577] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [577] (byte) irq_cnt#2 ← (byte) 0 - [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [578] (byte) irq_cnt#2 ← (byte) 0 + [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 - [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 + [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [583] phi() + [584] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 - [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 - [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 + [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 + [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 + [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 @@ -13551,9 +13551,10 @@ VARIABLE REGISTER WEIGHTS (byte*) render_show::toD0182_screen (dword[5]) score_add_bcd (dword) score_bcd +(dword) score_bcd#0 0.1111111111111111 (dword) score_bcd#14 3.135135135135135 (dword) score_bcd#16 1.1428571428571428 -(dword) score_bcd#18 2.352941176470588 +(dword) score_bcd#18 2.3921568627450975 (dword) score_bcd#26 6.0 (dword) score_bcd#29 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 @@ -13639,7 +13640,7 @@ Initial phi equivalence classes [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -[ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +[ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] [ level#33 level#10 level#17 level#19 level#21 ] [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] @@ -13838,7 +13839,7 @@ Complete equivalence classes [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -[ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +[ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] [ level#33 level#10 level#17 level#19 level#21 ] [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] @@ -14031,7 +14032,7 @@ Allocated zp ZP_BYTE:53 [ play_move_leftright::return#2 ] Allocated zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] Allocated zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] Allocated zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -Allocated zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +Allocated zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] Allocated zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Allocated zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] Allocated zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] @@ -14305,6 +14306,7 @@ INITIAL ASM .const toSpritePtr1_return = PLAYFIELD_SPRITES/$40 .label keyboard_events_size = $5c .label render_screen_showing = $75 + .label score_bcd = $3a .label irq_raster_next = $76 .label irq_sprite_ypos = $77 .label irq_sprite_ptr = $78 @@ -14327,7 +14329,6 @@ INITIAL ASM .label next_piece_idx_12 = $10 .label current_movedown_counter = 4 .label lines_bcd = $38 - .label score_bcd = $3a .label current_piece_17 = $2b .label render_screen_render_22 = $22 .label render_screen_render_33 = $18 @@ -14361,434 +14362,436 @@ b1: // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing -//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG6 [2] (dword) score_bcd#0 ← (byte) 0 -- vduz1=vbuc1 + // Current score in BCD-format + lda #0 + sta score_bcd + lda #0 + sta score_bcd+1 + sta score_bcd+2 + sta score_bcd+3 +//SEG7 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} // Original Color Data jmp b2 -//SEG9 @2 +//SEG10 @2 b2: -//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG11 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b3 -//SEG11 @3 +//SEG12 @3 b3: -//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 // The raster line of the next IRQ lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 +//SEG14 [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 // Y-pos of the sprites on the next IRQ lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG14 [8] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] +//SEG15 [9] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] toSpritePtr1_from_b3: jmp toSpritePtr1 -//SEG15 toSpritePtr1 +//SEG16 toSpritePtr1 toSpritePtr1: jmp b5 -//SEG16 @5 +//SEG17 @5 b5: -//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 +//SEG18 [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 // Index of the sprites to show on the next IRQ lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG18 [10] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 +//SEG19 [11] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 // Counting the 10 IRQs lda #0 sta irq_cnt -//SEG19 [11] phi from @5 to @4 [phi:@5->@4] +//SEG20 [12] phi from @5 to @4 [phi:@5->@4] b4_from_b5: jmp b4 -//SEG20 @4 +//SEG21 @4 b4: -//SEG21 [12] call main -//SEG22 [14] phi from @4 to main [phi:@4->main] +//SEG22 [13] call main +//SEG23 [15] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG23 [13] phi from @4 to @end [phi:@4->@end] +//SEG24 [14] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG24 @end +//SEG25 @end bend: -//SEG25 main +//SEG26 main main: { .label key_event = $7b .label render = $7e - //SEG26 [15] call sid_rnd_init + //SEG27 [16] call sid_rnd_init jsr sid_rnd_init jmp b8 - //SEG27 main::@8 + //SEG28 main::@8 b8: - //SEG28 asm { sei } + //SEG29 asm { sei } sei - //SEG29 [17] call render_init - //SEG30 [497] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [18] call render_init + //SEG31 [498] phi from main::@8 to render_init [phi:main::@8->render_init] render_init_from_b8: jsr render_init - //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG32 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG32 main::@9 + //SEG33 main::@9 b9: - //SEG33 [19] call sprites_init + //SEG34 [20] call sprites_init jsr sprites_init - //SEG34 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG35 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG35 main::@10 + //SEG36 main::@10 b10: - //SEG36 [21] call sprites_irq_init + //SEG37 [22] call sprites_irq_init jsr sprites_irq_init - //SEG37 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG38 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG38 main::@11 + //SEG39 main::@11 b11: - //SEG39 [23] call play_init - //SEG40 [456] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG40 [24] call play_init + //SEG41 [457] phi from main::@11 to play_init [phi:main::@11->play_init] play_init_from_b11: jsr play_init - //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG42 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG42 main::@12 + //SEG43 main::@12 b12: - //SEG43 [25] call play_spawn_current - //SEG44 [286] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG44 [26] call play_spawn_current + //SEG45 [287] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] play_spawn_current_from_b12: - //SEG45 [286] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG46 [287] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [286] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG47 [287] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current - //SEG47 [26] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG48 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] b13_from_b12: jmp b13 - //SEG48 main::@13 + //SEG49 main::@13 b13: - //SEG49 [27] call play_spawn_current - //SEG50 [286] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG50 [28] call play_spawn_current + //SEG51 [287] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] play_spawn_current_from_b13: - //SEG51 [286] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [286] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG52 [287] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG53 [287] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG54 [29] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG54 main::@14 + //SEG55 main::@14 b14: - //SEG55 [29] call render_playfield - //SEG56 [151] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG56 [30] call render_playfield + //SEG57 [152] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] render_playfield_from_b14: - //SEG57 [151] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuz1=vbuc1 + //SEG58 [152] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuz1=vbuc1 lda #$20 sta render_screen_render_22 jsr render_playfield jmp b15 - //SEG58 main::@15 + //SEG59 main::@15 b15: - //SEG59 [30] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG60 [31] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_98 - //SEG60 [31] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG61 [32] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_119 - //SEG61 [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx_112 lda PIECES+1,y sta current_piece_gfx_112+1 - //SEG62 [33] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 + //SEG63 [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_100 - //SEG63 [34] call render_moving - //SEG64 [129] phi from main::@15 to render_moving [phi:main::@15->render_moving] + //SEG64 [35] call render_moving + //SEG65 [130] phi from main::@15 to render_moving [phi:main::@15->render_moving] render_moving_from_b15: - //SEG65 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy - //SEG66 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy - //SEG67 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [129] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + //SEG66 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy + //SEG67 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy + //SEG68 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy + //SEG69 [130] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 lda #$20 sta render_screen_render_33 - //SEG69 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy + //SEG70 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving jmp b16 - //SEG70 main::@16 + //SEG71 main::@16 b16: - //SEG71 [35] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuz1=vbuz2 + //SEG72 [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuz1=vbuz2 lda play_spawn_current.piece_idx sta next_piece_idx_77 - //SEG72 [36] call render_next - //SEG73 [108] phi from main::@16 to render_next [phi:main::@16->render_next] + //SEG73 [37] call render_next + //SEG74 [109] phi from main::@16 to render_next [phi:main::@16->render_next] render_next_from_b16: - //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [108] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuz1=vbuc1 + //SEG75 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy + //SEG76 [109] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuz1=vbuc1 lda #$20 sta render_screen_render_15 jsr render_next jmp b17 - //SEG76 main::@17 + //SEG77 main::@17 b17: - //SEG77 [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG78 [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG78 [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG79 [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG79 [39] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG80 [40] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG80 [39] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 + //SEG81 [40] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG81 [39] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 + //SEG82 [40] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG82 [39] phi (dword) score_bcd#18 = (byte) 0 [phi:main::@17->main::@1#2] -- vduz1=vbuc1 - lda #0 - sta score_bcd - lda #0 - sta score_bcd+1 - sta score_bcd+2 - sta score_bcd+3 - //SEG83 [39] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 + //SEG83 [40] phi (dword) score_bcd#18 = (dword) score_bcd#0 [phi:main::@17->main::@1#2] -- register_copy + //SEG84 [40] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 lda #0 sta lines_bcd lda #0 sta lines_bcd+1 - //SEG84 [39] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 + //SEG85 [40] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG85 [39] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 + //SEG86 [40] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG86 [39] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy - //SEG87 [39] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy - //SEG88 [39] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy - //SEG89 [39] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy - //SEG90 [39] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy - //SEG91 [39] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 + //SEG87 [40] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy + //SEG88 [40] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy + //SEG89 [40] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy + //SEG90 [40] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy + //SEG91 [40] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy + //SEG92 [40] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG92 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy - //SEG93 [39] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy - //SEG94 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy - //SEG95 [39] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 + //SEG93 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy + //SEG94 [40] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy + //SEG95 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy + //SEG96 [40] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 lda #$20 sta render_screen_render - //SEG96 [39] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 + //SEG97 [40] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG97 [39] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG98 [40] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG98 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy - //SEG99 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy - //SEG100 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy - //SEG101 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy - //SEG102 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy - //SEG103 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy - //SEG104 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy - //SEG105 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy - //SEG106 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy - //SEG107 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy - //SEG108 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy - //SEG109 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy - //SEG110 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy - //SEG111 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy - //SEG112 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy + //SEG99 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy + //SEG100 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy + //SEG101 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy + //SEG102 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy + //SEG103 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy + //SEG104 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy + //SEG105 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy + //SEG106 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy + //SEG107 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy + //SEG108 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy + //SEG109 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy + //SEG110 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy + //SEG111 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy + //SEG112 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy + //SEG113 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy jmp b1 - //SEG113 main::@1 + //SEG114 main::@1 b1: jmp b2 // Wait for a frame to pass - //SEG114 main::@2 + //SEG115 main::@2 b2: - //SEG115 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG116 [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 - //SEG116 [41] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG117 [42] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG117 main::@3 + //SEG118 main::@3 b3: - //SEG118 [42] call render_show + //SEG119 [43] call render_show jsr render_show - //SEG119 [43] phi from main::@3 to main::@18 [phi:main::@3->main::@18] + //SEG120 [44] phi from main::@3 to main::@18 [phi:main::@3->main::@18] b18_from_b3: jmp b18 - //SEG120 main::@18 + //SEG121 main::@18 b18: - //SEG121 [44] call keyboard_event_scan - //SEG122 [391] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] + //SEG122 [45] call keyboard_event_scan + //SEG123 [392] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] keyboard_event_scan_from_b18: jsr keyboard_event_scan - //SEG123 [45] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG124 [46] phi from main::@18 to main::@19 [phi:main::@18->main::@19] b19_from_b18: jmp b19 - //SEG124 main::@19 + //SEG125 main::@19 b19: - //SEG125 [46] call keyboard_event_get + //SEG126 [47] call keyboard_event_get jsr keyboard_event_get - //SEG126 [47] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG127 [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_3 jmp b20 - //SEG127 main::@20 + //SEG128 main::@20 b20: - //SEG128 [48] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + //SEG129 [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG129 [49] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 + //SEG130 [50] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b4 jmp b5 - //SEG130 main::@5 + //SEG131 main::@5 b5: - //SEG131 [50] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG132 [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 - //SEG132 main::@4 + //SEG133 main::@4 b4: - //SEG133 [51] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG134 [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_movement.key_event - //SEG134 [52] call play_movement + //SEG135 [53] call play_movement jsr play_movement - //SEG135 [53] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuz1=vbuz2 + //SEG136 [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuz1=vbuz2 lda play_movement.return sta play_movement.return_3 jmp b21 - //SEG136 main::@21 + //SEG137 main::@21 b21: - //SEG137 [54] (byte) main::render#1 ← (byte) play_movement::return#3 -- vbuz1=vbuz2 + //SEG138 [55] (byte) main::render#1 ← (byte) play_movement::return#3 -- vbuz1=vbuz2 lda play_movement.return_3 sta render jmp b6 - //SEG138 main::@6 + //SEG139 main::@6 b6: - //SEG139 [55] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuz1_eq_0_then_la1 + //SEG140 [56] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuz1_eq_0_then_la1 lda render cmp #0 beq b1_from_b6 jmp b7 - //SEG140 main::@7 + //SEG141 main::@7 b7: - //SEG141 [56] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG142 [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_64 - //SEG142 [57] call render_playfield - //SEG143 [151] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG143 [58] call render_playfield + //SEG144 [152] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] render_playfield_from_b7: - //SEG144 [151] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy + //SEG145 [152] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield jmp b22 - //SEG145 main::@22 + //SEG146 main::@22 b22: - //SEG146 [58] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG147 [59] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_99 - //SEG147 [59] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG148 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_65 - //SEG148 [60] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG149 [61] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_120 - //SEG149 [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG150 [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_113 lda current_piece_gfx+1 sta current_piece_gfx_113+1 - //SEG150 [62] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 + //SEG151 [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_101 - //SEG151 [63] call render_moving - //SEG152 [129] phi from main::@22 to render_moving [phi:main::@22->render_moving] + //SEG152 [64] call render_moving + //SEG153 [130] phi from main::@22 to render_moving [phi:main::@22->render_moving] render_moving_from_b22: - //SEG153 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy - //SEG154 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy - //SEG155 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy - //SEG156 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy - //SEG157 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy + //SEG154 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy + //SEG155 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy + //SEG156 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy + //SEG157 [130] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy + //SEG158 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy jsr render_moving jmp b23 - //SEG158 main::@23 + //SEG159 main::@23 b23: - //SEG159 [64] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG160 [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_66 - //SEG160 [65] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuz1=vbuz2 + //SEG161 [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuz1=vbuz2 lda next_piece_idx sta next_piece_idx_78 - //SEG161 [66] call render_next - //SEG162 [108] phi from main::@23 to render_next [phi:main::@23->render_next] + //SEG162 [67] call render_next + //SEG163 [109] phi from main::@23 to render_next [phi:main::@23->render_next] render_next_from_b23: - //SEG163 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy - //SEG164 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy + //SEG164 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy + //SEG165 [109] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy jsr render_next - //SEG165 [67] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG166 [68] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG166 main::@24 + //SEG167 main::@24 b24: - //SEG167 [68] call render_score + //SEG168 [69] call render_score jsr render_score - //SEG168 [69] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG169 [70] phi from main::@24 to main::@25 [phi:main::@24->main::@25] b25_from_b24: jmp b25 - //SEG169 main::@25 + //SEG170 main::@25 b25: - //SEG170 [70] call render_screen_swap + //SEG171 [71] call render_screen_swap jsr render_screen_swap - //SEG171 [39] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG172 [40] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG172 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy - //SEG173 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy - //SEG174 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy - //SEG175 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy - //SEG176 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy - //SEG177 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy - //SEG178 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy - //SEG179 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy - //SEG180 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy - //SEG181 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy - //SEG182 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy - //SEG183 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy - //SEG184 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy - //SEG185 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy - //SEG186 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy - //SEG187 [39] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy - //SEG188 [39] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy + //SEG173 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy + //SEG174 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy + //SEG175 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy + //SEG176 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy + //SEG177 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy + //SEG178 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy + //SEG179 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy + //SEG180 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy + //SEG181 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy + //SEG182 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy + //SEG183 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy + //SEG184 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy + //SEG185 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy + //SEG186 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy + //SEG187 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy + //SEG188 [40] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy + //SEG189 [40] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy jmp b1 } -//SEG189 render_screen_swap +//SEG190 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG190 [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG191 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_render sta render_screen_render - //SEG191 [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG192 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_show sta render_screen_show jmp breturn - //SEG192 render_screen_swap::@return + //SEG193 render_screen_swap::@return breturn: - //SEG193 [73] return + //SEG194 [74] return rts } -//SEG194 render_score +//SEG195 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -14796,187 +14799,187 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG195 [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 + //SEG196 [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b1_from_render_score - //SEG196 [76] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG197 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG197 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG198 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG198 [75] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] + //SEG199 [76] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] b1_from_render_score: jmp b1 - //SEG199 render_score::@1 + //SEG200 render_score::@1 b1: - //SEG200 [76] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] + //SEG201 [77] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] b2_from_b1: - //SEG201 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 + //SEG202 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG202 render_score::@2 + //SEG203 render_score::@2 b2: - //SEG203 [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG204 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG204 [78] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuz1=_deref_pbuc1 + //SEG205 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuz1=_deref_pbuc1 lda score_bytes+2 sta render_bcd.bcd - //SEG205 [79] call render_bcd - //SEG206 [96] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG206 [80] call render_bcd + //SEG207 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG207 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG208 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 + //SEG208 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG209 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG209 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG210 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG210 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG211 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b3 - //SEG211 render_score::@3 + //SEG212 render_score::@3 b3: - //SEG212 [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG213 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG213 [81] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuz1=_deref_pbuc1 + //SEG214 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuz1=_deref_pbuc1 lda score_bytes+1 sta render_bcd.bcd - //SEG214 [82] call render_bcd - //SEG215 [96] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] + //SEG215 [83] call render_bcd + //SEG216 [97] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] render_bcd_from_b3: - //SEG216 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy - //SEG217 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuz1=vbuc1 + //SEG217 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy + //SEG218 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG218 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG219 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy + //SEG220 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy jsr render_bcd jmp b4 - //SEG220 render_score::@4 + //SEG221 render_score::@4 b4: - //SEG221 [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG222 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG222 [84] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 + //SEG223 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 lda score_bytes sta render_bcd.bcd - //SEG223 [85] call render_bcd - //SEG224 [96] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] + //SEG224 [86] call render_bcd + //SEG225 [97] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] render_bcd_from_b4: - //SEG225 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy - //SEG226 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuz1=vbuc1 + //SEG226 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy + //SEG227 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG227 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 + //SEG228 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG228 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy + //SEG229 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG229 render_score::@5 + //SEG230 render_score::@5 b5: - //SEG230 [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuz1=_hi_vwuz2 + //SEG231 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuz1=_hi_vwuz2 lda lines_bcd+1 sta render_bcd.bcd - //SEG231 [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG232 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG232 [88] call render_bcd - //SEG233 [96] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG233 [89] call render_bcd + //SEG234 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG234 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG235 [96] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 + //SEG235 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG236 [97] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 lda #1 sta render_bcd.only_low - //SEG236 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 + //SEG237 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG237 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG238 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG238 render_score::@6 + //SEG239 render_score::@6 b6: - //SEG239 [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 + //SEG240 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 lda lines_bcd sta render_bcd.bcd - //SEG240 [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG241 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG241 [91] call render_bcd - //SEG242 [96] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG242 [92] call render_bcd + //SEG243 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG243 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG244 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 + //SEG244 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG245 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG245 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 + //SEG246 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG246 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG247 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG247 render_score::@7 + //SEG248 render_score::@7 b7: - //SEG248 [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 + //SEG249 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG249 [93] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuz1=vbuz2 + //SEG250 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuz1=vbuz2 lda level_bcd sta render_bcd.bcd - //SEG250 [94] call render_bcd - //SEG251 [96] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG251 [95] call render_bcd + //SEG252 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG252 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG253 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 + //SEG253 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG254 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG254 [96] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG255 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG255 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG256 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG256 render_score::@return + //SEG257 render_score::@return breturn: - //SEG257 [95] return + //SEG258 [96] return rts } -//SEG258 render_bcd +//SEG259 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -14994,7 +14997,7 @@ render_bcd: { .label screen_pos = $d .label offset = 9 .label only_low = $b - //SEG259 [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 + //SEG260 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 lda screen clc adc offset @@ -15002,59 +15005,59 @@ render_bcd: { lda screen+1 adc offset+1 sta screen_pos+1 - //SEG260 [98] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 + //SEG261 [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 lda only_low cmp #0 bne b1_from_render_bcd jmp b2 - //SEG261 render_bcd::@2 + //SEG262 render_bcd::@2 b2: - //SEG262 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG263 [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda bcd lsr lsr lsr lsr sta _5 - //SEG263 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 + //SEG264 [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 lax _5 axs #-[ZERO_CHAR] stx _6 - //SEG264 [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 + //SEG265 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (screen_pos),y - //SEG265 [102] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG266 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG266 [103] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG267 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG267 [103] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG268 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG268 render_bcd::@1 + //SEG269 render_bcd::@1 b1: - //SEG269 [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG270 [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and bcd sta _3 - //SEG270 [105] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 + //SEG271 [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 lax _3 axs #-[ZERO_CHAR] stx _4 - //SEG271 [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 + //SEG272 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 lda _4 ldy #0 sta (screen_pos),y jmp breturn - //SEG272 render_bcd::@return + //SEG273 render_bcd::@return breturn: - //SEG273 [107] return + //SEG274 [108] return rts } -//SEG274 render_next +//SEG275 render_next // Render the next tetromino in the "next" area render_next: { // Find the screen area @@ -15066,117 +15069,117 @@ render_next: { .label screen_next_area = $14 .label c = $16 .label l = $11 - //SEG275 [109] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuz1_eq_0_then_la1 + //SEG276 [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuz1_eq_0_then_la1 lda render_screen_render_15 cmp #0 beq b1_from_render_next - //SEG276 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG277 [112] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] b2_from_render_next: - //SEG277 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG278 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [110] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] + //SEG279 [111] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] b1_from_render_next: jmp b1 - //SEG279 render_next::@1 + //SEG280 render_next::@1 b1: - //SEG280 [111] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] + //SEG281 [112] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] b2_from_b1: - //SEG281 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 + //SEG282 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 jmp b2 - //SEG282 render_next::@2 + //SEG283 render_next::@2 b2: - //SEG283 [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG284 [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda next_piece_idx_12 asl sta _9 - //SEG284 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG285 [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuz2 ldy next_piece_idx_12 lda PIECES_NEXT_CHARS,y sta next_piece_char - //SEG285 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG286 [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuz2 ldy _9 lda PIECES,y sta next_piece_gfx lda PIECES+1,y sta next_piece_gfx+1 - //SEG286 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG287 [116] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] b3_from_b2: - //SEG287 [115] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG288 [116] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG288 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG289 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG289 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG290 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy jmp b3 - //SEG290 [115] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] + //SEG291 [116] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] b3_from_b8: - //SEG291 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy - //SEG292 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy - //SEG293 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy + //SEG292 [116] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy + //SEG293 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy + //SEG294 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy jmp b3 - //SEG294 render_next::@3 + //SEG295 render_next::@3 b3: - //SEG295 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG296 [117] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] b4_from_b3: - //SEG296 [116] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuz1=vbuc1 + //SEG297 [117] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG297 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG298 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG298 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG299 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy jmp b4 - //SEG299 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG300 [117] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] b4_from_b6: - //SEG300 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG301 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG302 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG301 [117] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG302 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG303 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy jmp b4 - //SEG303 render_next::@4 + //SEG304 render_next::@4 b4: - //SEG304 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuz1=_deref_pbuz2 + //SEG305 [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (next_piece_gfx),y sta cell - //SEG305 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG306 [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG306 [119] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuz1_neq_0_then_la1 + //SEG307 [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuz1_neq_0_then_la1 lda cell cmp #0 bne b5 jmp b7 - //SEG307 render_next::@7 + //SEG308 render_next::@7 b7: - //SEG308 [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG309 [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen_next_area),y jmp b6 - //SEG309 render_next::@6 + //SEG310 render_next::@6 b6: - //SEG310 [121] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 + //SEG311 [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG311 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuz1=_inc_vbuz1 + //SEG312 [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG312 [123] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG313 [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b4_from_b6 jmp b8 - //SEG313 render_next::@8 + //SEG314 render_next::@8 b8: - //SEG314 [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 + //SEG315 [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 lda #$24 clc adc screen_next_area @@ -15184,26 +15187,26 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG315 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG316 [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG316 [126] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG317 [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b3_from_b8 jmp breturn - //SEG317 render_next::@return + //SEG318 render_next::@return breturn: - //SEG318 [127] return + //SEG319 [128] return rts - //SEG319 render_next::@5 + //SEG320 render_next::@5 b5: - //SEG320 [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG321 [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG321 render_moving +//SEG322 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -15216,125 +15219,125 @@ render_moving: { .label l = $1e .label current_cell = $8a .label c = $21 - //SEG322 [130] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG323 [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos_13 sta ypos - //SEG323 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG324 [132] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG324 [131] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG325 [132] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG325 [131] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG326 [132] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG326 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG327 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG327 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG328 [132] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG328 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG329 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG330 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG329 [132] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG330 [132] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG331 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG331 render_moving::@1 + //SEG332 render_moving::@1 b1: - //SEG332 [132] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG333 [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos cmp #1+1 bcs b2 jmp b7 - //SEG333 render_moving::@7 + //SEG334 render_moving::@7 b7: - //SEG334 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG335 [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax i axs #-[4] stx i - //SEG335 [134] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG336 [135] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] b3_from_b5: b3_from_b7: - //SEG336 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG337 [135] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy jmp b3 - //SEG337 render_moving::@3 + //SEG338 render_moving::@3 b3: - //SEG338 [135] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + //SEG339 [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 inc ypos - //SEG339 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG340 [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG340 [137] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG341 [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b1_from_b3 jmp breturn - //SEG341 render_moving::@return + //SEG342 render_moving::@return breturn: - //SEG342 [138] return + //SEG343 [139] return rts - //SEG343 render_moving::@2 + //SEG344 render_moving::@2 b2: - //SEG344 [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG345 [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_33 clc adc ypos sta _1 - //SEG345 [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG346 [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda _1 asl sta _6 - //SEG346 [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG347 [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuz2 ldy _6 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG347 [142] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG348 [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG348 [143] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG349 [144] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG349 [143] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG350 [144] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG350 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG351 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG351 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG352 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG352 [143] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG353 [144] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG353 [143] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG354 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG355 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG354 [144] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG355 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG356 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG356 render_moving::@4 + //SEG357 render_moving::@4 b4: - //SEG357 [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG358 [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx_64),y sta current_cell - //SEG358 [145] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG359 [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG359 [146] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 + //SEG360 [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b5 jmp b6 - //SEG360 render_moving::@6 + //SEG361 render_moving::@6 b6: - //SEG361 [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG362 [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y jmp b5 - //SEG362 render_moving::@5 + //SEG363 render_moving::@5 b5: - //SEG363 [148] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG364 [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG364 [149] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG365 [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG365 [150] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG366 [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b4_from_b5 jmp b3_from_b5 } -//SEG366 render_playfield +//SEG367 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label _2 = $8b @@ -15343,87 +15346,87 @@ render_playfield: { .label i = $24 .label c = $27 .label l = $23 - //SEG367 [152] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG368 [153] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG368 [152] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG369 [153] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG369 [152] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG370 [153] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG370 [152] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG371 [153] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG371 [152] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG372 [152] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG372 [153] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG373 [153] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG373 render_playfield::@1 + //SEG374 render_playfield::@1 b1: - //SEG374 [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG375 [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_22 clc adc l sta _2 - //SEG375 [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG376 [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda _2 asl sta _6 - //SEG376 [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG377 [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuz2 ldy _6 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG377 [156] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG378 [157] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG378 [156] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG379 [157] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG379 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG380 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG380 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG381 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG381 [156] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG382 [157] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG382 [156] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG383 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG384 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG383 [157] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG384 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG385 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG385 render_playfield::@2 + //SEG386 render_playfield::@2 b2: - //SEG386 [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG387 [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG387 [158] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG388 [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG388 [159] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG389 [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [160] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG390 [161] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG391 [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp c bne b2_from_b2 jmp b3 - //SEG391 render_playfield::@3 + //SEG392 render_playfield::@3 b3: - //SEG392 [162] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG393 [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [163] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG394 [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp l bne b1_from_b3 jmp breturn - //SEG394 render_playfield::@return + //SEG395 render_playfield::@return breturn: - //SEG395 [164] return + //SEG396 [165] return rts } -//SEG396 play_movement +//SEG397 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -15436,79 +15439,79 @@ play_movement: { .label return = $28 .label key_event = $7c .label return_3 = $7d - //SEG397 [165] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG398 [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG398 [166] call play_move_down + //SEG399 [167] call play_move_down jsr play_move_down - //SEG399 [167] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG400 [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 lda play_move_down.return_3 sta play_move_down.return jmp b2 - //SEG400 play_movement::@2 + //SEG401 play_movement::@2 b2: - //SEG401 [168] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + //SEG402 [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 lda play_move_down.return sta render - //SEG402 [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG403 [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG403 [170] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG404 [171] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] breturn_from_b2: breturn_from_b4: - //SEG404 [170] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG405 [170] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG406 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG407 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG405 [171] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG406 [171] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG407 [171] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG408 [171] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy jmp breturn - //SEG408 play_movement::@return + //SEG409 play_movement::@return breturn: - //SEG409 [171] return + //SEG410 [172] return rts - //SEG410 play_movement::@1 + //SEG411 play_movement::@1 b1: - //SEG411 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG412 [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG412 [173] call play_move_leftright + //SEG413 [174] call play_move_leftright jsr play_move_leftright - //SEG413 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + //SEG414 [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 lda play_move_leftright.return_2 sta play_move_leftright.return jmp b3 - //SEG414 play_movement::@3 + //SEG415 play_movement::@3 b3: - //SEG415 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + //SEG416 [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 lda play_move_leftright.return sta _3 - //SEG416 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 + //SEG417 [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 lda render clc adc _3 sta render_2 - //SEG417 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG418 [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG418 [178] call play_move_rotate + //SEG419 [179] call play_move_rotate jsr play_move_rotate - //SEG419 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + //SEG420 [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 lda play_move_rotate.return_2 sta play_move_rotate.return jmp b4 - //SEG420 play_movement::@4 + //SEG421 play_movement::@4 b4: - //SEG421 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + //SEG422 [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 lda play_move_rotate.return sta _4 - //SEG422 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG423 [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc adc _4 sta return jmp breturn_from_b4 } -//SEG423 play_move_rotate +//SEG424 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte zeropage($93) key_event) @@ -15520,89 +15523,89 @@ play_move_rotate: { .label return = $94 .label orientation = $2a .label return_2 = $29 - //SEG424 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG425 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda #KEY_Z cmp key_event beq b1 jmp b4 - //SEG425 play_move_rotate::@4 + //SEG426 play_move_rotate::@4 b4: - //SEG426 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG427 [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda #KEY_X cmp key_event beq b2 - //SEG427 [184] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG428 [185] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b4: breturn_from_b6: - //SEG428 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG429 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG430 [184] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG429 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG430 [185] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG431 [185] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG431 play_move_rotate::@return + //SEG432 play_move_rotate::@return breturn: - //SEG432 [185] return + //SEG433 [186] return rts - //SEG433 play_move_rotate::@2 + //SEG434 play_move_rotate::@2 b2: - //SEG434 [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuz1=vbuz2_plus_vbuc1 + //SEG435 [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuz1=vbuz2_plus_vbuc1 lax current_orientation axs #-[$10] stx _5 - //SEG435 [187] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuz2_band_vbuc1 + //SEG436 [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _5 sta orientation - //SEG436 [188] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG437 [189] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] b3_from_b1: b3_from_b2: - //SEG437 [188] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy + //SEG438 [189] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy jmp b3 - //SEG438 play_move_rotate::@3 + //SEG439 play_move_rotate::@3 b3: - //SEG439 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG440 [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG440 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG441 [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG441 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG442 [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG442 [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG443 [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG443 [193] call play_collision - //SEG444 [201] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG444 [194] call play_collision + //SEG445 [202] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] play_collision_from_b3: - //SEG445 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG446 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG447 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG448 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG446 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG447 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG448 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG449 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG449 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG450 [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_14 jmp b6 - //SEG450 play_move_rotate::@6 + //SEG451 play_move_rotate::@6 b6: - //SEG451 [195] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG452 [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta _2 - //SEG452 [196] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG453 [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _2 bne breturn_from_b6 jmp b5 - //SEG453 play_move_rotate::@5 + //SEG454 play_move_rotate::@5 b5: - //SEG454 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG455 [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG455 [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG456 [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -15610,27 +15613,27 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG456 [184] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG457 [185] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] breturn_from_b5: - //SEG457 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG458 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG459 [184] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG458 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG459 [185] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG460 [185] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG460 play_move_rotate::@1 + //SEG461 play_move_rotate::@1 b1: - //SEG461 [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuz1=vbuz2_minus_vbuc1 + //SEG462 [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuz1=vbuz2_minus_vbuc1 lax current_orientation axs #$10 stx _7 - //SEG462 [200] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuz2_band_vbuc1 + //SEG463 [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _7 sta orientation jmp b3_from_b1 } -//SEG463 play_collision +//SEG464 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected // play_collision(byte zeropage($2e) xpos, byte zeropage($2f) ypos, byte zeropage($2d) orientation) @@ -15657,7 +15660,7 @@ play_collision: { .label i_3 = $31 .label i_10 = $31 .label i_12 = $31 - //SEG464 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 + //SEG465 [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_17 @@ -15665,159 +15668,159 @@ play_collision: { lda #0 adc current_piece_17+1 sta piece_gfx+1 - //SEG465 [203] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG466 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG466 [203] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG467 [203] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG468 [204] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG468 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG469 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG469 play_collision::@1 + //SEG470 play_collision::@1 b1: - //SEG470 [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG471 [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda yp asl sta _14 - //SEG471 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG472 [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuz2 ldy _14 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG472 [206] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG473 [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta xp - //SEG473 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG474 [208] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG474 [207] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 + //SEG475 [208] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG475 [207] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG476 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG476 [208] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG477 [208] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG477 play_collision::@2 + //SEG478 play_collision::@2 b2: - //SEG478 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG479 [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG479 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG480 [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b7 - //SEG480 play_collision::@7 + //SEG481 play_collision::@7 b7: - //SEG481 [210] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG482 [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda yp cmp #PLAYFIELD_LINES bcc b4 - //SEG482 [215] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG483 [216] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] breturn_from_b7: - //SEG483 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG484 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_15 jmp breturn - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG486 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and xp sta _5 - //SEG486 [212] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + //SEG487 [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 lda _5 cmp #0 beq b5 - //SEG487 [215] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG488 [216] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG488 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG489 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_15 jmp breturn - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [213] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [215] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG492 [216] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG492 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG493 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_15 jmp breturn - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG495 [215] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG496 [216] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG496 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG497 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_15 jmp breturn - //SEG497 play_collision::@return + //SEG498 play_collision::@return breturn: - //SEG498 [216] return + //SEG499 [217] return rts - //SEG499 play_collision::@3 + //SEG500 play_collision::@3 b3: - //SEG500 [217] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + //SEG501 [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG501 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG502 [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG502 [219] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG503 [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b10 jmp b8 - //SEG503 play_collision::@8 + //SEG504 play_collision::@8 b8: - //SEG504 [220] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + //SEG505 [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG505 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG506 [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG506 [222] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG507 [215] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG508 [216] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG508 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG509 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_15 jmp breturn - //SEG509 play_collision::@9 + //SEG510 play_collision::@9 b9: - //SEG510 [223] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG511 [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_10 - //SEG511 [203] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG512 [204] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] b1_from_b9: - //SEG512 [203] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG513 [203] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG514 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG513 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG514 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG515 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG515 play_collision::@10 + //SEG516 play_collision::@10 b10: - //SEG516 [224] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG517 [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_12 - //SEG517 [207] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG518 [208] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] b2_from_b10: - //SEG518 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG519 [207] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG520 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG519 [208] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG520 [208] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG521 [208] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG521 play_move_leftright +//SEG522 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte zeropage($8f) key_event) @@ -15827,129 +15830,129 @@ play_move_leftright: { .label key_event = $8f .label return = $90 .label return_2 = $35 - //SEG522 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG523 [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 // Handle keyboard events lda #KEY_COMMA cmp key_event beq b1 jmp b2 - //SEG523 play_move_leftright::@2 + //SEG524 play_move_leftright::@2 b2: - //SEG524 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG525 [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda #KEY_DOT cmp key_event bne breturn_from_b2 jmp b3 - //SEG525 play_move_leftright::@3 + //SEG526 play_move_leftright::@3 b3: - //SEG526 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG527 [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG527 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG528 [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG528 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG529 [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG529 [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG530 [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG530 [231] call play_collision - //SEG531 [201] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG531 [232] call play_collision + //SEG532 [202] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] play_collision_from_b3: - //SEG532 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG533 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG534 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG535 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG533 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG534 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG535 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG536 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG536 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG537 [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_13 jmp b7 - //SEG537 play_move_leftright::@7 + //SEG538 play_move_leftright::@7 b7: - //SEG538 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + //SEG539 [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 lda play_collision.return_13 sta _4 - //SEG539 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG540 [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _4 bne breturn_from_b7 jmp b4 - //SEG540 play_move_leftright::@4 + //SEG541 play_move_leftright::@4 b4: - //SEG541 [235] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG542 [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG542 [236] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG543 [237] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] breturn_from_b4: breturn_from_b5: - //SEG543 [236] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG544 [236] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG544 [237] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG545 [237] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG545 [236] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG546 [237] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] breturn_from_b2: breturn_from_b6: breturn_from_b7: - //SEG546 [236] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG547 [236] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG547 [237] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG548 [237] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG548 play_move_leftright::@return + //SEG549 play_move_leftright::@return breturn: - //SEG549 [237] return + //SEG550 [238] return rts - //SEG550 play_move_leftright::@1 + //SEG551 play_move_leftright::@1 b1: - //SEG551 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 + //SEG552 [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG552 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG553 [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG553 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG554 [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG554 [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG555 [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_97 lda current_piece+1 sta current_piece_97+1 - //SEG555 [242] call play_collision - //SEG556 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG556 [243] call play_collision + //SEG557 [202] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG557 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG558 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG559 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG560 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG558 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG559 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG560 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG561 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG561 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG562 [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_1 jmp b6 - //SEG562 play_move_leftright::@6 + //SEG563 play_move_leftright::@6 b6: - //SEG563 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG564 [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG564 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG565 [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _8 bne breturn_from_b6 jmp b5 - //SEG565 play_move_leftright::@5 + //SEG566 play_move_leftright::@5 b5: - //SEG566 [246] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG567 [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b5 } -//SEG567 play_move_down +//SEG568 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte zeropage($8d) key_event) @@ -15961,274 +15964,274 @@ play_move_down: { .label movedown = $36 .label removed = $aa .label return_3 = $48 - //SEG568 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG569 [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG569 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG570 [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda #KEY_SPACE cmp key_event bne b1_from_play_move_down - //SEG570 [249] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG571 [250] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] b4_from_play_move_down: jmp b4 - //SEG571 play_move_down::@4 + //SEG572 play_move_down::@4 b4: - //SEG572 [250] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG573 [251] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] b1_from_b4: - //SEG573 [250] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG574 [251] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG574 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG575 [251] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG575 [250] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG576 [251] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 lda #0 sta movedown jmp b1 - //SEG576 play_move_down::@1 + //SEG577 play_move_down::@1 b1: - //SEG577 [251] call keyboard_event_pressed - //SEG578 [380] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG578 [252] call keyboard_event_pressed + //SEG579 [381] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG579 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG580 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG580 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG581 [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b12 - //SEG581 play_move_down::@12 + //SEG582 play_move_down::@12 b12: - //SEG582 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG583 [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG583 [254] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 + //SEG584 [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b12 jmp b5 - //SEG584 play_move_down::@5 + //SEG585 play_move_down::@5 b5: - //SEG585 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG586 [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b5 jmp b6 - //SEG586 play_move_down::@6 + //SEG587 play_move_down::@6 b6: - //SEG587 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG588 [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG588 [257] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG589 [258] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] b2_from_b12: b2_from_b5: b2_from_b6: - //SEG589 [257] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG590 [258] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy jmp b2 - //SEG590 play_move_down::@2 + //SEG591 play_move_down::@2 b2: - //SEG591 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG592 [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3_from_b2 jmp b7 - //SEG592 play_move_down::@7 + //SEG593 play_move_down::@7 b7: - //SEG593 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG594 [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG594 [260] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG595 [261] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] b3_from_b2: b3_from_b7: - //SEG595 [260] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG596 [261] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy jmp b3 - //SEG596 play_move_down::@3 + //SEG597 play_move_down::@3 b3: - //SEG597 [261] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + //SEG598 [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b3 jmp b8 - //SEG598 play_move_down::@8 + //SEG599 play_move_down::@8 b8: - //SEG599 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG600 [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG600 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG601 [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG601 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 + //SEG602 [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG602 [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG603 [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_96 lda current_piece+1 sta current_piece_96+1 - //SEG603 [266] call play_collision - //SEG604 [201] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG604 [267] call play_collision + //SEG605 [202] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] play_collision_from_b8: - //SEG605 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG606 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG607 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG608 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG606 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG607 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG608 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG609 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG609 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG610 [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return jmp b13 - //SEG610 play_move_down::@13 + //SEG611 play_move_down::@13 b13: - //SEG611 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG612 [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG612 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG613 [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuz1_eq_vbuc1_then_la1 lda #COLLISION_NONE cmp _12 beq b10 - //SEG613 [270] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG614 [271] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] b9_from_b13: jmp b9 - //SEG614 play_move_down::@9 + //SEG615 play_move_down::@9 b9: - //SEG615 [271] call play_lock_current + //SEG616 [272] call play_lock_current jsr play_lock_current - //SEG616 [272] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG617 [273] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] b14_from_b9: jmp b14 - //SEG617 play_move_down::@14 + //SEG618 play_move_down::@14 b14: - //SEG618 [273] call play_remove_lines - //SEG619 [339] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG619 [274] call play_remove_lines + //SEG620 [340] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] play_remove_lines_from_b14: jsr play_remove_lines - //SEG620 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuz1=vbuz2 + //SEG621 [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuz1=vbuz2 lda play_remove_lines.removed sta play_remove_lines.return jmp b15 - //SEG621 play_move_down::@15 + //SEG622 play_move_down::@15 b15: - //SEG622 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 + //SEG623 [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 lda play_remove_lines.return sta removed - //SEG623 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 + //SEG624 [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 lda removed sta play_update_score.removed - //SEG624 [277] call play_update_score + //SEG625 [278] call play_update_score jsr play_update_score - //SEG625 [278] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG626 [279] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] b16_from_b15: jmp b16 - //SEG626 play_move_down::@16 + //SEG627 play_move_down::@16 b16: - //SEG627 [279] call play_spawn_current - //SEG628 [286] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG628 [280] call play_spawn_current + //SEG629 [287] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] play_spawn_current_from_b16: - //SEG629 [286] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG630 [286] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG630 [287] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG631 [287] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current jmp b17 - //SEG631 play_move_down::@17 + //SEG632 play_move_down::@17 b17: - //SEG632 [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG633 [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG633 [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG634 [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG634 [282] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] + //SEG635 [283] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] b11_from_b17: - //SEG635 [282] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy - //SEG636 [282] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy - //SEG637 [282] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy - //SEG638 [282] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy - //SEG639 [282] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG636 [283] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy + //SEG637 [283] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy + //SEG638 [283] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy + //SEG639 [283] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy + //SEG640 [283] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG640 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy - //SEG641 [282] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy - //SEG642 [282] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy - //SEG643 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy - //SEG644 [282] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy - //SEG645 [282] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy - //SEG646 [282] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy - //SEG647 [282] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy + //SEG641 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy + //SEG642 [283] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy + //SEG643 [283] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy + //SEG644 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy + //SEG645 [283] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy + //SEG646 [283] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy + //SEG647 [283] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy + //SEG648 [283] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy jmp b11 - //SEG648 play_move_down::@11 + //SEG649 play_move_down::@11 b11: - //SEG649 [283] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG650 [284] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] breturn_from_b11: - //SEG650 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG651 [283] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG652 [283] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG653 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG654 [283] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG655 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG656 [283] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG657 [283] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG658 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG659 [283] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG660 [283] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG661 [283] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG662 [283] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG663 [283] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG651 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG652 [284] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG653 [284] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG654 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG655 [284] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG656 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG657 [284] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG658 [284] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG659 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG660 [284] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG661 [284] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG662 [284] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG663 [284] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG664 [284] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG664 [283] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuz1=vbuc1 + //SEG665 [284] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG665 [283] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG666 [284] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] breturn_from_b3: - //SEG666 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG667 [283] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG668 [283] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG669 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG670 [283] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG671 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG672 [283] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG673 [283] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG674 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG675 [283] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG676 [283] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG677 [283] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG678 [283] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG679 [283] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG680 [283] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuz1=vbuc1 + //SEG667 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG668 [284] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG669 [284] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG670 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG671 [284] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG672 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG673 [284] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG674 [284] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG675 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG676 [284] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG677 [284] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG678 [284] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG679 [284] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG680 [284] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG681 [284] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG681 play_move_down::@return + //SEG682 play_move_down::@return breturn: - //SEG682 [284] return + //SEG683 [285] return rts - //SEG683 play_move_down::@10 + //SEG684 play_move_down::@10 b10: - //SEG684 [285] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 + //SEG685 [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG685 [282] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG686 [283] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] b11_from_b10: - //SEG686 [282] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG687 [282] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG688 [282] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG689 [282] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG690 [282] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG691 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG692 [282] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG693 [282] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG694 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG695 [282] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG696 [282] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG697 [282] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG698 [282] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG687 [283] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG688 [283] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG689 [283] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG690 [283] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG691 [283] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG692 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG693 [283] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG694 [283] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG695 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG696 [283] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG697 [283] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG698 [283] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG699 [283] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG699 play_spawn_current +//SEG700 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { @@ -16237,113 +16240,113 @@ play_spawn_current: { .label current_piece_idx = $ac .label sid_rnd1_return = $b0 .label piece_idx = $49 - //SEG700 [287] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 + //SEG701 [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 // Move next piece into current lda next_piece_idx sta current_piece_idx - //SEG701 [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG702 [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda current_piece_idx asl sta _7 - //SEG702 [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG703 [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_CHARS,y sta current_piece_char - //SEG703 [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG704 [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_X,y sta current_xpos - //SEG704 [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG705 [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_Y,y sta current_ypos - //SEG705 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG706 [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG706 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG707 [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG707 [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG708 [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy _7 lda PIECES,y sta current_piece_100 lda PIECES+1,y sta current_piece_100+1 - //SEG708 [295] call play_collision - //SEG709 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG709 [296] call play_collision + //SEG710 [202] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG710 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG711 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG712 [201] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 + //SEG711 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG712 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG713 [202] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 lda #0 sta play_collision.orientation - //SEG713 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG714 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG714 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG715 [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_10 jmp b4 - //SEG715 play_spawn_current::@4 + //SEG716 play_spawn_current::@4 b4: - //SEG716 [297] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 + //SEG717 [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 lda play_collision.return_10 sta _1 - //SEG717 [298] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG718 [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_PLAYFIELD cmp _1 bne b5_from_b4 - //SEG718 [300] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG719 [301] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] b1_from_b4: - //SEG719 [300] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG720 [301] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG720 [299] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG721 [300] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] b5_from_b4: jmp b5 - //SEG721 play_spawn_current::@5 + //SEG722 play_spawn_current::@5 b5: - //SEG722 [300] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG723 [301] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] b1_from_b5: - //SEG723 [300] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG724 [301] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy jmp b1 - //SEG724 play_spawn_current::@1 + //SEG725 play_spawn_current::@1 b1: - //SEG725 [301] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG726 [302] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG726 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG727 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG727 play_spawn_current::@2 + //SEG728 play_spawn_current::@2 b2: - //SEG728 [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG729 [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 jmp breturn - //SEG729 play_spawn_current::@return + //SEG730 play_spawn_current::@return breturn: - //SEG730 [303] return + //SEG731 [304] return rts - //SEG731 play_spawn_current::sid_rnd1 + //SEG732 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG732 [304] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + //SEG733 [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta sid_rnd1_return jmp b3 - //SEG733 play_spawn_current::@3 + //SEG734 play_spawn_current::@3 b3: - //SEG734 [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG735 [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and sid_rnd1_return sta piece_idx - //SEG735 [301] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG736 [302] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] b2_from_b3: - //SEG736 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG737 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 } -//SEG737 play_update_score +//SEG738 play_update_score // Update the score based on the number of lines removed // play_update_score(byte zeropage($ab) removed) play_update_score: { @@ -16354,26 +16357,26 @@ play_update_score: { .label lines_before = $b2 .label add_bcd = $b4 .label lines_after = $b9 - //SEG738 [306] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 + //SEG739 [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 lda removed cmp #0 beq breturn_from_play_update_score jmp b1 - //SEG739 play_update_score::@1 + //SEG740 play_update_score::@1 b1: - //SEG740 [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 + //SEG741 [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _2 - //SEG741 [308] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1 + //SEG742 [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _2 sta lines_before - //SEG742 [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG743 [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda removed asl asl sta _9 - //SEG743 [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuz2 + //SEG744 [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuz2 ldy _9 lda score_add_bcd,y sta add_bcd @@ -16383,9 +16386,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG744 asm { sed } + //SEG745 asm { sed } sed - //SEG745 [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG746 [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 lda removed clc adc lines_bcd @@ -16393,7 +16396,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG746 [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG747 [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -16407,119 +16410,119 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG747 asm { cld } + //SEG748 asm { cld } cld - //SEG748 [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuz1=_lo_vwuz2 + //SEG749 [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _4 - //SEG749 [316] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1 + //SEG750 [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _4 sta lines_after - //SEG750 [317] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 + //SEG751 [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 lda lines_before cmp lines_after beq breturn_from_b1 - //SEG751 [318] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG752 [319] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] b2_from_b1: jmp b2 - //SEG752 play_update_score::@2 + //SEG753 play_update_score::@2 b2: - //SEG753 [319] call play_increase_level + //SEG754 [320] call play_increase_level jsr play_increase_level - //SEG754 [320] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG755 [321] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] breturn_from_play_update_score: breturn_from_b1: breturn_from_b2: - //SEG755 [320] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG756 [320] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG757 [320] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG758 [320] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG759 [320] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG756 [321] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG757 [321] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG758 [321] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG759 [321] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG760 [321] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy jmp breturn - //SEG760 play_update_score::@return + //SEG761 play_update_score::@return breturn: - //SEG761 [321] return + //SEG762 [322] return rts } -//SEG762 play_increase_level +//SEG763 play_increase_level // Increase the level play_increase_level: { .label _1 = $ba .label _5 = $bb .label b = $4b - //SEG763 [322] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG764 [323] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG764 [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG765 [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b1_from_play_increase_level jmp b3 - //SEG765 play_increase_level::@3 + //SEG766 play_increase_level::@3 b3: - //SEG766 [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG767 [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG767 [325] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG768 [326] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] b1_from_b3: - //SEG768 [325] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG769 [326] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG769 [325] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG770 [326] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b1_from_play_increase_level: - //SEG770 [325] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG771 [326] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b1 - //SEG771 play_increase_level::@1 + //SEG772 play_increase_level::@1 b1: - //SEG772 [326] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG773 [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG773 [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG774 [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and level_bcd sta _1 - //SEG774 [328] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG775 [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$a cmp _1 bne b2_from_b1 jmp b4 - //SEG775 play_increase_level::@4 + //SEG776 play_increase_level::@4 b4: - //SEG776 [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG777 [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG777 [330] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG778 [331] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] b2_from_b1: b2_from_b4: - //SEG778 [330] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG779 [331] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG779 play_increase_level::@2 + //SEG780 play_increase_level::@2 b2: - //SEG780 asm { sed } + //SEG781 asm { sed } // Increase the score values gained sed - //SEG781 [332] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG782 [333] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] b5_from_b2: - //SEG782 [332] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuz1=vbuc1 + //SEG783 [333] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuz1=vbuc1 lda #0 sta b jmp b5 - //SEG783 [332] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG784 [333] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] b5_from_b5: - //SEG784 [332] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG785 [333] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy jmp b5 - //SEG785 play_increase_level::@5 + //SEG786 play_increase_level::@5 b5: - //SEG786 [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG787 [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta _5 - //SEG787 [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 + //SEG788 [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 ldy _5 clc lda score_add_bcd,y @@ -16534,24 +16537,24 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG788 [335] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 + //SEG789 [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG789 [336] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG790 [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp b bne b5_from_b5 jmp b6 - //SEG790 play_increase_level::@6 + //SEG791 play_increase_level::@6 b6: - //SEG791 asm { cld } + //SEG792 asm { cld } cld jmp breturn - //SEG792 play_increase_level::@return + //SEG793 play_increase_level::@return breturn: - //SEG793 [338] return + //SEG794 [339] return rts } -//SEG794 play_remove_lines +//SEG795 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -16565,148 +16568,148 @@ play_remove_lines: { .label y = $4c .label removed = $4d .label full = $50 - //SEG795 [340] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG796 [341] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG796 [340] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG797 [341] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG797 [340] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG798 [341] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG798 [340] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG799 [341] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG799 [340] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 + //SEG800 [341] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 // Read all lines and rewrite them - //SEG800 [340] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG801 [341] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] b1_from_b6: - //SEG801 [340] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG802 [340] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG803 [340] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG804 [340] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG802 [341] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG803 [341] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG804 [341] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG805 [341] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG805 play_remove_lines::@1 + //SEG806 play_remove_lines::@1 b1: - //SEG806 [341] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG807 [342] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG807 [341] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG808 [342] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG808 [341] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG809 [342] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG809 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG810 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG810 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG811 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG811 [341] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG812 [342] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG812 [341] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG813 [341] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG814 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG815 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG813 [342] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG814 [342] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG815 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG816 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG816 play_remove_lines::@2 + //SEG817 play_remove_lines::@2 b2: - //SEG817 [342] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG818 [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG818 [343] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG819 [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG819 [344] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG820 [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b9_from_b2 - //SEG820 [346] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG821 [347] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG821 [346] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG822 [347] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG822 [345] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG823 [346] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] b9_from_b2: jmp b9 - //SEG823 play_remove_lines::@9 + //SEG824 play_remove_lines::@9 b9: - //SEG824 [346] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG825 [347] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] b3_from_b9: - //SEG825 [346] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG826 [347] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy jmp b3 - //SEG826 play_remove_lines::@3 + //SEG827 play_remove_lines::@3 b3: - //SEG827 [347] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG828 [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG828 [348] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG829 [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG829 [349] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [350] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2_from_b3 jmp b4 - //SEG831 play_remove_lines::@4 + //SEG832 play_remove_lines::@4 b4: - //SEG832 [351] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG833 [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6_from_b4 jmp b5 - //SEG833 play_remove_lines::@5 + //SEG834 play_remove_lines::@5 b5: - //SEG834 [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG835 [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax w axs #-[PLAYFIELD_COLS] stx w - //SEG835 [353] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [354] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG837 [355] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] b6_from_b4: b6_from_b5: - //SEG837 [354] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG838 [354] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG838 [355] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG839 [355] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy jmp b6 - //SEG839 play_remove_lines::@6 + //SEG840 play_remove_lines::@6 b6: - //SEG840 [355] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [356] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1_from_b6 - //SEG842 [357] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG843 [358] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b7_from_b6: b7_from_b8: - //SEG843 [357] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG844 [358] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy jmp b7 // Write zeros in the rest of the lines - //SEG844 play_remove_lines::@7 + //SEG845 play_remove_lines::@7 b7: - //SEG845 [358] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG846 [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuz1_neq_vbuc1_then_la1 lda #$ff cmp w bne b8 jmp breturn - //SEG846 play_remove_lines::@return + //SEG847 play_remove_lines::@return breturn: - //SEG847 [359] return + //SEG848 [360] return rts - //SEG848 play_remove_lines::@8 + //SEG849 play_remove_lines::@8 b8: - //SEG849 [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG850 [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy w sta playfield,y - //SEG850 [361] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG851 [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b7_from_b8 } -//SEG851 play_lock_current +//SEG852 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label _4 = $bd @@ -16720,111 +16723,111 @@ play_lock_current: { .label i_3 = $54 .label i_7 = $54 .label i_9 = $54 - //SEG852 [362] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 -- vbuz1=vbuz2 + //SEG853 [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 -- vbuz1=vbuz2 lda current_ypos sta yp - //SEG853 [363] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG854 [364] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG854 [363] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG855 [364] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG855 [363] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG856 [364] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG856 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG857 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG857 play_lock_current::@1 + //SEG858 play_lock_current::@1 b1: - //SEG858 [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG859 [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda yp asl sta _4 - //SEG859 [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG860 [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuz2 ldy _4 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG860 [366] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG861 [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta xp - //SEG861 [367] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG862 [368] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG862 [367] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 + //SEG863 [368] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG863 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG864 [367] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG864 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG865 [368] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG865 play_lock_current::@2 + //SEG866 play_lock_current::@2 b2: - //SEG866 [368] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG867 [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG867 [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG868 [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG868 play_lock_current::@4 + //SEG869 play_lock_current::@4 b4: - //SEG869 [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG870 [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy xp sta (playfield_line),y jmp b3 - //SEG870 play_lock_current::@3 + //SEG871 play_lock_current::@3 b3: - //SEG871 [371] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + //SEG872 [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG872 [372] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG873 [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG873 [373] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG874 [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b7 jmp b5 - //SEG874 play_lock_current::@5 + //SEG875 play_lock_current::@5 b5: - //SEG875 [374] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + //SEG876 [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG876 [375] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG877 [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG877 [376] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG878 [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 jmp breturn - //SEG878 play_lock_current::@return + //SEG879 play_lock_current::@return breturn: - //SEG879 [377] return + //SEG880 [378] return rts - //SEG880 play_lock_current::@6 + //SEG881 play_lock_current::@6 b6: - //SEG881 [378] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG882 [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG882 [363] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG883 [364] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] b1_from_b6: - //SEG883 [363] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG884 [363] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG885 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG884 [364] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG885 [364] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG886 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG886 play_lock_current::@7 + //SEG887 play_lock_current::@7 b7: - //SEG887 [379] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG888 [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG888 [367] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG889 [368] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] b2_from_b7: - //SEG889 [367] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG890 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG891 [367] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG890 [368] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG891 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG892 [368] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG892 keyboard_event_pressed +//SEG893 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed // keyboard_event_pressed(byte zeropage($57) keycode) @@ -16839,69 +16842,69 @@ keyboard_event_pressed: { .label keycode = $57 .label return_11 = $c4 .label return_12 = $a5 - //SEG893 [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + //SEG894 [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG894 [382] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG895 [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG895 [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG896 [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG896 [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG897 [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG897 keyboard_event_pressed::@return + //SEG898 keyboard_event_pressed::@return breturn: - //SEG898 [385] return + //SEG899 [386] return rts } -//SEG899 keyboard_event_get +//SEG900 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { .label return = $58 .label return_3 = $7a - //SEG900 [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG901 [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b1 - //SEG901 keyboard_event_get::@1 + //SEG902 keyboard_event_get::@1 b1: - //SEG902 [387] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG903 [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG903 [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG904 [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 ldy keyboard_events_size lda keyboard_events,y sta return - //SEG904 [389] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG905 [390] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] breturn_from_b1: - //SEG905 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG906 [389] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG906 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG907 [390] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG907 [389] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG908 [390] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG908 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG909 [389] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG909 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG910 [390] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG910 keyboard_event_get::@return + //SEG911 keyboard_event_get::@return breturn: - //SEG911 [390] return + //SEG912 [391] return rts } -//SEG912 keyboard_event_scan +//SEG913 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -16919,294 +16922,294 @@ keyboard_event_scan: { .label row = $59 .label col = $5a .label event_type = $d2 - //SEG913 [392] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + //SEG914 [393] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] b7_from_keyboard_event_scan: - //SEG914 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG915 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG915 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG916 [392] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG917 [393] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 lda #0 sta row jmp b7 - //SEG917 [392] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG918 [393] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] b7_from_b8: - //SEG918 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG919 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG920 [392] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG919 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG920 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG921 [393] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp b7 - //SEG921 keyboard_event_scan::@7 + //SEG922 keyboard_event_scan::@7 b7: - //SEG922 [393] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG923 [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG923 [394] call keyboard_matrix_read + //SEG924 [395] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG924 [395] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG925 [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b19 - //SEG925 keyboard_event_scan::@19 + //SEG926 keyboard_event_scan::@19 b19: - //SEG926 [396] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG927 [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG927 [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG928 [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b9_from_b19 jmp b16 - //SEG928 keyboard_event_scan::@16 + //SEG929 keyboard_event_scan::@16 b16: - //SEG929 [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG930 [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 lax keycode axs #-[8] stx keycode - //SEG930 [399] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG931 [400] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] b8_from_b15: b8_from_b16: - //SEG931 [399] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG932 [399] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG932 [400] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG933 [400] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp b8 - //SEG933 keyboard_event_scan::@8 + //SEG934 keyboard_event_scan::@8 b8: - //SEG934 [400] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG935 [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG935 [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG936 [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7_from_b8 - //SEG936 [402] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG937 [403] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] b17_from_b8: jmp b17 - //SEG937 keyboard_event_scan::@17 + //SEG938 keyboard_event_scan::@17 b17: - //SEG938 [403] call keyboard_event_pressed - //SEG939 [380] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG939 [404] call keyboard_event_pressed + //SEG940 [381] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] keyboard_event_pressed_from_b17: - //SEG940 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG941 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG941 [404] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG942 [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b20 - //SEG942 keyboard_event_scan::@20 + //SEG943 keyboard_event_scan::@20 b20: - //SEG943 [405] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG944 [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _0 - //SEG944 [406] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuz1_eq_0_then_la1 + //SEG945 [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuz1_eq_0_then_la1 lda _0 cmp #0 beq b1_from_b20 - //SEG945 [407] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG946 [408] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] b18_from_b20: jmp b18 - //SEG946 keyboard_event_scan::@18 + //SEG947 keyboard_event_scan::@18 b18: - //SEG947 [408] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG948 [409] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] b1_from_b18: b1_from_b20: jmp b1 - //SEG948 keyboard_event_scan::@1 + //SEG949 keyboard_event_scan::@1 b1: - //SEG949 [409] call keyboard_event_pressed - //SEG950 [380] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG950 [410] call keyboard_event_pressed + //SEG951 [381] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG951 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG952 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG952 [410] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG953 [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b21 - //SEG953 keyboard_event_scan::@21 + //SEG954 keyboard_event_scan::@21 b21: - //SEG954 [411] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG955 [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _3 - //SEG955 [412] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuz1_eq_0_then_la1 + //SEG956 [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuz1_eq_0_then_la1 lda _3 cmp #0 beq b2_from_b21 - //SEG956 [413] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG957 [414] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] b4_from_b21: jmp b4 - //SEG957 keyboard_event_scan::@4 + //SEG958 keyboard_event_scan::@4 b4: - //SEG958 [414] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG959 [415] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] b2_from_b21: b2_from_b4: jmp b2 - //SEG959 keyboard_event_scan::@2 + //SEG960 keyboard_event_scan::@2 b2: - //SEG960 [415] call keyboard_event_pressed - //SEG961 [380] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG961 [416] call keyboard_event_pressed + //SEG962 [381] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] keyboard_event_pressed_from_b2: - //SEG962 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG963 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG963 [416] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG964 [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b22 - //SEG964 keyboard_event_scan::@22 + //SEG965 keyboard_event_scan::@22 b22: - //SEG965 [417] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG966 [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _6 - //SEG966 [418] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuz1_eq_0_then_la1 + //SEG967 [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuz1_eq_0_then_la1 lda _6 cmp #0 beq b3_from_b22 - //SEG967 [419] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG968 [420] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] b5_from_b22: jmp b5 - //SEG968 keyboard_event_scan::@5 + //SEG969 keyboard_event_scan::@5 b5: - //SEG969 [420] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG970 [421] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] b3_from_b22: b3_from_b5: jmp b3 - //SEG970 keyboard_event_scan::@3 + //SEG971 keyboard_event_scan::@3 b3: - //SEG971 [421] call keyboard_event_pressed - //SEG972 [380] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG972 [422] call keyboard_event_pressed + //SEG973 [381] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] keyboard_event_pressed_from_b3: - //SEG973 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG974 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG974 [422] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG975 [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b23 - //SEG975 keyboard_event_scan::@23 + //SEG976 keyboard_event_scan::@23 b23: - //SEG976 [423] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG977 [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _9 - //SEG977 [424] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG978 [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _9 cmp #0 beq breturn - //SEG978 [425] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG979 [426] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] b6_from_b23: jmp b6 - //SEG979 keyboard_event_scan::@6 + //SEG980 keyboard_event_scan::@6 b6: jmp breturn - //SEG980 keyboard_event_scan::@return + //SEG981 keyboard_event_scan::@return breturn: - //SEG981 [426] return + //SEG982 [427] return rts // Something has changed on the keyboard row - check each column - //SEG982 [427] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG983 [428] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] b9_from_b10: - //SEG983 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG984 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG985 [427] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG984 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [428] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp b9 - //SEG986 [427] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG987 [428] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b9_from_b19: - //SEG987 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG988 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG989 [427] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuz1=vbuc1 + //SEG988 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG989 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG990 [428] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuz1=vbuc1 lda #0 sta col jmp b9 - //SEG990 keyboard_event_scan::@9 + //SEG991 keyboard_event_scan::@9 b9: - //SEG991 [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG992 [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _15 - //SEG992 [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG993 [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _15 ldy col and keyboard_matrix_col_bitmask,y sta _16 - //SEG993 [430] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG994 [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _16 cmp #0 beq b10_from_b9 jmp b12 - //SEG994 keyboard_event_scan::@12 + //SEG995 keyboard_event_scan::@12 b12: - //SEG995 [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG996 [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10_from_b12 jmp b13 - //SEG996 keyboard_event_scan::@13 + //SEG997 keyboard_event_scan::@13 b13: - //SEG997 [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG998 [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG998 [433] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG999 [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b11 jmp b14 - //SEG999 keyboard_event_scan::@14 + //SEG1000 keyboard_event_scan::@14 b14: - //SEG1000 [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1001 [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG1001 [435] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1002 [436] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG1003 [437] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] b10_from_b11: b10_from_b12: b10_from_b14: b10_from_b9: - //SEG1003 [436] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1004 [437] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG1004 keyboard_event_scan::@10 + //SEG1005 keyboard_event_scan::@10 b10: - //SEG1005 [437] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1006 [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1006 [438] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG1007 [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1007 [439] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG1008 [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp col bne b9_from_b10 jmp b15 - //SEG1008 keyboard_event_scan::@15 + //SEG1009 keyboard_event_scan::@15 b15: - //SEG1009 [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1010 [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8_from_b15 - //SEG1010 keyboard_event_scan::@11 + //SEG1011 keyboard_event_scan::@11 b11: - //SEG1011 [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuz1=vbuz2_bor_vbuc1 + //SEG1012 [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _23 - //SEG1012 [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1013 [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuz2 // Key released lda _23 ldy keyboard_events_size sta keyboard_events,y - //SEG1013 [443] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10_from_b11 } -//SEG1014 keyboard_matrix_read +//SEG1015 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -17217,75 +17220,75 @@ keyboard_matrix_read: { .label return = $d4 .label rowid = $c5 .label return_2 = $c6 - //SEG1015 [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1016 [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG1016 [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG1017 [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta return jmp breturn - //SEG1017 keyboard_matrix_read::@return + //SEG1018 keyboard_matrix_read::@return breturn: - //SEG1018 [446] return + //SEG1019 [447] return rts } -//SEG1019 render_show +//SEG1020 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .label d018val = $5d - //SEG1020 [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1021 [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1021 [448] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1022 [449] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1022 render_show::toD0182 + //SEG1023 render_show::toD0182 toD0182: - //SEG1023 [449] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1024 [450] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] b1_from_toD0182: - //SEG1024 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuz1=vbuc1 + //SEG1025 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuz1=vbuc1 lda #toD0182_return sta d018val jmp b1 - //SEG1025 render_show::@1 + //SEG1026 render_show::@1 b1: - //SEG1026 [450] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 + //SEG1027 [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 lda d018val sta D018 - //SEG1027 [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1028 [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1028 [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1029 [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1029 [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1030 [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG1030 render_show::@return + //SEG1031 render_show::@return breturn: - //SEG1031 [454] return + //SEG1032 [455] return rts - //SEG1032 [455] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1033 [456] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1033 render_show::toD0181 + //SEG1034 render_show::toD0181 toD0181: - //SEG1034 [449] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1035 [450] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] b1_from_toD0181: - //SEG1035 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuz1=vbuc1 + //SEG1036 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuz1=vbuc1 lda #toD0181_return sta d018val jmp b1 } -//SEG1036 play_init +//SEG1037 play_init // Initialize play data tables play_init: { .label _4 = $d5 @@ -17294,43 +17297,43 @@ play_init: { .label idx = $61 .label j = $5e .label b = $62 - //SEG1037 [457] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1038 [458] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1038 [457] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1039 [458] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1039 [457] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1040 [458] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1040 [457] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 + //SEG1041 [458] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG1041 [457] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1042 [458] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1042 [457] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1043 [457] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1044 [457] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1043 [458] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1044 [458] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1045 [458] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1045 play_init::@1 + //SEG1046 play_init::@1 b1: - //SEG1046 [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG1047 [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _4 - //SEG1047 [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1048 [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _4 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG1048 [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1049 [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG1049 [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1050 [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -17338,45 +17341,45 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1050 [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1051 [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1051 [463] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG1052 [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG1052 [464] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1053 [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp j bne b1_from_b1 jmp b2 - //SEG1053 play_init::@2 + //SEG1054 play_init::@2 b2: - //SEG1054 [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1055 [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1055 [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1056 [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1056 [467] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1057 [468] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] b3_from_b2: - //SEG1057 [467] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuz1=vbuc1 + //SEG1058 [468] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuz1=vbuc1 lda #0 sta b jmp b3 // Set the initial score add values - //SEG1058 [467] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1059 [468] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] b3_from_b3: - //SEG1059 [467] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1060 [468] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy jmp b3 - //SEG1060 play_init::@3 + //SEG1061 play_init::@3 b3: - //SEG1061 [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG1062 [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta _5 - //SEG1062 [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 + //SEG1063 [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 ldy _5 lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -17386,129 +17389,129 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1063 [470] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 + //SEG1064 [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG1064 [471] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1065 [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp b bne b3_from_b3 jmp breturn - //SEG1065 play_init::@return + //SEG1066 play_init::@return breturn: - //SEG1066 [472] return + //SEG1067 [473] return rts } -//SEG1067 sprites_irq_init +//SEG1068 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1068 asm { sei } + //SEG1069 asm { sei } sei - //SEG1069 [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1070 asm { ldaCIA1_INTERRUPT } + //SEG1071 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1071 [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1072 [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1073 [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1074 [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1074 [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1075 [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1075 [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1076 [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1076 [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1077 [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1077 [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1078 [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1078 asm { cli } + //SEG1079 asm { cli } cli jmp breturn - //SEG1079 sprites_irq_init::@return + //SEG1080 sprites_irq_init::@return breturn: - //SEG1080 [484] return + //SEG1081 [485] return rts } -//SEG1081 sprites_init +//SEG1082 sprites_init // Setup the sprites sprites_init: { .label s2 = $d7 .label xpos = $64 .label s = $63 - //SEG1082 [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG1083 [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1083 [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG1084 [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1084 [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1085 [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1085 [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1086 [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1086 [489] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1087 [490] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1087 [489] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1088 [490] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1088 [489] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG1089 [490] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG1089 [489] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1090 [490] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1090 [489] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1091 [489] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1091 [490] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1092 [490] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1092 sprites_init::@1 + //SEG1093 sprites_init::@1 b1: - //SEG1093 [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG1094 [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG1094 [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1095 [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG1095 [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1096 [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #BLACK ldy s sta SPRITES_COLS,y - //SEG1096 [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1097 [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1097 [494] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG1098 [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG1098 [495] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1099 [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp s bne b1_from_b1 jmp breturn - //SEG1099 sprites_init::@return + //SEG1100 sprites_init::@return breturn: - //SEG1100 [496] return + //SEG1101 [497] return rts } -//SEG1101 render_init +//SEG1102 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3 @@ -17517,108 +17520,108 @@ render_init: { .label li_2 = $68 .label i = $65 jmp vicSelectGfxBank1 - //SEG1102 render_init::vicSelectGfxBank1 + //SEG1103 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1103 [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1104 [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1104 [499] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1105 [500] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1105 render_init::vicSelectGfxBank1_toDd001 + //SEG1106 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1106 render_init::vicSelectGfxBank1_@1 + //SEG1107 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1107 [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1108 [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG1108 render_init::@2 + //SEG1109 render_init::@2 b2: - //SEG1109 [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1110 [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1110 [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1111 [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1112 [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1112 [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1113 [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1113 [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1114 [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1114 [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1115 [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1115 [507] call render_screen_original - //SEG1116 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1116 [508] call render_screen_original + //SEG1117 [520] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] render_screen_original_from_b2: - //SEG1117 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1118 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [508] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1119 [509] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: jmp b3 - //SEG1119 render_init::@3 + //SEG1120 render_init::@3 b3: - //SEG1120 [509] call render_screen_original - //SEG1121 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1121 [510] call render_screen_original + //SEG1122 [520] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1122 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1123 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1123 [510] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1124 [511] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] b1_from_b3: - //SEG1124 [510] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1125 [511] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1125 [510] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1126 [511] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1126 [510] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuz1=vbuc1 + //SEG1127 [511] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1127 [510] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1128 [511] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1128 [510] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1129 [510] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1130 [510] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1129 [511] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1130 [511] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1131 [511] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1131 render_init::@1 + //SEG1132 render_init::@1 b1: - //SEG1132 [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG1133 [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _15 - //SEG1133 [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _15 lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1135 [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _15 lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1135 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1136 [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -17626,7 +17629,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1136 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1137 [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -17634,19 +17637,19 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1137 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG1138 [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1138 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1139 [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp i bne b1_from_b1 jmp breturn - //SEG1139 render_init::@return + //SEG1140 render_init::@return breturn: - //SEG1140 [518] return + //SEG1141 [519] return rts } -//SEG1141 render_screen_original +//SEG1142 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 // render_screen_original(byte* zeropage($6f) screen) @@ -17658,191 +17661,191 @@ render_screen_original: { .label oscr = $6b .label ocols = $6d .label y = $6a - //SEG1142 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1143 [521] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1143 [520] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1144 [521] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1144 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1145 [521] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1145 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1146 [521] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1146 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1147 [521] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1147 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1148 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1148 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1149 [521] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] b1_from_b5: - //SEG1149 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1150 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1151 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1152 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1153 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1150 [521] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1151 [521] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1152 [521] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1153 [521] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1154 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1154 render_screen_original::@1 + //SEG1155 render_screen_original::@1 b1: - //SEG1155 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1156 [522] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1156 [521] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 + //SEG1157 [522] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG1157 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1158 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1158 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1159 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1159 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1160 [522] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1160 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1161 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1162 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1161 [522] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1162 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1163 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1163 render_screen_original::@2 + //SEG1164 render_screen_original::@2 b2: - //SEG1164 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1165 [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1165 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1166 [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1166 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1167 [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1167 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1168 [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1168 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG1169 [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG1169 [527] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1170 [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp x bne b2_from_b2 - //SEG1170 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1171 [529] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1171 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1172 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1173 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1174 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1175 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1172 [529] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1173 [529] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1174 [529] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1175 [529] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1176 [529] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1176 render_screen_original::@3 + //SEG1177 render_screen_original::@3 b3: - //SEG1177 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1178 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1179 [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1179 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1180 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1181 [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1181 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1182 [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1182 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1183 [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1183 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG1184 [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG1184 [536] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1185 [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 lda #$24 cmp x bne b3_from_b3 - //SEG1185 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1186 [538] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1186 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1187 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1188 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1187 [538] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1188 [538] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1189 [538] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1189 render_screen_original::@4 + //SEG1190 render_screen_original::@4 b4: - //SEG1190 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1191 [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1191 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1192 [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1192 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1193 [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1193 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1194 [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1194 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 + //SEG1195 [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG1195 [543] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1196 [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b4_from_b4 jmp b5 - //SEG1196 render_screen_original::@5 + //SEG1197 render_screen_original::@5 b5: - //SEG1197 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1198 [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1198 [545] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1199 [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b5 jmp breturn - //SEG1199 render_screen_original::@return + //SEG1200 render_screen_original::@return breturn: - //SEG1200 [546] return + //SEG1201 [547] return rts } -//SEG1201 sid_rnd_init +//SEG1202 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1202 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 + //SEG1203 [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1203 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1204 [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1204 sid_rnd_init::@return + //SEG1205 sid_rnd_init::@return breturn: - //SEG1205 [549] return + //SEG1206 [550] return rts } -//SEG1206 sprites_irq +//SEG1207 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers @@ -17856,129 +17859,129 @@ sprites_irq: { .label ptr_2 = $df .label ptr_3 = $dc .label ptr_4 = $dd - //SEG1207 entry interrupt(HARDWARE_CLOBBER) + //SEG1208 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG1208 asm { cld } + //SEG1209 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1209 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG1210 [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 // Place the sprites lda irq_sprite_ypos sta ypos - //SEG1210 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1211 [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG1211 [553] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1214 [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 - //SEG1214 [556] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG1215 [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy irq_raster_next iny sty _0 - //SEG1215 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuz2 + //SEG1216 [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuz2 // Wait for the y-position before changing sprite pointers lda _0 sta raster_sprite_gfx_modify jmp b8 - //SEG1216 sprites_irq::@8 + //SEG1217 sprites_irq::@8 b8: - //SEG1217 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1218 [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG1218 sprites_irq::@9 + //SEG1219 sprites_irq::@9 b9: - //SEG1219 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG1220 [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG1220 [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1221 [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG1221 sprites_irq::@10 + //SEG1222 sprites_irq::@10 b10: - //SEG1222 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1223 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG1223 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1224 [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG1224 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1226 [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1226 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG1227 [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG1227 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG1228 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG1228 sprites_irq::@2 + //SEG1229 sprites_irq::@2 b2: - //SEG1229 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1230 [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1230 [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1231 [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG1231 sprites_irq::@6 + //SEG1232 sprites_irq::@6 b6: - //SEG1232 [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1233 [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG1233 sprites_irq::@7 + //SEG1234 sprites_irq::@7 b7: - //SEG1234 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1235 [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1235 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1236 [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1236 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1237 [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1237 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1238 [574] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG1238 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1239 [574] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy jmp b5 - //SEG1239 sprites_irq::@5 + //SEG1240 sprites_irq::@5 b5: - //SEG1240 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1241 [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1241 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1242 [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1242 sprites_irq::@return + //SEG1243 sprites_irq::@return breturn: - //SEG1243 [576] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1244 [577] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -17986,64 +17989,64 @@ sprites_irq: { regy: ldy #00 rti - //SEG1244 sprites_irq::@4 + //SEG1245 sprites_irq::@4 b4: - //SEG1245 [577] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG1246 [578] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1246 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1247 [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1247 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1248 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1249 [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG1249 sprites_irq::@3 + //SEG1250 sprites_irq::@3 b3: - //SEG1250 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1251 [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1251 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1252 [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1252 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1253 [584] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG1253 sprites_irq::toSpritePtr2 + //SEG1254 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG1254 sprites_irq::@11 + //SEG1255 sprites_irq::@11 b11: - //SEG1255 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1256 [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG1256 sprites_irq::@1 + //SEG1257 sprites_irq::@1 b1: - //SEG1257 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1258 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG1258 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1259 [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG1259 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1261 [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1261 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG1262 [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG1262 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG1263 [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 @@ -18148,11 +18151,12 @@ sprites_irq: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] (byte) render_screen_showing#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ ] ( ) always clobbers reg byte a -Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( ) always clobbers reg byte a -Statement [10] (byte) irq_cnt#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [2] (dword) score_bcd#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [11] (byte) irq_cnt#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ current_ypos#13 current_ypos#98 current_ypos#99 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] @@ -18162,9 +18166,9 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ c Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Statement [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a +Statement [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] @@ -18172,23 +18176,23 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ k Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Statement [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a +Statement [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] -Statement [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a +Statement [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a +Statement [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a +Statement [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a +Statement [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a +Statement [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a +Statement [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Statement [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Statement [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a +Statement [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] @@ -18203,88 +18207,88 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ l Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a +Statement [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a +Statement [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y +Statement [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] -Statement [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] -Statement [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:173 [ play_spawn_current::$7 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] -Statement [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] -Statement [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Statement [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] -Statement [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#64 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a -Statement [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#64 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] -Statement [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ play_movement::key_event#0 ] -Statement [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:146 [ play_movement::render#2 ] -Statement [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a +Statement [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Statement [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] -Statement [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:159 [ play_collision::i#1 ] -Statement [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:172 [ play_spawn_current::current_piece_idx#0 ] -Statement [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:171 [ play_update_score::removed#0 ] -Statement [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Statement [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] -Statement [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a -Statement [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a +Statement [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a +Statement [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a +Statement [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] @@ -18293,223 +18297,224 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:74 [ g Removing always clobbered register reg byte x as potential for zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] -Statement [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] -Statement [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -Statement [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:192 [ play_lock_current::i#1 ] -Statement [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] -Statement [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] -Statement [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a +Statement [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Statement [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y +Statement [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Statement [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Statement [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a +Statement [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y +Statement [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ play_init::j#2 play_init::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] -Statement [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Statement [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:13::play_init:24 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] -Statement [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ sprites_init::s#2 sprites_init::s#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ render_init::i#2 render_init::i#1 ] -Statement [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:216 [ render_init::$15 ] -Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:219 [ sprites_irq::ptr#0 ] -Statement [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [577] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [577] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [578] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ ] ( ) always clobbers reg byte a -Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( ) always clobbers reg byte a -Statement [10] (byte) irq_cnt#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a -Statement [49] if((byte) game_over#10==(byte) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a +Statement [2] (dword) score_bcd#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [11] (byte) irq_cnt#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a +Statement [50] if((byte) game_over#10==(byte) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ main::key_event#0 ] -Statement [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a -Statement [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a -Statement [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a -Statement [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Statement [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a -Statement [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a -Statement [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a -Statement [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a -Statement [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a -Statement [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a -Statement [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a -Statement [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a -Statement [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y +Statement [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a +Statement [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a +Statement [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a +Statement [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a +Statement [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a +Statement [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a +Statement [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a +Statement [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a +Statement [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a +Statement [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Statement [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a +Statement [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y +Statement [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a +Statement [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a +Statement [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a +Statement [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a +Statement [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Statement [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a +Statement [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a +Statement [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a +Statement [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a +Statement [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ play_movement::key_event#0 ] -Statement [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a -Statement [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a -Statement [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x +Statement [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] @@ -18517,259 +18522,260 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:55 [ c Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a -Statement [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a -Statement [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a -Statement [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y -Statement [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a -Statement [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a -Statement [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a +Statement [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a +Statement [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a +Statement [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y +Statement [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y +Statement [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a +Statement [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y +Statement [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Statement [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:13::play_init:24 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Statement [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a -Statement [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a -Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [577] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [577] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [578] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ ] ( ) always clobbers reg byte a -Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( ) always clobbers reg byte a -Statement [10] (byte) irq_cnt#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a -Statement [49] if((byte) game_over#10==(byte) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a -Statement [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:70 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a -Statement [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a -Statement [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:68 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a -Statement [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Statement [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:68::render_bcd:79 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:82 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:85 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:88 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:91 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:68::render_bcd:94 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a -Statement [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:66 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a -Statement [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:63 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a -Statement [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:57 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:52 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a -Statement [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:52::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a -Statement [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:52::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:52::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ) always clobbers reg byte a -Statement [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ) always clobbers reg byte a -Statement [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:52::play_move_down:166 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ) always clobbers reg byte a -Statement [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a -Statement [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:52::play_move_down:166::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a -Statement [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a -Statement [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y -Statement [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a -Statement [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:12::play_movement:52::play_move_down:166::play_update_score:277::play_increase_level:319 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:52::play_move_down:166::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a -Statement [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:52::play_move_down:166::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:52::play_move_down:166::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:403 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:409 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:415 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:44::keyboard_event_pressed:421 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:46 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a reg byte y -Statement [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x -Statement [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a -Statement [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a -Statement [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a -Statement [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y -Statement [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:44 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:44::keyboard_matrix_read:394 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:42 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a -Statement [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a -Statement [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [2] (dword) score_bcd#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [11] (byte) irq_cnt#0 ← (byte) 0 [ score_bcd#0 ] ( ) always clobbers reg byte a +Statement [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#98 current_ypos#6 current_xpos#119 current_xpos#100 current_piece_gfx#112 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ( main:13 [ score_bcd#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#102 current_piece_gfx#124 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a +Statement [50] if((byte) game_over#10==(byte) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a +Statement [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ( main:13 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#99 render_screen_render#65 current_xpos#120 current_piece_gfx#113 ] ) always clobbers reg byte a +Statement [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:13::render_screen_swap:71 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a +Statement [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a +Statement [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a +Statement [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a +Statement [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a +Statement [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a +Statement [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:13::render_score:69 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a +Statement [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a +Statement [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Statement [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a +Statement [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:13::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:13::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y +Statement [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a +Statement [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:13::render_next:37 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:13::render_next:67 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:13::render_moving:35 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:13::render_moving:64 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:13::render_playfield:30 [ score_bcd#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:13::render_playfield:58 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a +Statement [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:13::play_movement:53 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#99 ] ) always clobbers reg byte a +Statement [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:13::play_movement:53::play_move_rotate:179 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:13::play_movement:53::play_move_rotate:179::play_collision:194 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:232 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_leftright:174::play_collision:243 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_collision:267 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:26::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_spawn_current:28::play_collision:296 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280::play_collision:296 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#98 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:13::play_movement:53::play_move_leftright:174 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ) always clobbers reg byte a +Statement [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ) always clobbers reg byte a +Statement [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#96 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:13::play_movement:53::play_move_down:167 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#93 current_piece_gfx#117 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ) always clobbers reg byte a +Statement [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#100 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a +Statement [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:13::play_spawn_current:26 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:13::play_spawn_current:28 [ score_bcd#0 current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:13::play_movement:53::play_move_down:167::play_spawn_current:280 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Statement [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a +Statement [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 ] ) always clobbers reg byte a +Statement [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 score_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a +Statement [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a +Statement [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y +Statement [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#66 level_bcd#8 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ( main:13::play_movement:53::play_move_down:167::play_update_score:278::play_increase_level:320 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#29 score_bcd#29 level#21 current_movedown_slow#66 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:13::play_movement:53::play_move_down:167::play_remove_lines:274 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:13::play_movement:53::play_move_down:167::play_lock_current:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:13::play_movement:53::play_move_down:167::keyboard_event_pressed:252 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:404 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:410 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:416 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:13::keyboard_event_scan:45::keyboard_event_pressed:422 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:13::keyboard_event_get:47 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a reg byte y +Statement [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x +Statement [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a +Statement [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a +Statement [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a +Statement [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y +Statement [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y +Statement [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a +Statement [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:13::keyboard_event_scan:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y +Statement [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:13::keyboard_event_scan:45::keyboard_matrix_read:395 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:13::render_show:43 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Statement [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:13::play_init:24 [ score_bcd#0 play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:13::play_init:24 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Statement [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:13::play_init:24 [ score_bcd#0 current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a -Statement [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a -Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:507 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:509 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [577] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:13::sprites_irq_init:22 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:13::sprites_init:20 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:13::sprites_init:20 [ score_bcd#0 sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:13::render_init:18 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:13::render_init:18 [ score_bcd#0 render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:13::render_init:18::render_screen_original:508 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:13::render_init:18::render_screen_original:510 [ score_bcd#0 render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:13::sid_rnd_init:16 [ score_bcd#0 ] ) always clobbers reg byte a +Statement [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [577] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [578] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] : zp ZP_BYTE:2 , Potential registers zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] : zp ZP_BYTE:3 , Potential registers zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] : zp ZP_BYTE:4 , @@ -18816,7 +18822,7 @@ Potential registers zp ZP_BYTE:53 [ play_move_leftright::return#2 ] : zp ZP_BYTE Potential registers zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] : zp ZP_BYTE:55 , Potential registers zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] : zp ZP_WORD:56 , -Potential registers zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] : zp ZP_DWORD:58 , +Potential registers zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] : zp ZP_DWORD:58 , Potential registers zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] : zp ZP_BYTE:62 , Potential registers zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] : zp ZP_BYTE:63 , Potential registers zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] : zp ZP_BYTE:64 , @@ -18969,7 +18975,7 @@ Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:208 [ keyboard_event_scan: Uplift Scope [play_collision] 38,006.5: zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] 20,002: zp ZP_BYTE:160 [ play_collision::$5 ] 13,378.25: zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] 12,223.44: zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] 2,002: zp ZP_BYTE:156 [ play_collision::$14 ] 1,615.62: zp ZP_BYTE:159 [ play_collision::i#1 ] 1,326.38: zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] 1,118.76: zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp ZP_WORD:157 [ play_collision::playfield_line#0 ] 476.33: zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] 51.62: zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 18: zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 4: zp ZP_BYTE:151 [ play_collision::return#14 ] 4: zp ZP_BYTE:161 [ play_collision::return#13 ] 4: zp ZP_BYTE:163 [ play_collision::return#1 ] 4: zp ZP_BYTE:167 [ play_collision::return#0 ] 4: zp ZP_BYTE:174 [ play_collision::return#10 ] 1.43: zp ZP_BYTE:52 [ play_collision::return#15 ] Uplift Scope [play_lock_current] 38,006.5: zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] 14,001.4: zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp ZP_BYTE:192 [ play_lock_current::i#1 ] 2,002: zp ZP_BYTE:189 [ play_lock_current::$4 ] 1,155: zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] 754.92: zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Uplift Scope [play_remove_lines] 19,004.21: zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,938.14: zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] 17,501.75: zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp ZP_BYTE:188 [ play_remove_lines::c#0 ] 2,566.89: zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] 1,634.97: zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp ZP_BYTE:169 [ play_remove_lines::return#0 ] -Uplift Scope [] 58,858.91: zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 2,120.54: zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 209.73: zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] 193.66: zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 74.29: zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] 61.29: zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] 60.28: zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] 60.26: zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] 42.02: zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 32: zp ZP_WORD:43 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] 30.62: zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#64 ] 29.4: zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] 24: zp ZP_BYTE:15 [ render_screen_render#15 render_screen_render#66 ] 23.17: zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] 20.4: zp ZP_BYTE:23 [ current_ypos#13 current_ypos#98 current_ypos#99 ] 20.4: zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] 18.41: zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] 17.41: zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 16.93: zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] 15.34: zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] 14.83: zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] 14.77: zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 14.1: zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] 13.49: zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] 12.63: zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] 12.62: zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] 12.38: zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 11.97: zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] 10.83: zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] 4.76: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4.17: zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Uplift Scope [] 58,858.91: zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 2,120.54: zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 209.73: zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] 193.66: zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 74.29: zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] 61.29: zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] 60.28: zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] 60.26: zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] 42.02: zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 32: zp ZP_WORD:43 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] 30.62: zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#64 ] 29.4: zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] 24: zp ZP_BYTE:15 [ render_screen_render#15 render_screen_render#66 ] 23.17: zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] 20.4: zp ZP_BYTE:23 [ current_ypos#13 current_ypos#98 current_ypos#99 ] 20.4: zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] 18.41: zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] 17.41: zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 16.93: zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] 15.34: zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] 14.83: zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] 14.77: zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 14.1: zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] 13.64: zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] 12.63: zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] 12.62: zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] 12.38: zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 11.97: zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] 10.83: zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] 4.76: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4.17: zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Uplift Scope [render_moving] 2,605.75: zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,835.17: zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] 1,490.13: zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp ZP_BYTE:138 [ render_moving::current_cell#0 ] 202: zp ZP_BYTE:134 [ render_moving::$1 ] 202: zp ZP_BYTE:135 [ render_moving::$6 ] 163.38: zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] 110.2: zp ZP_WORD:136 [ render_moving::screen_line#0 ] 96.71: zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Uplift Scope [render_next] 1,970.3: zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] 1,787.5: zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] 1,657: zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] 1,001: zp ZP_BYTE:133 [ render_next::cell#0 ] 169.86: zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] 66.87: zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] 1: zp ZP_BYTE:131 [ render_next::$9 ] Uplift Scope [play_increase_level] 4,004: zp ZP_BYTE:187 [ play_increase_level::$5 ] 2,502.5: zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp ZP_BYTE:186 [ play_increase_level::$1 ] @@ -18996,243 +19002,243 @@ Uplift Scope [sid_rnd_init] Uplift Scope [render_screen_swap] Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 4701492 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 4699908 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] Limited combination testing to 100 combinations of 524288 possible. -Uplifting [play_collision] best 4551492 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:156 [ play_collision::$14 ] zp ZP_BYTE:159 [ play_collision::i#1 ] zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:157 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:161 [ play_collision::return#13 ] zp ZP_BYTE:163 [ play_collision::return#1 ] zp ZP_BYTE:167 [ play_collision::return#0 ] zp ZP_BYTE:174 [ play_collision::return#10 ] zp ZP_BYTE:52 [ play_collision::return#15 ] +Uplifting [play_collision] best 4549908 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:156 [ play_collision::$14 ] zp ZP_BYTE:159 [ play_collision::i#1 ] zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:157 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:161 [ play_collision::return#13 ] zp ZP_BYTE:163 [ play_collision::return#1 ] zp ZP_BYTE:167 [ play_collision::return#0 ] zp ZP_BYTE:174 [ play_collision::return#10 ] zp ZP_BYTE:52 [ play_collision::return#15 ] Limited combination testing to 100 combinations of 429981696 possible. -Uplifting [play_lock_current] best 4457492 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:192 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplifting [play_lock_current] best 4455908 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:192 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Limited combination testing to 100 combinations of 2916 possible. -Uplifting [play_remove_lines] best 4318492 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:188 [ play_remove_lines::c#0 ] zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:169 [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 4316908 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:188 [ play_remove_lines::c#0 ] zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:169 [ play_remove_lines::return#0 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [] best 4318250 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:43 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] reg byte x [ render_screen_render#22 render_screen_render#64 ] reg byte x [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] reg byte a [ render_screen_render#15 render_screen_render#66 ] zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte x [ current_ypos#13 current_ypos#98 current_ypos#99 ] zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Uplifting [] best 4316666 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:43 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] reg byte x [ render_screen_render#22 render_screen_render#64 ] reg byte x [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] reg byte a [ render_screen_render#15 render_screen_render#66 ] zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte x [ current_ypos#13 current_ypos#98 current_ypos#99 ] zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Limited combination testing to 100 combinations of 1944 possible. -Uplifting [render_moving] best 4303250 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:134 [ render_moving::$1 ] zp ZP_BYTE:135 [ render_moving::$6 ] zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplifting [render_moving] best 4301666 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:134 [ render_moving::$1 ] zp ZP_BYTE:135 [ render_moving::$6 ] zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Limited combination testing to 100 combinations of 15552 possible. -Uplifting [render_next] best 4288246 combination zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$9 ] +Uplifting [render_next] best 4286662 combination zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$9 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [play_increase_level] best 4274240 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] -Uplifting [render_playfield] best 4273240 combination zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$6 ] zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [play_increase_level] best 4272656 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] +Uplifting [render_playfield] best 4271656 combination zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$6 ] zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [keyboard_matrix_read] best 4261234 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [render_screen_original] best 4259134 combination zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [play_spawn_current] best 4253115 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:173 [ play_spawn_current::$7 ] -Uplifting [main] best 4251915 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] -Uplifting [play_movement] best 4251303 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:124 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ] +Uplifting [keyboard_matrix_read] best 4259650 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [render_screen_original] best 4257550 combination zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [play_spawn_current] best 4251531 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Uplifting [main] best 4250331 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] +Uplifting [play_movement] best 4249719 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:124 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ] Limited combination testing to 100 combinations of 576 possible. -Uplifting [keyboard_event_get] best 4250397 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [play_init] best 4250187 combination reg byte a [ play_init::$5 ] zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$4 ] zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [keyboard_event_get] best 4248813 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [play_init] best 4248603 combination reg byte a [ play_init::$5 ] zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$4 ] zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [render_bcd] best 4250157 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:130 [ render_bcd::$4 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] +Uplifting [render_bcd] best 4248573 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:130 [ render_bcd::$4 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] Limited combination testing to 100 combinations of 1536 possible. -Uplifting [render_init] best 4249987 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$15 ] zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] -Uplifting [sprites_init] best 4249817 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [play_move_down] best 4249784 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:170 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:72 [ play_move_down::return#3 ] +Uplifting [render_init] best 4248403 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$15 ] zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] +Uplifting [sprites_init] best 4248233 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [play_move_down] best 4248200 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:170 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:72 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [keyboard_event_pressed] best 4249764 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 4248180 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [sprites_irq] best 4249740 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:222 [ sprites_irq::ptr#1 ] zp ZP_BYTE:217 [ sprites_irq::ypos#0 ] zp ZP_BYTE:219 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 4248156 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:222 [ sprites_irq::ptr#1 ] zp ZP_BYTE:217 [ sprites_irq::ypos#0 ] zp ZP_BYTE:219 [ sprites_irq::ptr#0 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_rotate] best 4249722 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 4248138 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_update_score] best 4249700 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:171 [ play_update_score::removed#0 ] zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 4248116 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:171 [ play_update_score::removed#0 ] zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [play_move_leftright] best 4249673 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:53 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 4248089 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:53 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [render_show] best 4249664 combination reg byte a [ render_show::d018val#3 ] -Uplifting [render_score] best 4249664 combination zp ZP_WORD:5 [ render_score::screen#3 ] -Uplifting [sid_rnd_init] best 4249664 combination -Uplifting [render_screen_swap] best 4249664 combination -Uplifting [sprites_irq_init] best 4249664 combination +Uplifting [render_show] best 4248080 combination reg byte a [ render_show::d018val#3 ] +Uplifting [render_score] best 4248080 combination zp ZP_WORD:5 [ render_score::screen#3 ] +Uplifting [sid_rnd_init] best 4248080 combination +Uplifting [render_screen_swap] best 4248080 combination +Uplifting [sprites_irq_init] best 4248080 combination Attempting to uplift remaining variables inzp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Uplifting [] best 4249664 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [] best 4248080 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] -Uplifting [play_collision] best 4249664 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +Uplifting [play_collision] best 4248080 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Uplifting [play_lock_current] best 4249664 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Uplifting [play_lock_current] best 4248080 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Attempting to uplift remaining variables inzp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 4099664 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 4098080 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 4099664 combination zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] -Uplifting [play_lock_current] best 4099664 combination zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Uplifting [play_lock_current] best 4098080 combination zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] -Uplifting [play_collision] best 4099664 combination zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] +Uplifting [play_collision] best 4098080 combination zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Uplifting [keyboard_event_scan] best 4099664 combination zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] +Uplifting [keyboard_event_scan] best 4098080 combination zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 4099664 combination zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:188 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 4099664 combination zp ZP_BYTE:188 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:188 [ play_remove_lines::c#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Uplifting [render_moving] best 4099664 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] +Uplifting [render_moving] best 4098080 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Uplifting [play_remove_lines] best 4099664 combination zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:192 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 4099664 combination zp ZP_BYTE:192 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 4098080 combination zp ZP_BYTE:192 [ play_lock_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Uplifting [] best 4099664 combination zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Uplifting [] best 4098080 combination zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 4099664 combination zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 4098080 combination zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] -Uplifting [render_playfield] best 4099664 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] +Uplifting [render_playfield] best 4098080 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:156 [ play_collision::$14 ] -Uplifting [play_collision] best 4095664 combination reg byte a [ play_collision::$14 ] +Uplifting [play_collision] best 4094080 combination reg byte a [ play_collision::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 4095664 combination zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 4094080 combination zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:159 [ play_collision::i#1 ] -Uplifting [play_collision] best 4095664 combination zp ZP_BYTE:159 [ play_collision::i#1 ] +Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:159 [ play_collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 4095664 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 4094080 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Uplifting [render_moving] best 4095664 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Uplifting [render_moving] best 4094080 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] -Uplifting [play_collision] best 4095664 combination zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] +Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 4095664 combination zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 4094080 combination zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 4095664 combination zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 4094080 combination zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 4095664 combination zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -Uplifting [play_lock_current] best 4095664 combination zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplifting [play_lock_current] best 4094080 combination zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:134 [ render_moving::$1 ] -Uplifting [render_moving] best 4095064 combination reg byte a [ render_moving::$1 ] +Uplifting [render_moving] best 4093480 combination reg byte a [ render_moving::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:135 [ render_moving::$6 ] -Uplifting [render_moving] best 4094664 combination reg byte a [ render_moving::$6 ] +Uplifting [render_moving] best 4093080 combination reg byte a [ render_moving::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Uplifting [] best 4094664 combination zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Uplifting [] best 4093080 combination zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 4094664 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 4093080 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] -Uplifting [render_next] best 4094664 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] +Uplifting [render_next] best 4093080 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] -Uplifting [render_moving] best 4094664 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] +Uplifting [render_moving] best 4093080 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Uplifting [render_moving] best 4094664 combination zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplifting [render_moving] best 4093080 combination zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] -Uplifting [] best 4094664 combination zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] +Uplifting [] best 4093080 combination zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] Attempting to uplift remaining variables inzp ZP_BYTE:132 [ render_next::next_piece_char#0 ] -Uplifting [render_next] best 4094664 combination zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] +Uplifting [render_next] best 4093080 combination zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Uplifting [] best 4094664 combination zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Uplifting [] best 4093080 combination zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Uplifting [] best 4094664 combination zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Uplifting [] best 4093080 combination zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Uplifting [play_collision] best 4094664 combination zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Uplifting [play_collision] best 4093080 combination zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Uplifting [] best 4094664 combination zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Uplifting [] best 4093080 combination zp ZP_BYTE:71 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Uplifting [play_movement] best 4094664 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Uplifting [play_movement] best 4093080 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] -Uplifting [play_init] best 4094564 combination reg byte x [ play_init::b#2 play_init::b#1 ] +Uplifting [play_init] best 4092980 combination reg byte x [ play_init::b#2 play_init::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] -Uplifting [] best 4094564 combination zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Uplifting [] best 4092980 combination zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] -Uplifting [] best 4094564 combination zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] +Uplifting [] best 4092980 combination zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Uplifting [] best 4094564 combination zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] +Uplifting [] best 4092980 combination zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 4094548 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Uplifting [play_collision] best 4092964 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 4094548 combination zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 4092964 combination zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 4094548 combination zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 4092964 combination zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#119 current_xpos#120 ] Attempting to uplift remaining variables inzp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 4094548 combination zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 4092964 combination zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#65 ] Attempting to uplift remaining variables inzp ZP_BYTE:124 [ play_movement::key_event#0 ] -Uplifting [play_movement] best 4094548 combination zp ZP_BYTE:124 [ play_movement::key_event#0 ] +Uplifting [play_movement] best 4092964 combination zp ZP_BYTE:124 [ play_movement::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 4094548 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Uplifting [play_move_rotate] best 4092964 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] -Uplifting [sprites_irq] best 4094548 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [sprites_irq] best 4092964 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Uplifting [] best 4094548 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Uplifting [] best 4092964 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:130 [ render_bcd::$4 ] -Uplifting [render_bcd] best 4094542 combination reg byte a [ render_bcd::$4 ] +Uplifting [render_bcd] best 4092958 combination reg byte a [ render_bcd::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:151 [ play_collision::return#14 ] -Uplifting [play_collision] best 4094536 combination reg byte a [ play_collision::return#14 ] +Uplifting [play_collision] best 4092952 combination reg byte a [ play_collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:153 [ play_move_rotate::$7 ] -Uplifting [play_move_rotate] best 4094530 combination reg byte x [ play_move_rotate::$7 ] +Uplifting [play_move_rotate] best 4092946 combination reg byte x [ play_move_rotate::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:161 [ play_collision::return#13 ] -Uplifting [play_collision] best 4094524 combination reg byte a [ play_collision::return#13 ] +Uplifting [play_collision] best 4092940 combination reg byte a [ play_collision::return#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:163 [ play_collision::return#1 ] -Uplifting [play_collision] best 4094518 combination reg byte a [ play_collision::return#1 ] +Uplifting [play_collision] best 4092934 combination reg byte a [ play_collision::return#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:167 [ play_collision::return#0 ] -Uplifting [play_collision] best 4094512 combination reg byte a [ play_collision::return#0 ] +Uplifting [play_collision] best 4092928 combination reg byte a [ play_collision::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:169 [ play_remove_lines::return#0 ] -Uplifting [play_remove_lines] best 4094506 combination reg byte a [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 4092922 combination reg byte a [ play_remove_lines::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:170 [ play_move_down::removed#0 ] -Uplifting [play_move_down] best 4094500 combination reg byte a [ play_move_down::removed#0 ] +Uplifting [play_move_down] best 4092916 combination reg byte a [ play_move_down::removed#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:174 [ play_collision::return#10 ] -Uplifting [play_collision] best 4094494 combination reg byte a [ play_collision::return#10 ] +Uplifting [play_collision] best 4092910 combination reg byte a [ play_collision::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:201 [ keyboard_event_scan::$0 ] -Uplifting [keyboard_event_scan] best 4094488 combination reg byte a [ keyboard_event_scan::$0 ] +Uplifting [keyboard_event_scan] best 4092904 combination reg byte a [ keyboard_event_scan::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 4094482 combination reg byte a [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 4092898 combination reg byte a [ keyboard_event_pressed::return#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:203 [ keyboard_event_scan::$3 ] -Uplifting [keyboard_event_scan] best 4094476 combination reg byte a [ keyboard_event_scan::$3 ] +Uplifting [keyboard_event_scan] best 4092892 combination reg byte a [ keyboard_event_scan::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 4094470 combination reg byte a [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 4092886 combination reg byte a [ keyboard_event_pressed::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:205 [ keyboard_event_scan::$6 ] -Uplifting [keyboard_event_scan] best 4094464 combination reg byte a [ keyboard_event_scan::$6 ] +Uplifting [keyboard_event_scan] best 4092880 combination reg byte a [ keyboard_event_scan::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 4094458 combination reg byte a [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 4092874 combination reg byte a [ keyboard_event_pressed::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:207 [ keyboard_event_scan::$9 ] -Uplifting [keyboard_event_scan] best 4094452 combination reg byte a [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 4092868 combination reg byte a [ keyboard_event_scan::$9 ] Attempting to uplift remaining variables inzp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] -Uplifting [play_move_rotate] best 4094443 combination reg byte a [ play_move_rotate::key_event#0 ] +Uplifting [play_move_rotate] best 4092859 combination reg byte a [ play_move_rotate::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:222 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 4094431 combination reg byte x [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 4092847 combination reg byte x [ sprites_irq::ptr#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:217 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 4094416 combination reg byte a [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 4092832 combination reg byte a [ sprites_irq::ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:219 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 4094401 combination reg byte x [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 4092817 combination reg byte x [ sprites_irq::ptr#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:141 [ play_move_down::key_event#0 ] -Uplifting [play_move_down] best 4094395 combination reg byte a [ play_move_down::key_event#0 ] +Uplifting [play_move_down] best 4092811 combination reg byte a [ play_move_down::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 4094395 combination zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 4092811 combination zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 4094377 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 4092793 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ play_collision::return#15 ] -Uplifting [play_collision] best 4094347 combination reg byte a [ play_collision::return#15 ] +Uplifting [play_collision] best 4092763 combination reg byte a [ play_collision::return#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 4094347 combination zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 4092763 combination zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:171 [ play_update_score::removed#0 ] -Uplifting [play_update_score] best 4094341 combination reg byte x [ play_update_score::removed#0 ] +Uplifting [play_update_score] best 4092757 combination reg byte x [ play_update_score::removed#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Uplifting [render_bcd] best 4094320 combination reg byte y [ render_bcd::only_low#6 ] +Uplifting [render_bcd] best 4092736 combination reg byte y [ render_bcd::only_low#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:146 [ play_movement::render#2 ] -Uplifting [play_movement] best 4094320 combination zp ZP_BYTE:146 [ play_movement::render#2 ] +Uplifting [play_movement] best 4092736 combination zp ZP_BYTE:146 [ play_movement::render#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_rotate::return#2 ] -Uplifting [play_move_rotate] best 4094311 combination reg byte a [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 4092727 combination reg byte a [ play_move_rotate::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_move_leftright::return#2 ] -Uplifting [play_move_leftright] best 4094302 combination reg byte a [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 4092718 combination reg byte a [ play_move_leftright::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ play_move_down::return#3 ] -Uplifting [play_move_down] best 4094295 combination reg byte x [ play_move_down::return#3 ] +Uplifting [play_move_down] best 4092711 combination reg byte x [ play_move_down::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:178 [ play_update_score::lines_before#0 ] -Uplifting [play_update_score] best 4094295 combination zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 4092711 combination zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:173 [ play_spawn_current::$7 ] -Uplifting [play_spawn_current] best 4094295 combination zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Uplifting [play_spawn_current] best 4092711 combination zp ZP_BYTE:173 [ play_spawn_current::$7 ] Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ render_score::screen#3 ] ] with [ zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6 Coalescing zero page register with common assignment [ zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp ZP_BYTE:146 [ play_movement::render#2 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ render_bcd::offset#6 ] ] with [ zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1 @@ -19264,7 +19270,7 @@ Allocated (was zp ZP_BYTE:49) zp ZP_BYTE:35 [ play_collision::i#2 play_collision Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:36 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:37 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Allocated (was zp ZP_WORD:56) zp ZP_WORD:38 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -Allocated (was zp ZP_DWORD:58) zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +Allocated (was zp ZP_DWORD:58) zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] Allocated (was zp ZP_BYTE:62) zp ZP_BYTE:44 [ level#33 level#10 level#17 level#19 level#21 ] Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:45 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] Allocated (was zp ZP_BYTE:64) zp ZP_BYTE:46 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] @@ -19316,9 +19322,9 @@ Allocated (was zp ZP_BYTE:192) zp ZP_BYTE:106 [ play_lock_current::i#1 ] Allocated (was zp ZP_BYTE:194) zp ZP_BYTE:107 [ keyboard_event_pressed::row_bits#0 ] Allocated (was zp ZP_BYTE:199) zp ZP_BYTE:108 [ keyboard_event_scan::row_scan#0 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG1207 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG1243 [576] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG1243 [576] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG1208 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG1244 [577] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG1244 [577] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -19446,6 +19452,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const toSpritePtr1_return = PLAYFIELD_SPRITES/$40 .label keyboard_events_size = $42 .label render_screen_showing = $55 + .label score_bcd = $28 .label irq_raster_next = $56 .label irq_sprite_ypos = $57 .label irq_sprite_ptr = $58 @@ -19465,7 +19472,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label render_screen_show = 2 .label current_movedown_counter = 4 .label lines_bcd = $26 - .label score_bcd = $28 .label current_piece_17 = $1e .label render_screen_render_33 = $e .label current_xpos_59 = $f @@ -19492,415 +19498,417 @@ b1: // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing -//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG6 [2] (dword) score_bcd#0 ← (byte) 0 -- vduz1=vbuc1 + // Current score in BCD-format + lda #0 + sta score_bcd + lda #0 + sta score_bcd+1 + sta score_bcd+2 + sta score_bcd+3 +//SEG7 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} // Original Color Data jmp b2 -//SEG9 @2 +//SEG10 @2 b2: -//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG11 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b3 -//SEG11 @3 +//SEG12 @3 b3: -//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 // The raster line of the next IRQ lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 +//SEG14 [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 // Y-pos of the sprites on the next IRQ lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG14 [8] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] +//SEG15 [9] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] toSpritePtr1_from_b3: jmp toSpritePtr1 -//SEG15 toSpritePtr1 +//SEG16 toSpritePtr1 toSpritePtr1: jmp b5 -//SEG16 @5 +//SEG17 @5 b5: -//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 +//SEG18 [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 // Index of the sprites to show on the next IRQ lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG18 [10] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 +//SEG19 [11] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 // Counting the 10 IRQs lda #0 sta irq_cnt -//SEG19 [11] phi from @5 to @4 [phi:@5->@4] +//SEG20 [12] phi from @5 to @4 [phi:@5->@4] b4_from_b5: jmp b4 -//SEG20 @4 +//SEG21 @4 b4: -//SEG21 [12] call main -//SEG22 [14] phi from @4 to main [phi:@4->main] +//SEG22 [13] call main +//SEG23 [15] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG23 [13] phi from @4 to @end [phi:@4->@end] +//SEG24 [14] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG24 @end +//SEG25 @end bend: -//SEG25 main +//SEG26 main main: { - //SEG26 [15] call sid_rnd_init + //SEG27 [16] call sid_rnd_init jsr sid_rnd_init jmp b8 - //SEG27 main::@8 + //SEG28 main::@8 b8: - //SEG28 asm { sei } + //SEG29 asm { sei } sei - //SEG29 [17] call render_init - //SEG30 [497] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [18] call render_init + //SEG31 [498] phi from main::@8 to render_init [phi:main::@8->render_init] render_init_from_b8: jsr render_init - //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG32 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG32 main::@9 + //SEG33 main::@9 b9: - //SEG33 [19] call sprites_init + //SEG34 [20] call sprites_init jsr sprites_init - //SEG34 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG35 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG35 main::@10 + //SEG36 main::@10 b10: - //SEG36 [21] call sprites_irq_init + //SEG37 [22] call sprites_irq_init jsr sprites_irq_init - //SEG37 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG38 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG38 main::@11 + //SEG39 main::@11 b11: - //SEG39 [23] call play_init - //SEG40 [456] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG40 [24] call play_init + //SEG41 [457] phi from main::@11 to play_init [phi:main::@11->play_init] play_init_from_b11: jsr play_init - //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG42 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG42 main::@12 + //SEG43 main::@12 b12: - //SEG43 [25] call play_spawn_current - //SEG44 [286] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG44 [26] call play_spawn_current + //SEG45 [287] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] play_spawn_current_from_b12: - //SEG45 [286] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG46 [287] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [286] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG47 [287] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current - //SEG47 [26] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG48 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] b13_from_b12: jmp b13 - //SEG48 main::@13 + //SEG49 main::@13 b13: - //SEG49 [27] call play_spawn_current - //SEG50 [286] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG50 [28] call play_spawn_current + //SEG51 [287] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] play_spawn_current_from_b13: - //SEG51 [286] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [286] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG52 [287] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG53 [287] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG54 [29] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG54 main::@14 + //SEG55 main::@14 b14: - //SEG55 [29] call render_playfield - //SEG56 [151] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG56 [30] call render_playfield + //SEG57 [152] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] render_playfield_from_b14: - //SEG57 [151] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 + //SEG58 [152] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 ldx #$20 jsr render_playfield jmp b15 - //SEG58 main::@15 + //SEG59 main::@15 b15: - //SEG59 [30] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuxx=vbuz1 + //SEG60 [31] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuxx=vbuz1 ldx current_ypos - //SEG60 [31] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG61 [32] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_119 - //SEG61 [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx_112 lda PIECES+1,y sta current_piece_gfx_112+1 - //SEG62 [33] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 + //SEG63 [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_100 - //SEG63 [34] call render_moving - //SEG64 [129] phi from main::@15 to render_moving [phi:main::@15->render_moving] + //SEG64 [35] call render_moving + //SEG65 [130] phi from main::@15 to render_moving [phi:main::@15->render_moving] render_moving_from_b15: - //SEG65 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy - //SEG66 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy - //SEG67 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [129] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + //SEG66 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy + //SEG67 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy + //SEG68 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy + //SEG69 [130] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 lda #$20 sta render_screen_render_33 - //SEG69 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy + //SEG70 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving jmp b16 - //SEG70 main::@16 + //SEG71 main::@16 b16: - //SEG71 [35] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 + //SEG72 [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 ldx play_spawn_current.piece_idx - //SEG72 [36] call render_next - //SEG73 [108] phi from main::@16 to render_next [phi:main::@16->render_next] + //SEG73 [37] call render_next + //SEG74 [109] phi from main::@16 to render_next [phi:main::@16->render_next] render_next_from_b16: - //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [108] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 + //SEG75 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy + //SEG76 [109] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 lda #$20 jsr render_next jmp b17 - //SEG76 main::@17 + //SEG77 main::@17 b17: - //SEG77 [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG78 [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG78 [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG79 [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG79 [39] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG80 [40] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG80 [39] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 + //SEG81 [40] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG81 [39] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 + //SEG82 [40] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG82 [39] phi (dword) score_bcd#18 = (byte) 0 [phi:main::@17->main::@1#2] -- vduz1=vbuc1 - lda #0 - sta score_bcd - lda #0 - sta score_bcd+1 - sta score_bcd+2 - sta score_bcd+3 - //SEG83 [39] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 + //SEG83 [40] phi (dword) score_bcd#18 = (dword) score_bcd#0 [phi:main::@17->main::@1#2] -- register_copy + //SEG84 [40] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 lda #0 sta lines_bcd lda #0 sta lines_bcd+1 - //SEG84 [39] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 + //SEG85 [40] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG85 [39] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 + //SEG86 [40] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG86 [39] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy - //SEG87 [39] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy - //SEG88 [39] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy - //SEG89 [39] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy - //SEG90 [39] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy - //SEG91 [39] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 + //SEG87 [40] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy + //SEG88 [40] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy + //SEG89 [40] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy + //SEG90 [40] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy + //SEG91 [40] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy + //SEG92 [40] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG92 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy - //SEG93 [39] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy - //SEG94 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy - //SEG95 [39] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 + //SEG93 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy + //SEG94 [40] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy + //SEG95 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy + //SEG96 [40] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 lda #$20 sta render_screen_render - //SEG96 [39] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 + //SEG97 [40] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG97 [39] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG98 [40] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG98 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy - //SEG99 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy - //SEG100 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy - //SEG101 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy - //SEG102 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy - //SEG103 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy - //SEG104 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy - //SEG105 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy - //SEG106 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy - //SEG107 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy - //SEG108 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy - //SEG109 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy - //SEG110 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy - //SEG111 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy - //SEG112 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy + //SEG99 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy + //SEG100 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy + //SEG101 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy + //SEG102 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy + //SEG103 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy + //SEG104 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy + //SEG105 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy + //SEG106 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy + //SEG107 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy + //SEG108 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy + //SEG109 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy + //SEG110 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy + //SEG111 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy + //SEG112 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy + //SEG113 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy jmp b1 - //SEG113 main::@1 + //SEG114 main::@1 b1: jmp b2 // Wait for a frame to pass - //SEG114 main::@2 + //SEG115 main::@2 b2: - //SEG115 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG116 [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 - //SEG116 [41] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG117 [42] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG117 main::@3 + //SEG118 main::@3 b3: - //SEG118 [42] call render_show + //SEG119 [43] call render_show jsr render_show - //SEG119 [43] phi from main::@3 to main::@18 [phi:main::@3->main::@18] + //SEG120 [44] phi from main::@3 to main::@18 [phi:main::@3->main::@18] b18_from_b3: jmp b18 - //SEG120 main::@18 + //SEG121 main::@18 b18: - //SEG121 [44] call keyboard_event_scan - //SEG122 [391] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] + //SEG122 [45] call keyboard_event_scan + //SEG123 [392] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] keyboard_event_scan_from_b18: jsr keyboard_event_scan - //SEG123 [45] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG124 [46] phi from main::@18 to main::@19 [phi:main::@18->main::@19] b19_from_b18: jmp b19 - //SEG124 main::@19 + //SEG125 main::@19 b19: - //SEG125 [46] call keyboard_event_get + //SEG126 [47] call keyboard_event_get jsr keyboard_event_get - //SEG126 [47] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG127 [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 jmp b20 - //SEG127 main::@20 + //SEG128 main::@20 b20: - //SEG128 [48] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - //SEG129 [49] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 + //SEG129 [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + //SEG130 [50] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b4 jmp b5 - //SEG130 main::@5 + //SEG131 main::@5 b5: - //SEG131 [50] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG132 [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 - //SEG132 main::@4 + //SEG133 main::@4 b4: - //SEG133 [51] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + //SEG134 [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx stx play_movement.key_event - //SEG134 [52] call play_movement + //SEG135 [53] call play_movement jsr play_movement - //SEG135 [53] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + //SEG136 [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 lda play_movement.return jmp b21 - //SEG136 main::@21 + //SEG137 main::@21 b21: - //SEG137 [54] (byte) main::render#1 ← (byte) play_movement::return#3 + //SEG138 [55] (byte) main::render#1 ← (byte) play_movement::return#3 jmp b6 - //SEG138 main::@6 + //SEG139 main::@6 b6: - //SEG139 [55] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG140 [56] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1_from_b6 jmp b7 - //SEG140 main::@7 + //SEG141 main::@7 b7: - //SEG141 [56] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + //SEG142 [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render - //SEG142 [57] call render_playfield - //SEG143 [151] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG143 [58] call render_playfield + //SEG144 [152] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] render_playfield_from_b7: - //SEG144 [151] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy + //SEG145 [152] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield jmp b22 - //SEG145 main::@22 + //SEG146 main::@22 b22: - //SEG146 [58] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuxx=vbuz1 + //SEG147 [59] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuxx=vbuz1 ldx current_ypos - //SEG147 [59] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG148 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_65 - //SEG148 [60] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG149 [61] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_120 - //SEG149 [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG150 [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_113 lda current_piece_gfx+1 sta current_piece_gfx_113+1 - //SEG150 [62] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 + //SEG151 [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_101 - //SEG151 [63] call render_moving - //SEG152 [129] phi from main::@22 to render_moving [phi:main::@22->render_moving] + //SEG152 [64] call render_moving + //SEG153 [130] phi from main::@22 to render_moving [phi:main::@22->render_moving] render_moving_from_b22: - //SEG153 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy - //SEG154 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy - //SEG155 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy - //SEG156 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy - //SEG157 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy + //SEG154 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy + //SEG155 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy + //SEG156 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy + //SEG157 [130] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy + //SEG158 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy jsr render_moving jmp b23 - //SEG158 main::@23 + //SEG159 main::@23 b23: - //SEG159 [64] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 + //SEG160 [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 lda render_screen_render - //SEG160 [65] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 + //SEG161 [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 ldx next_piece_idx - //SEG161 [66] call render_next - //SEG162 [108] phi from main::@23 to render_next [phi:main::@23->render_next] + //SEG162 [67] call render_next + //SEG163 [109] phi from main::@23 to render_next [phi:main::@23->render_next] render_next_from_b23: - //SEG163 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy - //SEG164 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy + //SEG164 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy + //SEG165 [109] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy jsr render_next - //SEG165 [67] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG166 [68] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG166 main::@24 + //SEG167 main::@24 b24: - //SEG167 [68] call render_score + //SEG168 [69] call render_score jsr render_score - //SEG168 [69] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG169 [70] phi from main::@24 to main::@25 [phi:main::@24->main::@25] b25_from_b24: jmp b25 - //SEG169 main::@25 + //SEG170 main::@25 b25: - //SEG170 [70] call render_screen_swap + //SEG171 [71] call render_screen_swap jsr render_screen_swap - //SEG171 [39] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG172 [40] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG172 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy - //SEG173 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy - //SEG174 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy - //SEG175 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy - //SEG176 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy - //SEG177 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy - //SEG178 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy - //SEG179 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy - //SEG180 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy - //SEG181 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy - //SEG182 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy - //SEG183 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy - //SEG184 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy - //SEG185 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy - //SEG186 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy - //SEG187 [39] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy - //SEG188 [39] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy + //SEG173 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy + //SEG174 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy + //SEG175 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy + //SEG176 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy + //SEG177 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy + //SEG178 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy + //SEG179 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy + //SEG180 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy + //SEG181 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy + //SEG182 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy + //SEG183 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy + //SEG184 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy + //SEG185 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy + //SEG186 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy + //SEG187 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy + //SEG188 [40] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy + //SEG189 [40] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy jmp b1 } -//SEG189 render_screen_swap +//SEG190 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG190 [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG191 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_render sta render_screen_render - //SEG191 [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG192 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_show sta render_screen_show jmp breturn - //SEG192 render_screen_swap::@return + //SEG193 render_screen_swap::@return breturn: - //SEG193 [73] return + //SEG194 [74] return rts } -//SEG194 render_score +//SEG195 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -19908,153 +19916,153 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG195 [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 + //SEG196 [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b1_from_render_score - //SEG196 [76] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG197 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG197 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG198 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG198 [75] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] + //SEG199 [76] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] b1_from_render_score: jmp b1 - //SEG199 render_score::@1 + //SEG200 render_score::@1 b1: - //SEG200 [76] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] + //SEG201 [77] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] b2_from_b1: - //SEG201 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 + //SEG202 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG202 render_score::@2 + //SEG203 render_score::@2 b2: - //SEG203 [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 - //SEG204 [78] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuxx=_deref_pbuc1 + //SEG204 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 + //SEG205 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG205 [79] call render_bcd - //SEG206 [96] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG206 [80] call render_bcd + //SEG207 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG207 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG208 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG208 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG209 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG209 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG210 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG210 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG211 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b3 - //SEG211 render_score::@3 + //SEG212 render_score::@3 b3: - //SEG212 [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 - //SEG213 [81] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuxx=_deref_pbuc1 + //SEG213 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 + //SEG214 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG214 [82] call render_bcd - //SEG215 [96] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] + //SEG215 [83] call render_bcd + //SEG216 [97] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] render_bcd_from_b3: - //SEG216 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy - //SEG217 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1 + //SEG217 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy + //SEG218 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG218 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG219 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy + //SEG220 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy jsr render_bcd jmp b4 - //SEG220 render_score::@4 + //SEG221 render_score::@4 b4: - //SEG221 [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 - //SEG222 [84] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG222 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 + //SEG223 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG223 [85] call render_bcd - //SEG224 [96] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] + //SEG224 [86] call render_bcd + //SEG225 [97] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] render_bcd_from_b4: - //SEG225 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy - //SEG226 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1 + //SEG226 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy + //SEG227 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG227 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 + //SEG228 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG228 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy + //SEG229 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG229 render_score::@5 + //SEG230 render_score::@5 b5: - //SEG230 [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 + //SEG231 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG231 [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 - //SEG232 [88] call render_bcd - //SEG233 [96] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG232 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 + //SEG233 [89] call render_bcd + //SEG234 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG234 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG235 [96] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG235 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG236 [97] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG236 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 + //SEG237 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG237 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG238 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG238 render_score::@6 + //SEG239 render_score::@6 b6: - //SEG239 [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 + //SEG240 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG240 [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 - //SEG241 [91] call render_bcd - //SEG242 [96] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG241 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 + //SEG242 [92] call render_bcd + //SEG243 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG243 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG244 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG244 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG245 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG245 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 + //SEG246 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG246 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG247 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG247 render_score::@7 + //SEG248 render_score::@7 b7: - //SEG248 [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 - //SEG249 [93] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 + //SEG249 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 + //SEG250 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG250 [94] call render_bcd - //SEG251 [96] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG251 [95] call render_bcd + //SEG252 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG252 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG253 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG253 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG254 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG254 [96] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG255 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG255 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG256 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG256 render_score::@return + //SEG257 render_score::@return breturn: - //SEG257 [95] return + //SEG258 [96] return rts } -//SEG258 render_bcd +//SEG259 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -20066,7 +20074,7 @@ render_bcd: { .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG259 [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG260 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -20074,52 +20082,52 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG260 [98] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG261 [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1_from_render_bcd jmp b2 - //SEG261 render_bcd::@2 + //SEG262 render_bcd::@2 b2: - //SEG262 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + //SEG263 [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG263 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG264 [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG264 [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG265 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG265 [102] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG266 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG266 [103] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG267 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG267 [103] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG268 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG268 render_bcd::@1 + //SEG269 render_bcd::@1 b1: - //SEG269 [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 + //SEG270 [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG270 [105] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG271 [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG271 [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG272 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y jmp breturn - //SEG272 render_bcd::@return + //SEG273 render_bcd::@return breturn: - //SEG273 [107] return + //SEG274 [108] return rts } -//SEG274 render_next +//SEG275 render_next // Render the next tetromino in the "next" area render_next: { // Find the screen area @@ -20128,110 +20136,110 @@ render_next: { .label next_piece_gfx = $a .label screen_next_area = $c .label l = 9 - //SEG275 [109] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 + //SEG276 [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1_from_render_next - //SEG276 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG277 [112] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] b2_from_render_next: - //SEG277 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG278 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [110] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] + //SEG279 [111] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] b1_from_render_next: jmp b1 - //SEG279 render_next::@1 + //SEG280 render_next::@1 b1: - //SEG280 [111] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] + //SEG281 [112] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] b2_from_b1: - //SEG281 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 + //SEG282 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 jmp b2 - //SEG282 render_next::@2 + //SEG283 render_next::@2 b2: - //SEG283 [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 + //SEG284 [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 txa asl tay - //SEG284 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG285 [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_NEXT_CHARS,x sta next_piece_char - //SEG285 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy + //SEG286 [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy lda PIECES,y sta next_piece_gfx lda PIECES+1,y sta next_piece_gfx+1 - //SEG286 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG287 [116] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] b3_from_b2: - //SEG287 [115] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG288 [116] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG288 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG289 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG289 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG290 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy jmp b3 - //SEG290 [115] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] + //SEG291 [116] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] b3_from_b8: - //SEG291 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy - //SEG292 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy - //SEG293 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy + //SEG292 [116] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy + //SEG293 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy + //SEG294 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy jmp b3 - //SEG294 render_next::@3 + //SEG295 render_next::@3 b3: - //SEG295 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG296 [117] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] b4_from_b3: - //SEG296 [116] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 + //SEG297 [117] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG297 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG298 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG298 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG299 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy jmp b4 - //SEG299 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG300 [117] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] b4_from_b6: - //SEG300 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG301 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG302 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG301 [117] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG302 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG303 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy jmp b4 - //SEG303 render_next::@4 + //SEG304 render_next::@4 b4: - //SEG304 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 + //SEG305 [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (next_piece_gfx),y - //SEG305 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG306 [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG306 [119] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 + //SEG307 [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 jmp b7 - //SEG307 render_next::@7 + //SEG308 render_next::@7 b7: - //SEG308 [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG309 [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen_next_area),y jmp b6 - //SEG309 render_next::@6 + //SEG310 render_next::@6 b6: - //SEG310 [121] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 + //SEG311 [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG311 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx + //SEG312 [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx inx - //SEG312 [123] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG313 [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4_from_b6 jmp b8 - //SEG313 render_next::@8 + //SEG314 render_next::@8 b8: - //SEG314 [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 + //SEG315 [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 lda #$24 clc adc screen_next_area @@ -20239,26 +20247,26 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG315 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG316 [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG316 [126] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG317 [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b3_from_b8 jmp breturn - //SEG317 render_next::@return + //SEG318 render_next::@return breturn: - //SEG318 [127] return + //SEG319 [128] return rts - //SEG319 render_next::@5 + //SEG320 render_next::@5 b5: - //SEG320 [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG321 [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG321 render_moving +//SEG322 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -20267,201 +20275,201 @@ render_moving: { .label xpos = $16 .label i = $15 .label l = $14 - //SEG322 [130] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx + //SEG323 [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx stx ypos - //SEG323 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG324 [132] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG324 [131] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG325 [132] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG325 [131] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG326 [132] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG326 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG327 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG327 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG328 [132] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG328 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG329 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG330 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG329 [132] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG330 [132] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG331 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG331 render_moving::@1 + //SEG332 render_moving::@1 b1: - //SEG332 [132] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG333 [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos cmp #1+1 bcs b2 jmp b7 - //SEG333 render_moving::@7 + //SEG334 render_moving::@7 b7: - //SEG334 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG335 [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax i axs #-[4] stx i - //SEG335 [134] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG336 [135] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] b3_from_b5: b3_from_b7: - //SEG336 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG337 [135] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy jmp b3 - //SEG337 render_moving::@3 + //SEG338 render_moving::@3 b3: - //SEG338 [135] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + //SEG339 [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 inc ypos - //SEG339 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG340 [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG340 [137] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG341 [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b1_from_b3 jmp breturn - //SEG341 render_moving::@return + //SEG342 render_moving::@return breturn: - //SEG342 [138] return + //SEG343 [139] return rts - //SEG343 render_moving::@2 + //SEG344 render_moving::@2 b2: - //SEG344 [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG345 [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc adc ypos - //SEG345 [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG346 [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG346 [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa + //SEG347 [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG347 [142] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG348 [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG348 [143] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG349 [144] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG349 [143] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + //SEG350 [144] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG350 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG351 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG351 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG352 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG352 [143] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG353 [144] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG353 [143] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG354 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG355 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG354 [144] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG355 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG356 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG356 render_moving::@4 + //SEG357 render_moving::@4 b4: - //SEG357 [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG358 [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG358 [145] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG359 [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG359 [146] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG360 [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b6 - //SEG360 render_moving::@6 + //SEG361 render_moving::@6 b6: - //SEG361 [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG362 [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y jmp b5 - //SEG362 render_moving::@5 + //SEG363 render_moving::@5 b5: - //SEG363 [148] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG364 [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG364 [149] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + //SEG365 [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx inx - //SEG365 [150] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG366 [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG366 render_playfield +//SEG367 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = $19 .label i = $18 .label c = $1b .label l = $17 - //SEG367 [152] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG368 [153] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG368 [152] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG369 [153] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG369 [152] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG370 [153] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG370 [152] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG371 [153] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG371 [152] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG372 [152] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG372 [153] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG373 [153] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG373 render_playfield::@1 + //SEG374 render_playfield::@1 b1: - //SEG374 [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 + //SEG375 [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc l - //SEG375 [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG376 [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG376 [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa + //SEG377 [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG377 [156] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG378 [157] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG378 [156] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG379 [157] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG379 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG380 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG380 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG381 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG381 [156] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG382 [157] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG382 [156] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG383 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG384 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG383 [157] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG384 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG385 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG385 render_playfield::@2 + //SEG386 render_playfield::@2 b2: - //SEG386 [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG387 [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG387 [158] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG388 [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG388 [159] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG389 [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [160] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG390 [161] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG391 [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp c bne b2_from_b2 jmp b3 - //SEG391 render_playfield::@3 + //SEG392 render_playfield::@3 b3: - //SEG392 [162] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG393 [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [163] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG394 [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp l bne b1_from_b3 jmp breturn - //SEG394 render_playfield::@return + //SEG395 render_playfield::@return breturn: - //SEG395 [164] return + //SEG396 [165] return rts } -//SEG396 play_movement +//SEG397 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -20470,141 +20478,141 @@ play_movement: { .label render = $1c .label return = $1c .label key_event = $5a - //SEG397 [165] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG398 [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG398 [166] call play_move_down + //SEG399 [167] call play_move_down jsr play_move_down - //SEG399 [167] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG400 [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa jmp b2 - //SEG400 play_movement::@2 + //SEG401 play_movement::@2 b2: - //SEG401 [168] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa + //SEG402 [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa sta render - //SEG402 [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG403 [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG403 [170] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG404 [171] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] breturn_from_b2: breturn_from_b4: - //SEG404 [170] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG405 [170] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG406 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG407 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG405 [171] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG406 [171] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG407 [171] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG408 [171] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy jmp breturn - //SEG408 play_movement::@return + //SEG409 play_movement::@return breturn: - //SEG409 [171] return + //SEG410 [172] return rts - //SEG410 play_movement::@1 + //SEG411 play_movement::@1 b1: - //SEG411 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG412 [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG412 [173] call play_move_leftright + //SEG413 [174] call play_move_leftright jsr play_move_leftright - //SEG413 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG414 [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 jmp b3 - //SEG414 play_movement::@3 + //SEG415 play_movement::@3 b3: - //SEG415 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG416 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG416 [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG417 [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG417 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG418 [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG418 [178] call play_move_rotate + //SEG419 [179] call play_move_rotate jsr play_move_rotate - //SEG419 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG420 [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 jmp b4 - //SEG420 play_movement::@4 + //SEG421 play_movement::@4 b4: - //SEG421 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG422 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG422 [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG423 [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return jmp breturn_from_b4 } -//SEG423 play_move_rotate +//SEG424 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte register(A) key_event) play_move_rotate: { .label orientation = $1d - //SEG424 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG425 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 jmp b4 - //SEG425 play_move_rotate::@4 + //SEG426 play_move_rotate::@4 b4: - //SEG426 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG427 [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG427 [184] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG428 [185] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b4: breturn_from_b6: - //SEG428 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG429 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG430 [184] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG429 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG430 [185] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG431 [185] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG431 play_move_rotate::@return + //SEG432 play_move_rotate::@return breturn: - //SEG432 [185] return + //SEG433 [186] return rts - //SEG433 play_move_rotate::@2 + //SEG434 play_move_rotate::@2 b2: - //SEG434 [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuxx=vbuz1_plus_vbuc1 + //SEG435 [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuxx=vbuz1_plus_vbuc1 lax current_orientation axs #-[$10] - //SEG435 [187] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG436 [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation - //SEG436 [188] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG437 [189] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] b3_from_b1: b3_from_b2: - //SEG437 [188] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy + //SEG438 [189] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy jmp b3 - //SEG438 play_move_rotate::@3 + //SEG439 play_move_rotate::@3 b3: - //SEG439 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG440 [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG440 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG441 [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG441 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG442 [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG442 [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG443 [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG443 [193] call play_collision - //SEG444 [201] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG444 [194] call play_collision + //SEG445 [202] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] play_collision_from_b3: - //SEG445 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG446 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG447 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG448 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG446 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG447 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG448 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG449 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG449 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG450 [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15 jmp b6 - //SEG450 play_move_rotate::@6 + //SEG451 play_move_rotate::@6 b6: - //SEG451 [195] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - //SEG452 [196] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG452 [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + //SEG453 [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b6 jmp b5 - //SEG453 play_move_rotate::@5 + //SEG454 play_move_rotate::@5 b5: - //SEG454 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG455 [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG455 [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG456 [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -20612,24 +20620,24 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG456 [184] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG457 [185] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] breturn_from_b5: - //SEG457 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG458 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG459 [184] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG458 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG459 [185] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG460 [185] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG460 play_move_rotate::@1 + //SEG461 play_move_rotate::@1 b1: - //SEG461 [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 + //SEG462 [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 lax current_orientation axs #$10 - //SEG462 [200] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG463 [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation jmp b3_from_b1 } -//SEG463 play_collision +//SEG464 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected // play_collision(byte zeropage($20) xpos, byte zeropage($21) ypos, byte register(X) orientation) @@ -20646,7 +20654,7 @@ play_collision: { .label i_3 = $23 .label i_10 = $23 .label i_12 = $23 - //SEG464 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG465 [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -20654,632 +20662,632 @@ play_collision: { bcc !+ inc piece_gfx+1 !: - //SEG465 [203] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG466 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG466 [203] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG467 [203] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG468 [204] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG468 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG469 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG469 play_collision::@1 + //SEG470 play_collision::@1 b1: - //SEG470 [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG471 [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda yp asl - //SEG471 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa + //SEG472 [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG472 [206] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG473 [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta xp - //SEG473 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG474 [208] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG474 [207] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG475 [208] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG475 [207] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG476 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG476 [208] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG477 [208] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG477 play_collision::@2 + //SEG478 play_collision::@2 b2: - //SEG478 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG479 [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG479 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG480 [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b7 - //SEG480 play_collision::@7 + //SEG481 play_collision::@7 b7: - //SEG481 [210] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG482 [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda yp cmp #PLAYFIELD_LINES bcc b4 - //SEG482 [215] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG483 [216] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] breturn_from_b7: - //SEG483 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG484 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG486 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and xp - //SEG486 [212] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG487 [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG487 [215] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG488 [216] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG488 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG489 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [213] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [215] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG492 [216] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG492 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG493 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG495 [215] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG496 [216] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG496 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG497 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG497 play_collision::@return + //SEG498 play_collision::@return breturn: - //SEG498 [216] return + //SEG499 [217] return rts - //SEG499 play_collision::@3 + //SEG500 play_collision::@3 b3: - //SEG500 [217] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + //SEG501 [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG501 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG502 [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG502 [219] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 + //SEG503 [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b10 jmp b8 - //SEG503 play_collision::@8 + //SEG504 play_collision::@8 b8: - //SEG504 [220] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + //SEG505 [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG505 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG506 [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG506 [222] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG507 [215] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG508 [216] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG508 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG509 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG509 play_collision::@9 + //SEG510 play_collision::@9 b9: - //SEG510 [223] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG511 [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_10 - //SEG511 [203] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG512 [204] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] b1_from_b9: - //SEG512 [203] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG513 [203] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG514 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG513 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG514 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG515 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG515 play_collision::@10 + //SEG516 play_collision::@10 b10: - //SEG516 [224] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG517 [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_12 - //SEG517 [207] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG518 [208] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] b2_from_b10: - //SEG518 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG519 [207] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG520 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG519 [208] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG520 [208] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG521 [208] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG521 play_move_leftright +//SEG522 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte register(A) key_event) play_move_leftright: { - //SEG522 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG523 [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 // Handle keyboard events cmp #KEY_COMMA beq b1 jmp b2 - //SEG523 play_move_leftright::@2 + //SEG524 play_move_leftright::@2 b2: - //SEG524 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG525 [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne breturn_from_b2 jmp b3 - //SEG525 play_move_leftright::@3 + //SEG526 play_move_leftright::@3 b3: - //SEG526 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG527 [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG527 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG528 [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG528 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG529 [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG529 [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG530 [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG530 [231] call play_collision - //SEG531 [201] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG531 [232] call play_collision + //SEG532 [202] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] play_collision_from_b3: - //SEG532 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG533 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG534 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG535 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG533 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG534 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG535 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG536 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG536 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG537 [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15 jmp b7 - //SEG537 play_move_leftright::@7 + //SEG538 play_move_leftright::@7 b7: - //SEG538 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG539 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG539 [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG540 [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b7 jmp b4 - //SEG540 play_move_leftright::@4 + //SEG541 play_move_leftright::@4 b4: - //SEG541 [235] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG542 [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG542 [236] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG543 [237] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] breturn_from_b4: breturn_from_b5: - //SEG543 [236] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG544 [236] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG544 [237] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG545 [237] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG545 [236] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG546 [237] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] breturn_from_b2: breturn_from_b6: breturn_from_b7: - //SEG546 [236] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG547 [236] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG547 [237] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG548 [237] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG548 play_move_leftright::@return + //SEG549 play_move_leftright::@return breturn: - //SEG549 [237] return + //SEG550 [238] return rts - //SEG550 play_move_leftright::@1 + //SEG551 play_move_leftright::@1 b1: - //SEG551 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 + //SEG552 [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG552 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG553 [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG553 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG554 [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG554 [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG555 [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_97 lda current_piece+1 sta current_piece_97+1 - //SEG555 [242] call play_collision - //SEG556 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG556 [243] call play_collision + //SEG557 [202] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG557 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG558 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG559 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG560 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG558 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG559 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG560 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG561 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG561 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG562 [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15 jmp b6 - //SEG562 play_move_leftright::@6 + //SEG563 play_move_leftright::@6 b6: - //SEG563 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG564 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG564 [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG565 [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b6 jmp b5 - //SEG565 play_move_leftright::@5 + //SEG566 play_move_leftright::@5 b5: - //SEG566 [246] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG567 [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b5 } -//SEG567 play_move_down +//SEG568 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { - //SEG568 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG569 [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG569 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG570 [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b1_from_play_move_down - //SEG570 [249] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG571 [250] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] b4_from_play_move_down: jmp b4 - //SEG571 play_move_down::@4 + //SEG572 play_move_down::@4 b4: - //SEG572 [250] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG573 [251] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] b1_from_b4: - //SEG573 [250] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG574 [251] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG574 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG575 [251] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG575 [250] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG576 [251] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG576 play_move_down::@1 + //SEG577 play_move_down::@1 b1: - //SEG577 [251] call keyboard_event_pressed - //SEG578 [380] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG578 [252] call keyboard_event_pressed + //SEG579 [381] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG579 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG580 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG580 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG581 [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 jmp b12 - //SEG581 play_move_down::@12 + //SEG582 play_move_down::@12 b12: - //SEG582 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG583 [254] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG583 [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG584 [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b12 jmp b5 - //SEG584 play_move_down::@5 + //SEG585 play_move_down::@5 b5: - //SEG585 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG586 [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b5 jmp b6 - //SEG586 play_move_down::@6 + //SEG587 play_move_down::@6 b6: - //SEG587 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG588 [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG588 [257] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG589 [258] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] b2_from_b12: b2_from_b5: b2_from_b6: - //SEG589 [257] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG590 [258] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy jmp b2 - //SEG590 play_move_down::@2 + //SEG591 play_move_down::@2 b2: - //SEG591 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG592 [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3_from_b2 jmp b7 - //SEG592 play_move_down::@7 + //SEG593 play_move_down::@7 b7: - //SEG593 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG594 [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG594 [260] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG595 [261] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] b3_from_b2: b3_from_b7: - //SEG595 [260] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG596 [261] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy jmp b3 - //SEG596 play_move_down::@3 + //SEG597 play_move_down::@3 b3: - //SEG597 [261] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG598 [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_b3 jmp b8 - //SEG598 play_move_down::@8 + //SEG599 play_move_down::@8 b8: - //SEG599 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG600 [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG600 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG601 [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG601 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG602 [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG602 [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG603 [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_96 lda current_piece+1 sta current_piece_96+1 - //SEG603 [266] call play_collision - //SEG604 [201] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG604 [267] call play_collision + //SEG605 [202] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] play_collision_from_b8: - //SEG605 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG606 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG607 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG608 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG606 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG607 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG608 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG609 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG609 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG610 [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15 jmp b13 - //SEG610 play_move_down::@13 + //SEG611 play_move_down::@13 b13: - //SEG611 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG612 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 + //SEG612 [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG613 [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b10 - //SEG613 [270] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG614 [271] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] b9_from_b13: jmp b9 - //SEG614 play_move_down::@9 + //SEG615 play_move_down::@9 b9: - //SEG615 [271] call play_lock_current + //SEG616 [272] call play_lock_current jsr play_lock_current - //SEG616 [272] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG617 [273] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] b14_from_b9: jmp b14 - //SEG617 play_move_down::@14 + //SEG618 play_move_down::@14 b14: - //SEG618 [273] call play_remove_lines - //SEG619 [339] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG619 [274] call play_remove_lines + //SEG620 [340] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] play_remove_lines_from_b14: jsr play_remove_lines - //SEG620 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 + //SEG621 [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 lda play_remove_lines.removed jmp b15 - //SEG621 play_move_down::@15 + //SEG622 play_move_down::@15 b15: - //SEG622 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG623 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG623 [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG624 [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG624 [277] call play_update_score + //SEG625 [278] call play_update_score jsr play_update_score - //SEG625 [278] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG626 [279] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] b16_from_b15: jmp b16 - //SEG626 play_move_down::@16 + //SEG627 play_move_down::@16 b16: - //SEG627 [279] call play_spawn_current - //SEG628 [286] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG628 [280] call play_spawn_current + //SEG629 [287] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] play_spawn_current_from_b16: - //SEG629 [286] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG630 [286] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG630 [287] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG631 [287] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current jmp b17 - //SEG631 play_move_down::@17 + //SEG632 play_move_down::@17 b17: - //SEG632 [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG633 [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG633 [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG634 [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG634 [282] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] + //SEG635 [283] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] b11_from_b17: - //SEG635 [282] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy - //SEG636 [282] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy - //SEG637 [282] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy - //SEG638 [282] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy - //SEG639 [282] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG636 [283] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy + //SEG637 [283] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy + //SEG638 [283] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy + //SEG639 [283] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy + //SEG640 [283] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG640 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy - //SEG641 [282] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy - //SEG642 [282] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy - //SEG643 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy - //SEG644 [282] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy - //SEG645 [282] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy - //SEG646 [282] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy - //SEG647 [282] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy + //SEG641 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy + //SEG642 [283] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy + //SEG643 [283] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy + //SEG644 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy + //SEG645 [283] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy + //SEG646 [283] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy + //SEG647 [283] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy + //SEG648 [283] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy jmp b11 - //SEG648 play_move_down::@11 + //SEG649 play_move_down::@11 b11: - //SEG649 [283] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG650 [284] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] breturn_from_b11: - //SEG650 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG651 [283] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG652 [283] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG653 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG654 [283] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG655 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG656 [283] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG657 [283] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG658 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG659 [283] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG660 [283] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG661 [283] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG662 [283] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG663 [283] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG651 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG652 [284] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG653 [284] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG654 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG655 [284] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG656 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG657 [284] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG658 [284] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG659 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG660 [284] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG661 [284] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG662 [284] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG663 [284] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG664 [284] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG664 [283] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG665 [284] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG665 [283] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG666 [284] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] breturn_from_b3: - //SEG666 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG667 [283] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG668 [283] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG669 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG670 [283] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG671 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG672 [283] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG673 [283] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG674 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG675 [283] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG676 [283] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG677 [283] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG678 [283] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG679 [283] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG680 [283] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG667 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG668 [284] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG669 [284] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG670 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG671 [284] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG672 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG673 [284] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG674 [284] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG675 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG676 [284] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG677 [284] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG678 [284] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG679 [284] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG680 [284] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG681 [284] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG681 play_move_down::@return + //SEG682 play_move_down::@return breturn: - //SEG682 [284] return + //SEG683 [285] return rts - //SEG683 play_move_down::@10 + //SEG684 play_move_down::@10 b10: - //SEG684 [285] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 + //SEG685 [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG685 [282] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG686 [283] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] b11_from_b10: - //SEG686 [282] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG687 [282] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG688 [282] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG689 [282] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG690 [282] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG691 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG692 [282] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG693 [282] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG694 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG695 [282] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG696 [282] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG697 [282] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG698 [282] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG687 [283] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG688 [283] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG689 [283] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG690 [283] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG691 [283] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG692 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG693 [283] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG694 [283] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG695 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG696 [283] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG697 [283] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG698 [283] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG699 [283] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG699 play_spawn_current +//SEG700 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { .label _7 = $61 .label piece_idx = $36 - //SEG700 [287] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG701 [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current ldx next_piece_idx - //SEG701 [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuxx_rol_1 + //SEG702 [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _7 - //SEG702 [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG703 [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG703 [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG704 [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG704 [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG705 [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG705 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG706 [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG706 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG707 [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG707 [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG708 [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy _7 lda PIECES,y sta current_piece_100 lda PIECES+1,y sta current_piece_100+1 - //SEG708 [295] call play_collision - //SEG709 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG709 [296] call play_collision + //SEG710 [202] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG710 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG711 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG712 [201] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG711 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG712 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG713 [202] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG713 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG714 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG714 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG715 [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15 jmp b4 - //SEG715 play_spawn_current::@4 + //SEG716 play_spawn_current::@4 b4: - //SEG716 [297] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 - //SEG717 [298] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG717 [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + //SEG718 [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b5_from_b4 - //SEG718 [300] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG719 [301] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] b1_from_b4: - //SEG719 [300] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG720 [301] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG720 [299] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG721 [300] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] b5_from_b4: jmp b5 - //SEG721 play_spawn_current::@5 + //SEG722 play_spawn_current::@5 b5: - //SEG722 [300] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG723 [301] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] b1_from_b5: - //SEG723 [300] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG724 [301] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy jmp b1 - //SEG724 play_spawn_current::@1 + //SEG725 play_spawn_current::@1 b1: - //SEG725 [301] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG726 [302] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG726 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG727 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG727 play_spawn_current::@2 + //SEG728 play_spawn_current::@2 b2: - //SEG728 [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG729 [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 jmp breturn - //SEG729 play_spawn_current::@return + //SEG730 play_spawn_current::@return breturn: - //SEG730 [303] return + //SEG731 [304] return rts - //SEG731 play_spawn_current::sid_rnd1 + //SEG732 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG732 [304] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG733 [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp b3 - //SEG733 play_spawn_current::@3 + //SEG734 play_spawn_current::@3 b3: - //SEG734 [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG735 [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG735 [301] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG736 [302] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] b2_from_b3: - //SEG736 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG737 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 } -//SEG737 play_update_score +//SEG738 play_update_score // Update the score based on the number of lines removed // play_update_score(byte register(X) removed) play_update_score: { .label lines_before = $62 .label add_bcd = $63 - //SEG738 [306] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG739 [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_play_update_score jmp b1 - //SEG739 play_update_score::@1 + //SEG740 play_update_score::@1 b1: - //SEG740 [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG741 [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG741 [308] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuaa_band_vbuc1 + //SEG742 [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG742 [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG743 [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG743 [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa + //SEG744 [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -21289,9 +21297,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG744 asm { sed } + //SEG745 asm { sed } sed - //SEG745 [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG746 [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -21299,7 +21307,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG746 [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG747 [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -21313,108 +21321,108 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG747 asm { cld } + //SEG748 asm { cld } cld - //SEG748 [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuaa=_lo_vwuz1 + //SEG749 [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG749 [316] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuaa=vbuaa_band_vbuc1 + //SEG750 [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG750 [317] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG751 [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn_from_b1 - //SEG751 [318] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG752 [319] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] b2_from_b1: jmp b2 - //SEG752 play_update_score::@2 + //SEG753 play_update_score::@2 b2: - //SEG753 [319] call play_increase_level + //SEG754 [320] call play_increase_level jsr play_increase_level - //SEG754 [320] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG755 [321] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] breturn_from_play_update_score: breturn_from_b1: breturn_from_b2: - //SEG755 [320] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG756 [320] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG757 [320] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG758 [320] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG759 [320] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG756 [321] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG757 [321] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG758 [321] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG759 [321] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG760 [321] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy jmp breturn - //SEG760 play_update_score::@return + //SEG761 play_update_score::@return breturn: - //SEG761 [321] return + //SEG762 [322] return rts } -//SEG762 play_increase_level +//SEG763 play_increase_level // Increase the level play_increase_level: { - //SEG763 [322] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG764 [323] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG764 [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG765 [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b1_from_play_increase_level jmp b3 - //SEG765 play_increase_level::@3 + //SEG766 play_increase_level::@3 b3: - //SEG766 [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG767 [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG767 [325] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG768 [326] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] b1_from_b3: - //SEG768 [325] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG769 [326] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG769 [325] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG770 [326] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b1_from_play_increase_level: - //SEG770 [325] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG771 [326] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b1 - //SEG771 play_increase_level::@1 + //SEG772 play_increase_level::@1 b1: - //SEG772 [326] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG773 [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG773 [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG774 [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG774 [328] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG775 [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b2_from_b1 jmp b4 - //SEG775 play_increase_level::@4 + //SEG776 play_increase_level::@4 b4: - //SEG776 [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG777 [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG777 [330] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG778 [331] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] b2_from_b1: b2_from_b4: - //SEG778 [330] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG779 [331] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG779 play_increase_level::@2 + //SEG780 play_increase_level::@2 b2: - //SEG780 asm { sed } + //SEG781 asm { sed } // Increase the score values gained sed - //SEG781 [332] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG782 [333] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] b5_from_b2: - //SEG782 [332] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 + //SEG783 [333] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 ldx #0 jmp b5 - //SEG783 [332] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG784 [333] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] b5_from_b5: - //SEG784 [332] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG785 [333] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy jmp b5 - //SEG785 play_increase_level::@5 + //SEG786 play_increase_level::@5 b5: - //SEG786 [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG787 [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG787 [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG788 [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -21429,23 +21437,23 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG788 [335] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG789 [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG789 [336] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG790 [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b5_from_b5 jmp b6 - //SEG790 play_increase_level::@6 + //SEG791 play_increase_level::@6 b6: - //SEG791 asm { cld } + //SEG792 asm { cld } cld jmp breturn - //SEG792 play_increase_level::@return + //SEG793 play_increase_level::@return breturn: - //SEG793 [338] return + //SEG794 [339] return rts } -//SEG794 play_remove_lines +//SEG795 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -21456,141 +21464,141 @@ play_remove_lines: { .label y = $38 .label removed = $39 .label full = $3b - //SEG795 [340] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG796 [341] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG796 [340] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG797 [341] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG797 [340] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG798 [341] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG798 [340] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG799 [341] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG799 [340] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG800 [341] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 // Read all lines and rewrite them - //SEG800 [340] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG801 [341] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] b1_from_b6: - //SEG801 [340] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG802 [340] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG803 [340] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG804 [340] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG802 [341] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG803 [341] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG804 [341] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG805 [341] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG805 play_remove_lines::@1 + //SEG806 play_remove_lines::@1 b1: - //SEG806 [341] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG807 [342] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG807 [341] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG808 [342] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG808 [341] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG809 [342] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG809 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG810 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG810 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG811 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG811 [341] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG812 [342] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG812 [341] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG813 [341] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG814 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG815 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG813 [342] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG814 [342] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG815 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG816 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG816 play_remove_lines::@2 + //SEG817 play_remove_lines::@2 b2: - //SEG817 [342] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG818 [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG818 [343] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG819 [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG819 [344] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG820 [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b9_from_b2 - //SEG820 [346] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG821 [347] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG821 [346] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG822 [347] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG822 [345] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG823 [346] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] b9_from_b2: jmp b9 - //SEG823 play_remove_lines::@9 + //SEG824 play_remove_lines::@9 b9: - //SEG824 [346] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG825 [347] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] b3_from_b9: - //SEG825 [346] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG826 [347] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy jmp b3 - //SEG826 play_remove_lines::@3 + //SEG827 play_remove_lines::@3 b3: - //SEG827 [347] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG828 [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG828 [348] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG829 [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG829 [349] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [350] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2_from_b3 jmp b4 - //SEG831 play_remove_lines::@4 + //SEG832 play_remove_lines::@4 b4: - //SEG832 [351] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG833 [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6_from_b4 jmp b5 - //SEG833 play_remove_lines::@5 + //SEG834 play_remove_lines::@5 b5: - //SEG834 [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG835 [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[PLAYFIELD_COLS] - //SEG835 [353] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [354] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG837 [355] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] b6_from_b4: b6_from_b5: - //SEG837 [354] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG838 [354] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG838 [355] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG839 [355] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy jmp b6 - //SEG839 play_remove_lines::@6 + //SEG840 play_remove_lines::@6 b6: - //SEG840 [355] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [356] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1_from_b6 - //SEG842 [357] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG843 [358] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b7_from_b6: b7_from_b8: - //SEG843 [357] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG844 [358] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy jmp b7 // Write zeros in the rest of the lines - //SEG844 play_remove_lines::@7 + //SEG845 play_remove_lines::@7 b7: - //SEG845 [358] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG846 [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 jmp breturn - //SEG846 play_remove_lines::@return + //SEG847 play_remove_lines::@return breturn: - //SEG847 [359] return + //SEG848 [360] return rts - //SEG848 play_remove_lines::@8 + //SEG849 play_remove_lines::@8 b8: - //SEG849 [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG850 [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG850 [361] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG851 [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b7_from_b8 } -//SEG851 play_lock_current +//SEG852 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label yp = $25 @@ -21602,168 +21610,168 @@ play_lock_current: { .label i_3 = $3d .label i_7 = $3d .label i_9 = $3d - //SEG852 [362] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 - //SEG853 [363] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG853 [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 + //SEG854 [364] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG854 [363] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG855 [364] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG855 [363] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG856 [364] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG856 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG857 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG857 play_lock_current::@1 + //SEG858 play_lock_current::@1 b1: - //SEG858 [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG859 [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda yp asl - //SEG859 [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa + //SEG860 [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG860 [366] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG861 [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta xp - //SEG861 [367] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG862 [368] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG862 [367] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG863 [368] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG863 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG864 [367] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG864 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG865 [368] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG865 play_lock_current::@2 + //SEG866 play_lock_current::@2 b2: - //SEG866 [368] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG867 [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG867 [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG868 [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG868 play_lock_current::@4 + //SEG869 play_lock_current::@4 b4: - //SEG869 [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG870 [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy xp sta (playfield_line),y jmp b3 - //SEG870 play_lock_current::@3 + //SEG871 play_lock_current::@3 b3: - //SEG871 [371] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + //SEG872 [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG872 [372] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG873 [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG873 [373] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG874 [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b7 jmp b5 - //SEG874 play_lock_current::@5 + //SEG875 play_lock_current::@5 b5: - //SEG875 [374] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + //SEG876 [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG876 [375] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG877 [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG877 [376] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG878 [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 jmp breturn - //SEG878 play_lock_current::@return + //SEG879 play_lock_current::@return breturn: - //SEG879 [377] return + //SEG880 [378] return rts - //SEG880 play_lock_current::@6 + //SEG881 play_lock_current::@6 b6: - //SEG881 [378] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG882 [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG882 [363] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG883 [364] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] b1_from_b6: - //SEG883 [363] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG884 [363] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG885 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG884 [364] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG885 [364] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG886 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG886 play_lock_current::@7 + //SEG887 play_lock_current::@7 b7: - //SEG887 [379] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG888 [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG888 [367] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG889 [368] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] b2_from_b7: - //SEG889 [367] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG890 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG891 [367] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG890 [368] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG891 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG892 [368] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG892 keyboard_event_pressed +//SEG893 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed // keyboard_event_pressed(byte zeropage($3f) keycode) keyboard_event_pressed: { .label row_bits = $6b .label keycode = $3f - //SEG893 [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG894 [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG894 [382] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG895 [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG895 [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG896 [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG896 [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG897 [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG897 keyboard_event_pressed::@return + //SEG898 keyboard_event_pressed::@return breturn: - //SEG898 [385] return + //SEG899 [386] return rts } -//SEG899 keyboard_event_get +//SEG900 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG900 [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG901 [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b1 - //SEG901 keyboard_event_get::@1 + //SEG902 keyboard_event_get::@1 b1: - //SEG902 [387] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG903 [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG903 [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG904 [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldy keyboard_events_size ldx keyboard_events,y - //SEG904 [389] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG905 [390] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] breturn_from_b1: - //SEG905 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG906 [389] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG906 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG907 [390] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG907 [389] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG908 [390] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG908 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG909 [389] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG909 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG910 [390] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff jmp breturn - //SEG910 keyboard_event_get::@return + //SEG911 keyboard_event_get::@return breturn: - //SEG911 [390] return + //SEG912 [391] return rts } -//SEG912 keyboard_event_scan +//SEG913 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -21772,258 +21780,258 @@ keyboard_event_scan: { .label row_scan = $6c .label keycode = $41 .label row = $40 - //SEG913 [392] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + //SEG914 [393] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] b7_from_keyboard_event_scan: - //SEG914 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG915 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG915 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG916 [392] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG917 [393] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 lda #0 sta row jmp b7 - //SEG917 [392] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG918 [393] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] b7_from_b8: - //SEG918 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG919 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG920 [392] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG919 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG920 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG921 [393] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp b7 - //SEG921 keyboard_event_scan::@7 + //SEG922 keyboard_event_scan::@7 b7: - //SEG922 [393] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG923 [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG923 [394] call keyboard_matrix_read + //SEG924 [395] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG924 [395] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG925 [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b19 - //SEG925 keyboard_event_scan::@19 + //SEG926 keyboard_event_scan::@19 b19: - //SEG926 [396] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG927 [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG927 [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG928 [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b9_from_b19 jmp b16 - //SEG928 keyboard_event_scan::@16 + //SEG929 keyboard_event_scan::@16 b16: - //SEG929 [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG930 [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 lax keycode axs #-[8] stx keycode - //SEG930 [399] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG931 [400] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] b8_from_b15: b8_from_b16: - //SEG931 [399] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG932 [399] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG932 [400] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG933 [400] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp b8 - //SEG933 keyboard_event_scan::@8 + //SEG934 keyboard_event_scan::@8 b8: - //SEG934 [400] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG935 [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG935 [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG936 [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7_from_b8 - //SEG936 [402] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG937 [403] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] b17_from_b8: jmp b17 - //SEG937 keyboard_event_scan::@17 + //SEG938 keyboard_event_scan::@17 b17: - //SEG938 [403] call keyboard_event_pressed - //SEG939 [380] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG939 [404] call keyboard_event_pressed + //SEG940 [381] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] keyboard_event_pressed_from_b17: - //SEG940 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG941 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG941 [404] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG942 [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 jmp b20 - //SEG942 keyboard_event_scan::@20 + //SEG943 keyboard_event_scan::@20 b20: - //SEG943 [405] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - //SEG944 [406] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 + //SEG944 [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + //SEG945 [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1_from_b20 - //SEG945 [407] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG946 [408] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] b18_from_b20: jmp b18 - //SEG946 keyboard_event_scan::@18 + //SEG947 keyboard_event_scan::@18 b18: - //SEG947 [408] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG948 [409] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] b1_from_b18: b1_from_b20: jmp b1 - //SEG948 keyboard_event_scan::@1 + //SEG949 keyboard_event_scan::@1 b1: - //SEG949 [409] call keyboard_event_pressed - //SEG950 [380] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG950 [410] call keyboard_event_pressed + //SEG951 [381] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG951 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG952 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG952 [410] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG953 [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 jmp b21 - //SEG953 keyboard_event_scan::@21 + //SEG954 keyboard_event_scan::@21 b21: - //SEG954 [411] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - //SEG955 [412] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 + //SEG955 [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + //SEG956 [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b21 - //SEG956 [413] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG957 [414] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] b4_from_b21: jmp b4 - //SEG957 keyboard_event_scan::@4 + //SEG958 keyboard_event_scan::@4 b4: - //SEG958 [414] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG959 [415] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] b2_from_b21: b2_from_b4: jmp b2 - //SEG959 keyboard_event_scan::@2 + //SEG960 keyboard_event_scan::@2 b2: - //SEG960 [415] call keyboard_event_pressed - //SEG961 [380] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG961 [416] call keyboard_event_pressed + //SEG962 [381] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] keyboard_event_pressed_from_b2: - //SEG962 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG963 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG963 [416] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG964 [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 jmp b22 - //SEG964 keyboard_event_scan::@22 + //SEG965 keyboard_event_scan::@22 b22: - //SEG965 [417] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - //SEG966 [418] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 + //SEG966 [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + //SEG967 [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b22 - //SEG967 [419] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG968 [420] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] b5_from_b22: jmp b5 - //SEG968 keyboard_event_scan::@5 + //SEG969 keyboard_event_scan::@5 b5: - //SEG969 [420] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG970 [421] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] b3_from_b22: b3_from_b5: jmp b3 - //SEG970 keyboard_event_scan::@3 + //SEG971 keyboard_event_scan::@3 b3: - //SEG971 [421] call keyboard_event_pressed - //SEG972 [380] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG972 [422] call keyboard_event_pressed + //SEG973 [381] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] keyboard_event_pressed_from_b3: - //SEG973 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG974 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG974 [422] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG975 [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 jmp b23 - //SEG975 keyboard_event_scan::@23 + //SEG976 keyboard_event_scan::@23 b23: - //SEG976 [423] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - //SEG977 [424] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG977 [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + //SEG978 [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG978 [425] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG979 [426] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] b6_from_b23: jmp b6 - //SEG979 keyboard_event_scan::@6 + //SEG980 keyboard_event_scan::@6 b6: jmp breturn - //SEG980 keyboard_event_scan::@return + //SEG981 keyboard_event_scan::@return breturn: - //SEG981 [426] return + //SEG982 [427] return rts // Something has changed on the keyboard row - check each column - //SEG982 [427] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG983 [428] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] b9_from_b10: - //SEG983 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG984 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG985 [427] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG984 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [428] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp b9 - //SEG986 [427] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG987 [428] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b9_from_b19: - //SEG987 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG988 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG989 [427] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 + //SEG988 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG989 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG990 [428] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 jmp b9 - //SEG990 keyboard_event_scan::@9 + //SEG991 keyboard_event_scan::@9 b9: - //SEG991 [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG992 [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG992 [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG993 [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG993 [430] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG994 [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b9 jmp b12 - //SEG994 keyboard_event_scan::@12 + //SEG995 keyboard_event_scan::@12 b12: - //SEG995 [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG996 [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10_from_b12 jmp b13 - //SEG996 keyboard_event_scan::@13 + //SEG997 keyboard_event_scan::@13 b13: - //SEG997 [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG998 [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG998 [433] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG999 [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 jmp b14 - //SEG999 keyboard_event_scan::@14 + //SEG1000 keyboard_event_scan::@14 b14: - //SEG1000 [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1001 [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG1001 [435] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1002 [436] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG1003 [437] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] b10_from_b11: b10_from_b12: b10_from_b14: b10_from_b9: - //SEG1003 [436] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1004 [437] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG1004 keyboard_event_scan::@10 + //SEG1005 keyboard_event_scan::@10 b10: - //SEG1005 [437] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1006 [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1006 [438] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1007 [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1007 [439] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG1008 [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b9_from_b10 jmp b15 - //SEG1008 keyboard_event_scan::@15 + //SEG1009 keyboard_event_scan::@15 b15: - //SEG1009 [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1010 [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8_from_b15 - //SEG1010 keyboard_event_scan::@11 + //SEG1011 keyboard_event_scan::@11 b11: - //SEG1011 [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuaa=vbuz1_bor_vbuc1 + //SEG1012 [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG1012 [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1013 [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa // Key released ldy keyboard_events_size sta keyboard_events,y - //SEG1013 [443] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10_from_b11 } -//SEG1014 keyboard_matrix_read +//SEG1015 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -22031,107 +22039,107 @@ keyboard_event_scan: { // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. // keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG1015 [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG1016 [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG1016 [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1017 [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG1017 keyboard_matrix_read::@return + //SEG1018 keyboard_matrix_read::@return breturn: - //SEG1018 [446] return + //SEG1019 [447] return rts } -//SEG1019 render_show +//SEG1020 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f - //SEG1020 [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1021 [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1021 [448] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1022 [449] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1022 render_show::toD0182 + //SEG1023 render_show::toD0182 toD0182: - //SEG1023 [449] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1024 [450] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] b1_from_toD0182: - //SEG1024 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1025 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0182_return jmp b1 - //SEG1025 render_show::@1 + //SEG1026 render_show::@1 b1: - //SEG1026 [450] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1027 [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1027 [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1028 [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1028 [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1029 [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1029 [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1030 [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG1030 render_show::@return + //SEG1031 render_show::@return breturn: - //SEG1031 [454] return + //SEG1032 [455] return rts - //SEG1032 [455] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1033 [456] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1033 render_show::toD0181 + //SEG1034 render_show::toD0181 toD0181: - //SEG1034 [449] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1035 [450] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] b1_from_toD0181: - //SEG1035 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1036 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b1 } -//SEG1036 play_init +//SEG1037 play_init // Initialize play data tables play_init: { .label pli = $43 .label idx = $45 - //SEG1037 [457] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1038 [458] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1038 [457] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1039 [458] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1039 [457] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1040 [458] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1040 [457] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 + //SEG1041 [458] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG1041 [457] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1042 [458] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1042 [457] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1043 [457] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1044 [457] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1043 [458] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1044 [458] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1045 [458] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1045 play_init::@1 + //SEG1046 play_init::@1 b1: - //SEG1046 [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1047 [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1047 [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1048 [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 lda pli sta playfield_lines,x lda pli+1 sta playfield_lines+1,x - //SEG1048 [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG1049 [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda idx sta playfield_lines_idx,y - //SEG1049 [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1050 [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -22139,42 +22147,42 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1050 [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1051 [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1051 [463] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy + //SEG1052 [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG1052 [464] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1053 [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG1053 play_init::@2 + //SEG1054 play_init::@2 b2: - //SEG1054 [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1055 [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1055 [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1056 [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1056 [467] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1057 [468] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] b3_from_b2: - //SEG1057 [467] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 + //SEG1058 [468] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 // Set the initial score add values - //SEG1058 [467] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1059 [468] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] b3_from_b3: - //SEG1059 [467] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1060 [468] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy jmp b3 - //SEG1060 play_init::@3 + //SEG1061 play_init::@3 b3: - //SEG1061 [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG1062 [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1062 [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1063 [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -22184,227 +22192,227 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1063 [470] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1064 [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1064 [471] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1065 [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b3_from_b3 jmp breturn - //SEG1065 play_init::@return + //SEG1066 play_init::@return breturn: - //SEG1066 [472] return + //SEG1067 [473] return rts } -//SEG1067 sprites_irq_init +//SEG1068 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1068 asm { sei } + //SEG1069 asm { sei } sei - //SEG1069 [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1070 asm { ldaCIA1_INTERRUPT } + //SEG1071 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1071 [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1072 [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1073 [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1074 [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1074 [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1075 [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1075 [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1076 [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1076 [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1077 [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1077 [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1078 [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1078 asm { cli } + //SEG1079 asm { cli } cli jmp breturn - //SEG1079 sprites_irq_init::@return + //SEG1080 sprites_irq_init::@return breturn: - //SEG1080 [484] return + //SEG1081 [485] return rts } -//SEG1081 sprites_init +//SEG1082 sprites_init // Setup the sprites sprites_init: { .label xpos = $46 - //SEG1082 [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG1083 [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1083 [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG1084 [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1084 [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1085 [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1085 [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1086 [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1086 [489] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1087 [490] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1087 [489] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1088 [490] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1088 [489] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG1089 [490] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG1089 [489] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1090 [490] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1090 [489] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1091 [489] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1091 [490] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1092 [490] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1092 sprites_init::@1 + //SEG1093 sprites_init::@1 b1: - //SEG1093 [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1094 [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1094 [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1095 [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG1095 [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG1096 [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG1096 [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1097 [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1097 [494] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG1098 [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG1098 [495] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1099 [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1_from_b1 jmp breturn - //SEG1099 sprites_init::@return + //SEG1100 sprites_init::@return breturn: - //SEG1100 [496] return + //SEG1101 [497] return rts } -//SEG1101 render_init +//SEG1102 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3 .label li_1 = $47 .label li_2 = $49 jmp vicSelectGfxBank1 - //SEG1102 render_init::vicSelectGfxBank1 + //SEG1103 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1103 [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1104 [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1104 [499] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1105 [500] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1105 render_init::vicSelectGfxBank1_toDd001 + //SEG1106 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1106 render_init::vicSelectGfxBank1_@1 + //SEG1107 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1107 [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1108 [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG1108 render_init::@2 + //SEG1109 render_init::@2 b2: - //SEG1109 [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1110 [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1110 [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1111 [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1112 [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1112 [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1113 [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1113 [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1114 [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1114 [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1115 [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1115 [507] call render_screen_original - //SEG1116 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1116 [508] call render_screen_original + //SEG1117 [520] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] render_screen_original_from_b2: - //SEG1117 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1118 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [508] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1119 [509] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: jmp b3 - //SEG1119 render_init::@3 + //SEG1120 render_init::@3 b3: - //SEG1120 [509] call render_screen_original - //SEG1121 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1121 [510] call render_screen_original + //SEG1122 [520] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1122 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1123 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1123 [510] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1124 [511] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] b1_from_b3: - //SEG1124 [510] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1125 [511] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1125 [510] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1126 [511] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1126 [510] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1 + //SEG1127 [511] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG1127 [510] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1128 [511] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1128 [510] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1129 [510] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1130 [510] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1129 [511] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1130 [511] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1131 [511] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1131 render_init::@1 + //SEG1132 render_init::@1 b1: - //SEG1132 [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1133 [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1133 [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuxx=pbuz1 lda li_1 sta screen_lines_1,x lda li_1+1 sta screen_lines_1+1,x - //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1135 [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuxx=pbuz1 lda li_2 sta screen_lines_2,x lda li_2+1 sta screen_lines_2+1,x - //SEG1135 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1136 [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -22412,7 +22420,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1136 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1137 [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -22420,18 +22428,18 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1137 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuyy=_inc_vbuyy + //SEG1138 [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuyy=_inc_vbuyy iny - //SEG1138 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1139 [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1139 render_init::@return + //SEG1140 render_init::@return breturn: - //SEG1140 [518] return + //SEG1141 [519] return rts } -//SEG1141 render_screen_original +//SEG1142 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 // render_screen_original(byte* zeropage($50) screen) @@ -22442,358 +22450,358 @@ render_screen_original: { .label oscr = $4c .label ocols = $4e .label y = $4b - //SEG1142 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1143 [521] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1143 [520] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1144 [521] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1144 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1145 [521] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1145 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1146 [521] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1146 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1147 [521] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1147 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1148 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1148 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1149 [521] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] b1_from_b5: - //SEG1149 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1150 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1151 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1152 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1153 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1150 [521] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1151 [521] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1152 [521] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1153 [521] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1154 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1154 render_screen_original::@1 + //SEG1155 render_screen_original::@1 b1: - //SEG1155 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1156 [522] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1156 [521] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1157 [522] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1157 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1158 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1158 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1159 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1159 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1160 [522] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1160 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1161 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1162 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1161 [522] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1162 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1163 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1163 render_screen_original::@2 + //SEG1164 render_screen_original::@2 b2: - //SEG1164 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1165 [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1165 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1166 [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1166 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1167 [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1167 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1168 [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1168 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1169 [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1169 [527] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1170 [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b2 - //SEG1170 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1171 [529] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1171 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1172 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1173 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1174 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1175 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1172 [529] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1173 [529] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1174 [529] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1175 [529] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1176 [529] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1176 render_screen_original::@3 + //SEG1177 render_screen_original::@3 b3: - //SEG1177 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1178 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1179 [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1179 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1180 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1181 [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1181 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1182 [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1182 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1183 [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1183 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1184 [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1184 [536] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1185 [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3_from_b3 - //SEG1185 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1186 [538] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1186 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1187 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1188 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1187 [538] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1188 [538] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1189 [538] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1189 render_screen_original::@4 + //SEG1190 render_screen_original::@4 b4: - //SEG1190 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1191 [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1191 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1192 [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1192 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1193 [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1193 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1194 [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1194 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1195 [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1195 [543] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1196 [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4_from_b4 jmp b5 - //SEG1196 render_screen_original::@5 + //SEG1197 render_screen_original::@5 b5: - //SEG1197 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1198 [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1198 [545] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1199 [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b5 jmp breturn - //SEG1199 render_screen_original::@return + //SEG1200 render_screen_original::@return breturn: - //SEG1200 [546] return + //SEG1201 [547] return rts } -//SEG1201 sid_rnd_init +//SEG1202 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1202 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 + //SEG1203 [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1203 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1204 [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1204 sid_rnd_init::@return + //SEG1205 sid_rnd_init::@return breturn: - //SEG1205 [549] return + //SEG1206 [550] return rts } -//SEG1206 sprites_irq +//SEG1207 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = $54 - //SEG1207 entry interrupt(HARDWARE_CLOBBER) + //SEG1208 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1208 asm { cld } + //SEG1209 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1209 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1210 [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG1210 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1211 [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1211 [553] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1214 [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1214 [556] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 + //SEG1215 [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1215 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1216 [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify jmp b8 - //SEG1216 sprites_irq::@8 + //SEG1217 sprites_irq::@8 b8: - //SEG1217 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1218 [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG1218 sprites_irq::@9 + //SEG1219 sprites_irq::@9 b9: - //SEG1219 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1220 [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1220 [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1221 [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG1221 sprites_irq::@10 + //SEG1222 sprites_irq::@10 b10: - //SEG1222 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1223 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1223 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1224 [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG1224 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1226 [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1226 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1227 [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1227 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1228 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG1228 sprites_irq::@2 + //SEG1229 sprites_irq::@2 b2: - //SEG1229 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1230 [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1230 [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1231 [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG1231 sprites_irq::@6 + //SEG1232 sprites_irq::@6 b6: - //SEG1232 [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1233 [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG1233 sprites_irq::@7 + //SEG1234 sprites_irq::@7 b7: - //SEG1234 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1235 [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1235 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1236 [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1236 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1237 [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1237 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1238 [574] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG1238 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1239 [574] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy jmp b5 - //SEG1239 sprites_irq::@5 + //SEG1240 sprites_irq::@5 b5: - //SEG1240 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1241 [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1241 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1242 [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1242 sprites_irq::@return + //SEG1243 sprites_irq::@return breturn: - //SEG1243 [576] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1244 [577] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1244 sprites_irq::@4 + //SEG1245 sprites_irq::@4 b4: - //SEG1245 [577] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG1246 [578] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1246 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1247 [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1247 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1248 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1249 [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG1249 sprites_irq::@3 + //SEG1250 sprites_irq::@3 b3: - //SEG1250 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1251 [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1251 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1252 [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1252 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1253 [584] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG1253 sprites_irq::toSpritePtr2 + //SEG1254 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG1254 sprites_irq::@11 + //SEG1255 sprites_irq::@11 b11: - //SEG1255 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1256 [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG1256 sprites_irq::@1 + //SEG1257 sprites_irq::@1 b1: - //SEG1257 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1258 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1258 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG1259 [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG1259 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1261 [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1261 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG1262 [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG1262 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1263 [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } @@ -23091,6 +23099,8 @@ Removing instruction jmp toSpritePtr2 Removing instruction jmp b11 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 Removing instruction ldy play_spawn_current._7 Removing instruction lda #0 Removing instruction lda #0 @@ -23098,8 +23108,6 @@ Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 -Removing instruction lda #0 -Removing instruction lda #0 Replacing instruction ldy #0 with TAY Removing instruction lda #0 Removing instruction lda current_orientation @@ -24548,9 +24556,10 @@ FINAL SYMBOL TABLE (dword[5]) score_add_bcd (const dword[5]) score_add_bcd#0 score_add_bcd = { fill( 5, 0) } (dword) score_bcd +(dword) score_bcd#0 score_bcd zp ZP_DWORD:40 0.1111111111111111 (dword) score_bcd#14 score_bcd zp ZP_DWORD:40 3.135135135135135 (dword) score_bcd#16 score_bcd zp ZP_DWORD:40 1.1428571428571428 -(dword) score_bcd#18 score_bcd zp ZP_DWORD:40 2.352941176470588 +(dword) score_bcd#18 score_bcd zp ZP_DWORD:40 2.3921568627450975 (dword) score_bcd#26 score_bcd zp ZP_DWORD:40 6.0 (dword) score_bcd#29 score_bcd zp ZP_DWORD:40 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 @@ -24655,7 +24664,7 @@ reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] zp ZP_BYTE:37 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] zp ZP_WORD:38 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:44 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_BYTE:45 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:46 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] @@ -24802,7 +24811,7 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 3346094 +Score: 3344906 //SEG0 File Comments // Tetris Game for the Commodore 64 @@ -24929,6 +24938,7 @@ Score: 3346094 .const toSpritePtr1_return = PLAYFIELD_SPRITES/$40 .label keyboard_events_size = $42 .label render_screen_showing = $55 + .label score_bcd = $28 .label irq_raster_next = $56 .label irq_sprite_ypos = $57 .label irq_sprite_ptr = $58 @@ -24948,7 +24958,6 @@ Score: 3346094 .label render_screen_show = 2 .label current_movedown_counter = 4 .label lines_bcd = $26 - .label score_bcd = $28 .label current_piece_17 = $1e .label render_screen_render_33 = $e .label current_xpos_59 = $f @@ -24973,317 +24982,319 @@ bbegin: // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing -//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG6 [2] (dword) score_bcd#0 ← (byte) 0 -- vduz1=vbuc1 + // Current score in BCD-format + sta score_bcd + sta score_bcd+1 + sta score_bcd+2 + sta score_bcd+3 +//SEG7 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} // Original Color Data -//SEG9 @2 -//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} -//SEG11 @3 -//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG10 @2 +//SEG11 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG12 @3 +//SEG13 [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 // The raster line of the next IRQ lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 +//SEG14 [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 -- vbuz1=vbuc1 // Y-pos of the sprites on the next IRQ lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG14 [8] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] -//SEG15 toSpritePtr1 -//SEG16 @5 -//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 +//SEG15 [9] phi from @3 to toSpritePtr1 [phi:@3->toSpritePtr1] +//SEG16 toSpritePtr1 +//SEG17 @5 +//SEG18 [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 -- vbuz1=vbuc1 // Index of the sprites to show on the next IRQ lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG18 [10] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 +//SEG19 [11] (byte) irq_cnt#0 ← (byte) 0 -- vbuz1=vbuc1 // Counting the 10 IRQs lda #0 sta irq_cnt -//SEG19 [11] phi from @5 to @4 [phi:@5->@4] -//SEG20 @4 -//SEG21 [12] call main -//SEG22 [14] phi from @4 to main [phi:@4->main] +//SEG20 [12] phi from @5 to @4 [phi:@5->@4] +//SEG21 @4 +//SEG22 [13] call main +//SEG23 [15] phi from @4 to main [phi:@4->main] jsr main rts -//SEG23 [13] phi from @4 to @end [phi:@4->@end] -//SEG24 @end -//SEG25 main +//SEG24 [14] phi from @4 to @end [phi:@4->@end] +//SEG25 @end +//SEG26 main main: { - //SEG26 [15] call sid_rnd_init + //SEG27 [16] call sid_rnd_init jsr sid_rnd_init - //SEG27 main::@8 - //SEG28 asm { sei } + //SEG28 main::@8 + //SEG29 asm { sei } sei - //SEG29 [17] call render_init - //SEG30 [497] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [18] call render_init + //SEG31 [498] phi from main::@8 to render_init [phi:main::@8->render_init] jsr render_init - //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - //SEG32 main::@9 - //SEG33 [19] call sprites_init + //SEG32 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG33 main::@9 + //SEG34 [20] call sprites_init jsr sprites_init - //SEG34 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG35 main::@10 - //SEG36 [21] call sprites_irq_init + //SEG35 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG36 main::@10 + //SEG37 [22] call sprites_irq_init jsr sprites_irq_init - //SEG37 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - //SEG38 main::@11 - //SEG39 [23] call play_init - //SEG40 [456] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG38 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG39 main::@11 + //SEG40 [24] call play_init + //SEG41 [457] phi from main::@11 to play_init [phi:main::@11->play_init] jsr play_init - //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG42 main::@12 - //SEG43 [25] call play_spawn_current - //SEG44 [286] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] - //SEG45 [286] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG42 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG43 main::@12 + //SEG44 [26] call play_spawn_current + //SEG45 [287] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG46 [287] phi (byte) game_over#65 = (byte) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [286] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG47 [287] phi (byte) next_piece_idx#17 = (byte) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 sta next_piece_idx jsr play_spawn_current - //SEG47 [26] phi from main::@12 to main::@13 [phi:main::@12->main::@13] - //SEG48 main::@13 - //SEG49 [27] call play_spawn_current - //SEG50 [286] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] - //SEG51 [286] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [286] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG48 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG49 main::@13 + //SEG50 [28] call play_spawn_current + //SEG51 [287] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG52 [287] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG53 [287] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] - //SEG54 main::@14 - //SEG55 [29] call render_playfield - //SEG56 [151] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] - //SEG57 [151] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 + //SEG54 [29] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG55 main::@14 + //SEG56 [30] call render_playfield + //SEG57 [152] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG58 [152] phi (byte) render_screen_render#22 = (byte) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 ldx #$20 jsr render_playfield - //SEG58 main::@15 - //SEG59 [30] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuxx=vbuz1 + //SEG59 main::@15 + //SEG60 [31] (byte~) current_ypos#98 ← (byte) current_ypos#6 -- vbuxx=vbuz1 ldx current_ypos - //SEG60 [31] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG61 [32] (byte~) current_xpos#119 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_119 - //SEG61 [32] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece_gfx_112 lda PIECES+1,y sta current_piece_gfx_112+1 - //SEG62 [33] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 + //SEG63 [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_100 - //SEG63 [34] call render_moving - //SEG64 [129] phi from main::@15 to render_moving [phi:main::@15->render_moving] - //SEG65 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy - //SEG66 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy - //SEG67 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [129] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + //SEG64 [35] call render_moving + //SEG65 [130] phi from main::@15 to render_moving [phi:main::@15->render_moving] + //SEG66 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#100 [phi:main::@15->render_moving#0] -- register_copy + //SEG67 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#112 [phi:main::@15->render_moving#1] -- register_copy + //SEG68 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#119 [phi:main::@15->render_moving#2] -- register_copy + //SEG69 [130] phi (byte) render_screen_render#33 = (byte) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 lda #$20 sta render_screen_render_33 - //SEG69 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy + //SEG70 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#98 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving - //SEG70 main::@16 - //SEG71 [35] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 + //SEG71 main::@16 + //SEG72 [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 ldx play_spawn_current.piece_idx - //SEG72 [36] call render_next - //SEG73 [108] phi from main::@16 to render_next [phi:main::@16->render_next] - //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [108] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 + //SEG73 [37] call render_next + //SEG74 [109] phi from main::@16 to render_next [phi:main::@16->render_next] + //SEG75 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#77 [phi:main::@16->render_next#0] -- register_copy + //SEG76 [109] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 lda #$20 jsr render_next - //SEG76 main::@17 - //SEG77 [37] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG77 main::@17 + //SEG78 [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG78 [38] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG79 [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG79 [39] phi from main::@17 to main::@1 [phi:main::@17->main::@1] - //SEG80 [39] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 + //SEG80 [40] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG81 [40] phi (byte) level_bcd#11 = (byte) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG81 [39] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 + //SEG82 [40] phi (byte) level#10 = (byte) 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1 sta level - //SEG82 [39] phi (dword) score_bcd#18 = (byte) 0 [phi:main::@17->main::@1#2] -- vduz1=vbuc1 - sta score_bcd - sta score_bcd+1 - sta score_bcd+2 - sta score_bcd+3 - //SEG83 [39] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 + //SEG83 [40] phi (dword) score_bcd#18 = (dword) score_bcd#0 [phi:main::@17->main::@1#2] -- register_copy + //SEG84 [40] phi (word) lines_bcd#19 = (byte) 0 [phi:main::@17->main::@1#3] -- vwuz1=vbuc1 sta lines_bcd sta lines_bcd+1 - //SEG84 [39] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 + //SEG85 [40] phi (byte) current_movedown_counter#16 = (byte) 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1 sta current_movedown_counter - //SEG85 [39] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 + //SEG86 [40] phi (byte) keyboard_events_size#19 = (byte) 0 [phi:main::@17->main::@1#5] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG86 [39] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy - //SEG87 [39] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy - //SEG88 [39] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy - //SEG89 [39] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy - //SEG90 [39] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy - //SEG91 [39] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 + //SEG87 [40] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#6] -- register_copy + //SEG88 [40] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@17->main::@1#7] -- register_copy + //SEG89 [40] phi (byte) current_ypos#11 = (byte) current_ypos#6 [phi:main::@17->main::@1#8] -- register_copy + //SEG90 [40] phi (byte) current_xpos#14 = (byte) current_xpos#100 [phi:main::@17->main::@1#9] -- register_copy + //SEG91 [40] phi (byte*) current_piece_gfx#13 = (byte*~) current_piece_gfx#124 [phi:main::@17->main::@1#10] -- register_copy + //SEG92 [40] phi (byte) current_orientation#13 = (byte) 0 [phi:main::@17->main::@1#11] -- vbuz1=vbuc1 sta current_orientation - //SEG92 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy - //SEG93 [39] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy - //SEG94 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy - //SEG95 [39] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 + //SEG93 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@17->main::@1#12] -- register_copy + //SEG94 [40] phi (byte*) current_piece#10 = (byte*~) current_piece#102 [phi:main::@17->main::@1#13] -- register_copy + //SEG95 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@17->main::@1#14] -- register_copy + //SEG96 [40] phi (byte) render_screen_render#18 = (byte) $20 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1 lda #$20 sta render_screen_render - //SEG96 [39] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 + //SEG97 [40] phi (byte) render_screen_show#16 = (byte) 0 [phi:main::@17->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show - //SEG97 [39] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG98 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy - //SEG99 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy - //SEG100 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy - //SEG101 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy - //SEG102 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy - //SEG103 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy - //SEG104 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy - //SEG105 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy - //SEG106 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy - //SEG107 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy - //SEG108 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy - //SEG109 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy - //SEG110 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy - //SEG111 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy - //SEG112 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy - //SEG113 main::@1 + //SEG98 [40] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG99 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@6->main::@1#0] -- register_copy + //SEG100 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@6->main::@1#1] -- register_copy + //SEG101 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@6->main::@1#2] -- register_copy + //SEG102 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@6->main::@1#3] -- register_copy + //SEG103 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@6->main::@1#4] -- register_copy + //SEG104 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@6->main::@1#5] -- register_copy + //SEG105 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@6->main::@1#6] -- register_copy + //SEG106 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@6->main::@1#7] -- register_copy + //SEG107 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@6->main::@1#8] -- register_copy + //SEG108 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@6->main::@1#9] -- register_copy + //SEG109 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@6->main::@1#10] -- register_copy + //SEG110 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@6->main::@1#11] -- register_copy + //SEG111 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@6->main::@1#12] -- register_copy + //SEG112 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@6->main::@1#13] -- register_copy + //SEG113 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@6->main::@1#14] -- register_copy + //SEG114 main::@1 b1: // Wait for a frame to pass - //SEG114 main::@2 + //SEG115 main::@2 b2: - //SEG115 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG116 [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 - //SEG116 [41] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG117 main::@3 - //SEG118 [42] call render_show + //SEG117 [42] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG118 main::@3 + //SEG119 [43] call render_show jsr render_show - //SEG119 [43] phi from main::@3 to main::@18 [phi:main::@3->main::@18] - //SEG120 main::@18 - //SEG121 [44] call keyboard_event_scan - //SEG122 [391] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] + //SEG120 [44] phi from main::@3 to main::@18 [phi:main::@3->main::@18] + //SEG121 main::@18 + //SEG122 [45] call keyboard_event_scan + //SEG123 [392] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan] jsr keyboard_event_scan - //SEG123 [45] phi from main::@18 to main::@19 [phi:main::@18->main::@19] - //SEG124 main::@19 - //SEG125 [46] call keyboard_event_get + //SEG124 [46] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG125 main::@19 + //SEG126 [47] call keyboard_event_get jsr keyboard_event_get - //SEG126 [47] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - //SEG127 main::@20 - //SEG128 [48] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - //SEG129 [49] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 + //SEG127 [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG128 main::@20 + //SEG129 [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + //SEG130 [50] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b4 - //SEG130 main::@5 + //SEG131 main::@5 b5: - //SEG131 [50] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG132 [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 - //SEG132 main::@4 + //SEG133 main::@4 b4: - //SEG133 [51] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + //SEG134 [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx stx play_movement.key_event - //SEG134 [52] call play_movement + //SEG135 [53] call play_movement jsr play_movement - //SEG135 [53] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + //SEG136 [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 lda play_movement.return - //SEG136 main::@21 - //SEG137 [54] (byte) main::render#1 ← (byte) play_movement::return#3 - //SEG138 main::@6 - //SEG139 [55] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG137 main::@21 + //SEG138 [55] (byte) main::render#1 ← (byte) play_movement::return#3 + //SEG139 main::@6 + //SEG140 [56] if((byte) main::render#1==(byte) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG140 main::@7 - //SEG141 [56] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + //SEG141 main::@7 + //SEG142 [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render - //SEG142 [57] call render_playfield - //SEG143 [151] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] - //SEG144 [151] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy + //SEG143 [58] call render_playfield + //SEG144 [152] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG145 [152] phi (byte) render_screen_render#22 = (byte~) render_screen_render#64 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield - //SEG145 main::@22 - //SEG146 [58] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuxx=vbuz1 + //SEG146 main::@22 + //SEG147 [59] (byte~) current_ypos#99 ← (byte) current_ypos#19 -- vbuxx=vbuz1 ldx current_ypos - //SEG147 [59] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG148 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_65 - //SEG148 [60] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG149 [61] (byte~) current_xpos#120 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_120 - //SEG149 [61] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG150 [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_113 lda current_piece_gfx+1 sta current_piece_gfx_113+1 - //SEG150 [62] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 + //SEG151 [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_101 - //SEG151 [63] call render_moving - //SEG152 [129] phi from main::@22 to render_moving [phi:main::@22->render_moving] - //SEG153 [129] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy - //SEG154 [129] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy - //SEG155 [129] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy - //SEG156 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy - //SEG157 [129] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy + //SEG152 [64] call render_moving + //SEG153 [130] phi from main::@22 to render_moving [phi:main::@22->render_moving] + //SEG154 [130] phi (byte) current_piece_char#68 = (byte~) current_piece_char#101 [phi:main::@22->render_moving#0] -- register_copy + //SEG155 [130] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#113 [phi:main::@22->render_moving#1] -- register_copy + //SEG156 [130] phi (byte) current_xpos#59 = (byte~) current_xpos#120 [phi:main::@22->render_moving#2] -- register_copy + //SEG157 [130] phi (byte) render_screen_render#33 = (byte~) render_screen_render#65 [phi:main::@22->render_moving#3] -- register_copy + //SEG158 [130] phi (byte) current_ypos#13 = (byte~) current_ypos#99 [phi:main::@22->render_moving#4] -- register_copy jsr render_moving - //SEG158 main::@23 - //SEG159 [64] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 + //SEG159 main::@23 + //SEG160 [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 lda render_screen_render - //SEG160 [65] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 + //SEG161 [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 ldx next_piece_idx - //SEG161 [66] call render_next - //SEG162 [108] phi from main::@23 to render_next [phi:main::@23->render_next] - //SEG163 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy - //SEG164 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy + //SEG162 [67] call render_next + //SEG163 [109] phi from main::@23 to render_next [phi:main::@23->render_next] + //SEG164 [109] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#78 [phi:main::@23->render_next#0] -- register_copy + //SEG165 [109] phi (byte) render_screen_render#15 = (byte~) render_screen_render#66 [phi:main::@23->render_next#1] -- register_copy jsr render_next - //SEG165 [67] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG166 main::@24 - //SEG167 [68] call render_score + //SEG166 [68] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG167 main::@24 + //SEG168 [69] call render_score jsr render_score - //SEG168 [69] phi from main::@24 to main::@25 [phi:main::@24->main::@25] - //SEG169 main::@25 - //SEG170 [70] call render_screen_swap + //SEG169 [70] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG170 main::@25 + //SEG171 [71] call render_screen_swap jsr render_screen_swap - //SEG171 [39] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - //SEG172 [39] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy - //SEG173 [39] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy - //SEG174 [39] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy - //SEG175 [39] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy - //SEG176 [39] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy - //SEG177 [39] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy - //SEG178 [39] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy - //SEG179 [39] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy - //SEG180 [39] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy - //SEG181 [39] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy - //SEG182 [39] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy - //SEG183 [39] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy - //SEG184 [39] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy - //SEG185 [39] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy - //SEG186 [39] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy - //SEG187 [39] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy - //SEG188 [39] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy + //SEG172 [40] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG173 [40] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@25->main::@1#0] -- register_copy + //SEG174 [40] phi (byte) level#10 = (byte) level#17 [phi:main::@25->main::@1#1] -- register_copy + //SEG175 [40] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@25->main::@1#2] -- register_copy + //SEG176 [40] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@25->main::@1#3] -- register_copy + //SEG177 [40] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@25->main::@1#4] -- register_copy + //SEG178 [40] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@25->main::@1#5] -- register_copy + //SEG179 [40] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@25->main::@1#6] -- register_copy + //SEG180 [40] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@25->main::@1#7] -- register_copy + //SEG181 [40] phi (byte) current_ypos#11 = (byte) current_ypos#19 [phi:main::@25->main::@1#8] -- register_copy + //SEG182 [40] phi (byte) current_xpos#14 = (byte) current_xpos#19 [phi:main::@25->main::@1#9] -- register_copy + //SEG183 [40] phi (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#18 [phi:main::@25->main::@1#10] -- register_copy + //SEG184 [40] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@25->main::@1#11] -- register_copy + //SEG185 [40] phi (byte) current_piece_char#10 = (byte) current_piece_char#16 [phi:main::@25->main::@1#12] -- register_copy + //SEG186 [40] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@25->main::@1#13] -- register_copy + //SEG187 [40] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@25->main::@1#14] -- register_copy + //SEG188 [40] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@25->main::@1#15] -- register_copy + //SEG189 [40] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@25->main::@1#16] -- register_copy jmp b1 } -//SEG189 render_screen_swap +//SEG190 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG190 [71] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG191 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_render sta render_screen_render - //SEG191 [72] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG192 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 -- vbuz1=vbuz1_bxor_vbuc1 lda #$20 eor render_screen_show sta render_screen_show - //SEG192 render_screen_swap::@return - //SEG193 [73] return + //SEG193 render_screen_swap::@return + //SEG194 [74] return rts } -//SEG194 render_score +//SEG195 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -25291,130 +25302,130 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG195 [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 + //SEG196 [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b1 - //SEG196 [76] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] - //SEG197 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG197 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG198 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG198 [75] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] - //SEG199 render_score::@1 + //SEG199 [76] phi from render_score to render_score::@1 [phi:render_score->render_score::@1] + //SEG200 render_score::@1 b1: - //SEG200 [76] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] - //SEG201 [76] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 + //SEG201 [77] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2] + //SEG202 [77] phi (byte*) render_score::screen#3 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 - //SEG202 render_score::@2 + //SEG203 render_score::@2 b2: - //SEG203 [77] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 - //SEG204 [78] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuxx=_deref_pbuc1 + //SEG204 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 + //SEG205 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG205 [79] call render_bcd - //SEG206 [96] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] - //SEG207 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG208 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG206 [80] call render_bcd + //SEG207 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG208 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG209 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG209 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG210 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG210 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG211 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd - //SEG211 render_score::@3 - //SEG212 [80] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 - //SEG213 [81] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuxx=_deref_pbuc1 + //SEG212 render_score::@3 + //SEG213 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 + //SEG214 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG214 [82] call render_bcd - //SEG215 [96] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] - //SEG216 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy - //SEG217 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1 + //SEG215 [83] call render_bcd + //SEG216 [97] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd] + //SEG217 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy + //SEG218 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG218 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG219 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy + //SEG220 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy jsr render_bcd - //SEG220 render_score::@4 - //SEG221 [83] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 - //SEG222 [84] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG221 render_score::@4 + //SEG222 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 + //SEG223 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG223 [85] call render_bcd - //SEG224 [96] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] - //SEG225 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy - //SEG226 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1 + //SEG224 [86] call render_bcd + //SEG225 [97] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd] + //SEG226 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy + //SEG227 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG227 [96] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 + //SEG228 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte) 4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG228 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy + //SEG229 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy jsr render_bcd - //SEG229 render_score::@5 - //SEG230 [86] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 + //SEG230 render_score::@5 + //SEG231 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG231 [87] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 - //SEG232 [88] call render_bcd - //SEG233 [96] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] - //SEG234 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG235 [96] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG232 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 + //SEG233 [89] call render_bcd + //SEG234 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG235 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG236 [97] phi (byte) render_bcd::only_low#6 = (byte) 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG236 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 + //SEG237 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG237 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG238 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd - //SEG238 render_score::@6 - //SEG239 [89] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 + //SEG239 render_score::@6 + //SEG240 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG240 [90] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 - //SEG241 [91] call render_bcd - //SEG242 [96] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] - //SEG243 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG244 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG241 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 + //SEG242 [92] call render_bcd + //SEG243 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG244 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG245 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG245 [96] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 + //SEG246 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte) 1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG246 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG247 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd - //SEG247 render_score::@7 - //SEG248 [92] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 - //SEG249 [93] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 + //SEG248 render_score::@7 + //SEG249 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 + //SEG250 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG250 [94] call render_bcd - //SEG251 [96] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] - //SEG252 [96] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG253 [96] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG251 [95] call render_bcd + //SEG252 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG253 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG254 [97] phi (byte) render_bcd::only_low#6 = (byte) 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG254 [96] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG255 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG255 [96] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG256 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd - //SEG256 render_score::@return - //SEG257 [95] return + //SEG257 render_score::@return + //SEG258 [96] return rts } -//SEG258 render_bcd +//SEG259 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -25426,7 +25437,7 @@ render_bcd: { .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG259 [97] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG260 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -25434,45 +25445,45 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG260 [98] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG261 [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1 - //SEG261 render_bcd::@2 - //SEG262 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + //SEG262 render_bcd::@2 + //SEG263 [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG263 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG264 [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG264 [101] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG265 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG265 [102] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG266 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG266 [103] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] - //SEG267 [103] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy - //SEG268 render_bcd::@1 + //SEG267 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG268 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG269 render_bcd::@1 b1: - //SEG269 [104] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 + //SEG270 [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG270 [105] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG271 [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG271 [106] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG272 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG272 render_bcd::@return - //SEG273 [107] return + //SEG273 render_bcd::@return + //SEG274 [108] return rts } -//SEG274 render_next +//SEG275 render_next // Render the next tetromino in the "next" area render_next: { // Find the screen area @@ -25481,92 +25492,92 @@ render_next: { .label next_piece_gfx = $a .label screen_next_area = $c .label l = 9 - //SEG275 [109] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 + //SEG276 [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG276 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] - //SEG277 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG277 [112] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG278 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [110] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] - //SEG279 render_next::@1 + //SEG279 [111] phi from render_next to render_next::@1 [phi:render_next->render_next::@1] + //SEG280 render_next::@1 b1: - //SEG280 [111] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] - //SEG281 [111] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 + //SEG281 [112] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2] + //SEG282 [112] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 - //SEG282 render_next::@2 + //SEG283 render_next::@2 b2: - //SEG283 [112] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 + //SEG284 [113] (byte~) render_next::$9 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 txa asl tay - //SEG284 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG285 [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_NEXT_CHARS,x sta next_piece_char - //SEG285 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy + //SEG286 [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy lda PIECES,y sta next_piece_gfx lda PIECES+1,y sta next_piece_gfx+1 - //SEG286 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] - //SEG287 [115] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG287 [116] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG288 [116] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG288 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG289 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy - //SEG290 [115] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] - //SEG291 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy - //SEG292 [115] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy - //SEG293 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy - //SEG294 render_next::@3 + //SEG289 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG290 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG291 [116] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3] + //SEG292 [116] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy + //SEG293 [116] phi (byte*) render_next::screen_next_area#10 = (byte*) render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy + //SEG294 [116] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy + //SEG295 render_next::@3 b3: - //SEG295 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] - //SEG296 [116] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 + //SEG296 [117] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG297 [117] phi (byte) render_next::c#2 = (byte) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG297 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG298 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy - //SEG299 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] - //SEG300 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG301 [116] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG302 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy - //SEG303 render_next::@4 + //SEG298 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG299 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG300 [117] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG301 [117] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG302 [117] phi (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG303 [117] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG304 render_next::@4 b4: - //SEG304 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 + //SEG305 [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (next_piece_gfx),y - //SEG305 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG306 [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG306 [119] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 + //SEG307 [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 - //SEG307 render_next::@7 - //SEG308 [120] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG308 render_next::@7 + //SEG309 [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (screen_next_area),y - //SEG309 render_next::@6 + //SEG310 render_next::@6 b6: - //SEG310 [121] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 + //SEG311 [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG311 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx + //SEG312 [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx inx - //SEG312 [123] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG313 [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4 - //SEG313 render_next::@8 - //SEG314 [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 + //SEG314 render_next::@8 + //SEG315 [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 -- pbuz1=pbuz1_plus_vbuc1 lda #$24 clc adc screen_next_area @@ -25574,24 +25585,24 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG315 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG316 [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG316 [126] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG317 [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b3 - //SEG317 render_next::@return - //SEG318 [127] return + //SEG318 render_next::@return + //SEG319 [128] return rts - //SEG319 render_next::@5 + //SEG320 render_next::@5 b5: - //SEG320 [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG321 [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG321 render_moving +//SEG322 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -25600,170 +25611,170 @@ render_moving: { .label xpos = $16 .label i = $15 .label l = $14 - //SEG322 [130] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx + //SEG323 [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx stx ypos - //SEG323 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] - //SEG324 [131] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG324 [132] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG325 [132] phi (byte) render_moving::l#4 = (byte) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG325 [131] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG326 [132] phi (byte) render_moving::i#3 = (byte) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 sta i - //SEG326 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy - //SEG327 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] - //SEG328 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG329 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG330 [131] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy - //SEG331 render_moving::@1 + //SEG327 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG328 [132] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG329 [132] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG330 [132] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG331 [132] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG332 render_moving::@1 b1: - //SEG332 [132] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG333 [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos cmp #1+1 bcs b2 - //SEG333 render_moving::@7 - //SEG334 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG334 render_moving::@7 + //SEG335 [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax i axs #-[4] stx i - //SEG335 [134] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] - //SEG336 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy - //SEG337 render_moving::@3 + //SEG336 [135] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG337 [135] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG338 render_moving::@3 b3: - //SEG338 [135] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + //SEG339 [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 inc ypos - //SEG339 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG340 [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG340 [137] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG341 [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b1 - //SEG341 render_moving::@return - //SEG342 [138] return + //SEG342 render_moving::@return + //SEG343 [139] return rts - //SEG343 render_moving::@2 + //SEG344 render_moving::@2 b2: - //SEG344 [139] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG345 [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc adc ypos - //SEG345 [140] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG346 [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG346 [141] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa + //SEG347 [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG347 [142] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG348 [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG348 [143] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] - //SEG349 [143] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + //SEG349 [144] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG350 [144] phi (byte) render_moving::c#2 = (byte) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG350 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG351 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy - //SEG352 [143] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] - //SEG353 [143] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG354 [143] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG355 [143] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy - //SEG356 render_moving::@4 + //SEG351 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG352 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG353 [144] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG354 [144] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG355 [144] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG356 [144] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG357 render_moving::@4 b4: - //SEG357 [144] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG358 [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG358 [145] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG359 [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG359 [146] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG360 [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG360 render_moving::@6 - //SEG361 [147] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG361 render_moving::@6 + //SEG362 [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y - //SEG362 render_moving::@5 + //SEG363 render_moving::@5 b5: - //SEG363 [148] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG364 [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG364 [149] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + //SEG365 [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx inx - //SEG365 [150] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG366 [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4 jmp b3 } -//SEG366 render_playfield +//SEG367 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = $19 .label i = $18 .label c = $1b .label l = $17 - //SEG367 [152] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG368 [152] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG368 [153] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG369 [153] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG369 [152] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG370 [153] phi (byte) render_playfield::l#2 = (byte) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l - //SEG370 [152] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG371 [152] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG372 [152] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG373 render_playfield::@1 + //SEG371 [153] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG372 [153] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG373 [153] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG374 render_playfield::@1 b1: - //SEG374 [153] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 + //SEG375 [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc l - //SEG375 [154] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG376 [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG376 [155] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa + //SEG377 [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG377 [156] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG378 [156] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG378 [157] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG379 [157] phi (byte) render_playfield::c#2 = (byte) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG379 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG380 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG381 [156] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG382 [156] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG383 [156] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG384 [156] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG385 render_playfield::@2 + //SEG380 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG381 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG382 [157] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG383 [157] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG384 [157] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG385 [157] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG386 render_playfield::@2 b2: - //SEG386 [157] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG387 [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG387 [158] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG388 [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG388 [159] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG389 [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [160] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG390 [161] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG391 [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp c bne b2 - //SEG391 render_playfield::@3 - //SEG392 [162] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG392 render_playfield::@3 + //SEG393 [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [163] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG394 [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp l bne b1 - //SEG394 render_playfield::@return - //SEG395 [164] return + //SEG395 render_playfield::@return + //SEG396 [165] return rts } -//SEG396 play_movement +//SEG397 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -25772,141 +25783,141 @@ play_movement: { .label render = $1c .label return = $1c .label key_event = $5a - //SEG397 [165] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG398 [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG398 [166] call play_move_down + //SEG399 [167] call play_move_down jsr play_move_down - //SEG399 [167] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG400 [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa - //SEG400 play_movement::@2 - //SEG401 [168] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa + //SEG401 play_movement::@2 + //SEG402 [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa sta render - //SEG402 [169] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG403 [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG403 [170] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] - //SEG404 [170] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG405 [170] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG406 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG407 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy - //SEG408 play_movement::@return - //SEG409 [171] return + //SEG404 [171] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG405 [171] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG406 [171] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG407 [171] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG408 [171] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG409 play_movement::@return + //SEG410 [172] return rts - //SEG410 play_movement::@1 + //SEG411 play_movement::@1 b1: - //SEG411 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG412 [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG412 [173] call play_move_leftright + //SEG413 [174] call play_move_leftright jsr play_move_leftright - //SEG413 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 - //SEG414 play_movement::@3 - //SEG415 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG416 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG414 [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG415 play_movement::@3 + //SEG416 [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG417 [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG417 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG418 [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG418 [178] call play_move_rotate + //SEG419 [179] call play_move_rotate jsr play_move_rotate - //SEG419 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 - //SEG420 play_movement::@4 - //SEG421 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG422 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG420 [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG421 play_movement::@4 + //SEG422 [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG423 [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return rts } -//SEG423 play_move_rotate +//SEG424 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte register(A) key_event) play_move_rotate: { .label orientation = $1d - //SEG424 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG425 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 - //SEG425 play_move_rotate::@4 - //SEG426 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG426 play_move_rotate::@4 + //SEG427 [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG427 [184] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG428 [185] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] b4: - //SEG428 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG429 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG430 [184] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG429 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG430 [185] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG431 [185] phi (byte) play_move_rotate::return#2 = (byte) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG431 play_move_rotate::@return - //SEG432 [185] return + //SEG432 play_move_rotate::@return + //SEG433 [186] return rts - //SEG433 play_move_rotate::@2 + //SEG434 play_move_rotate::@2 b2: - //SEG434 [186] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuxx=vbuz1_plus_vbuc1 + //SEG435 [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 -- vbuxx=vbuz1_plus_vbuc1 lax current_orientation axs #-[$10] - //SEG435 [187] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG436 [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation - //SEG436 [188] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] - //SEG437 [188] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy - //SEG438 play_move_rotate::@3 + //SEG437 [189] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG438 [189] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy + //SEG439 play_move_rotate::@3 b3: - //SEG439 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG440 [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG440 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG441 [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG441 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG442 [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG442 [192] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG443 [193] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG443 [193] call play_collision - //SEG444 [201] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] - //SEG445 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG446 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG447 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG448 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG444 [194] call play_collision + //SEG445 [202] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG446 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG447 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG448 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG449 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG449 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 - //SEG450 play_move_rotate::@6 - //SEG451 [195] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - //SEG452 [196] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG450 [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG451 play_move_rotate::@6 + //SEG452 [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + //SEG453 [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b4 - //SEG453 play_move_rotate::@5 - //SEG454 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG454 play_move_rotate::@5 + //SEG455 [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG455 [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG456 [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG456 [184] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] - //SEG457 [184] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG458 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG459 [184] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG457 [185] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG458 [185] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG459 [185] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG460 [185] phi (byte) play_move_rotate::return#2 = (byte) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 rts - //SEG460 play_move_rotate::@1 + //SEG461 play_move_rotate::@1 b1: - //SEG461 [199] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 + //SEG462 [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 lax current_orientation axs #$10 - //SEG462 [200] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG463 [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation jmp b3 } -//SEG463 play_collision +//SEG464 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected // play_collision(byte zeropage($20) xpos, byte zeropage($21) ypos, byte register(X) orientation) @@ -25923,7 +25934,7 @@ play_collision: { .label i_3 = $23 .label i_10 = $23 .label i_12 = $23 - //SEG464 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG465 [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -25931,528 +25942,528 @@ play_collision: { bcc !+ inc piece_gfx+1 !: - //SEG465 [203] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] - //SEG466 [203] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG466 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG467 [204] phi (byte) play_collision::l#6 = (byte) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG467 [203] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG468 [204] phi (byte) play_collision::i#3 = (byte) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG468 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy - //SEG469 play_collision::@1 + //SEG469 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG470 play_collision::@1 b1: - //SEG470 [204] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG471 [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda yp asl - //SEG471 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa + //SEG472 [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG472 [206] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG473 [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta xp - //SEG473 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG474 [207] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG474 [208] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG475 [208] phi (byte) play_collision::c#2 = (byte) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG475 [207] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG476 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG477 play_collision::@2 + //SEG476 [208] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG477 [208] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG478 play_collision::@2 b2: - //SEG478 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG479 [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG479 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG480 [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG480 play_collision::@7 - //SEG481 [210] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG481 play_collision::@7 + //SEG482 [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda yp cmp #PLAYFIELD_LINES bcc b4 - //SEG482 [215] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] - //SEG483 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG483 [216] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG484 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM rts - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [211] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG486 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and xp - //SEG486 [212] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG487 [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG487 [215] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG488 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG488 [216] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG489 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT rts - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [213] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [215] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG492 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG492 [216] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG493 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT rts - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG495 [215] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG496 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG496 [216] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG497 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD - //SEG497 play_collision::@return - //SEG498 [216] return + //SEG498 play_collision::@return + //SEG499 [217] return rts - //SEG499 play_collision::@3 + //SEG500 play_collision::@3 b3: - //SEG500 [217] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + //SEG501 [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG501 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG502 [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG502 [219] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 + //SEG503 [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b10 - //SEG503 play_collision::@8 - //SEG504 [220] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + //SEG504 play_collision::@8 + //SEG505 [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG505 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG506 [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG506 [222] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG507 [215] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG508 [215] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG508 [216] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG509 [216] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE rts - //SEG509 play_collision::@9 + //SEG510 play_collision::@9 b9: - //SEG510 [223] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG511 [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_10 - //SEG511 [203] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] - //SEG512 [203] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG513 [203] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG514 [203] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG512 [204] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG513 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG514 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG515 [204] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG515 play_collision::@10 + //SEG516 play_collision::@10 b10: - //SEG516 [224] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG517 [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_12 - //SEG517 [207] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] - //SEG518 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG519 [207] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG520 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG518 [208] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG519 [208] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG520 [208] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG521 [208] phi (byte) play_collision::i#2 = (byte~) play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG521 play_move_leftright +//SEG522 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte register(A) key_event) play_move_leftright: { - //SEG522 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG523 [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 // Handle keyboard events cmp #KEY_COMMA beq b1 - //SEG523 play_move_leftright::@2 - //SEG524 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG524 play_move_leftright::@2 + //SEG525 [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne b3 - //SEG525 play_move_leftright::@3 - //SEG526 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG526 play_move_leftright::@3 + //SEG527 [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG527 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG528 [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG528 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG529 [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG529 [230] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG530 [231] (byte*~) current_piece#98 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG530 [231] call play_collision - //SEG531 [201] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] - //SEG532 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG533 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG534 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG535 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG531 [232] call play_collision + //SEG532 [202] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG533 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG534 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG535 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG536 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG536 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 - //SEG537 play_move_leftright::@7 - //SEG538 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG539 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG537 [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG538 play_move_leftright::@7 + //SEG539 [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG540 [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG540 play_move_leftright::@4 - //SEG541 [235] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG541 play_move_leftright::@4 + //SEG542 [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG542 [236] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG543 [237] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] b2: - //SEG543 [236] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG544 [236] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG544 [237] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG545 [237] phi (byte) play_move_leftright::return#2 = (byte) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 rts - //SEG545 [236] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG546 [237] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] b3: - //SEG546 [236] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG547 [236] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG547 [237] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG548 [237] phi (byte) play_move_leftright::return#2 = (byte) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 - //SEG548 play_move_leftright::@return - //SEG549 [237] return + //SEG549 play_move_leftright::@return + //SEG550 [238] return rts - //SEG550 play_move_leftright::@1 + //SEG551 play_move_leftright::@1 b1: - //SEG551 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 + //SEG552 [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG552 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG553 [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG553 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG554 [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG554 [241] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG555 [242] (byte*~) current_piece#97 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_97 lda current_piece+1 sta current_piece_97+1 - //SEG555 [242] call play_collision - //SEG556 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG557 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG558 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG559 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG560 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG556 [243] call play_collision + //SEG557 [202] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG558 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG559 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG560 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG561 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#97 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG561 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 - //SEG562 play_move_leftright::@6 - //SEG563 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG564 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG562 [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG563 play_move_leftright::@6 + //SEG564 [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG565 [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG565 play_move_leftright::@5 - //SEG566 [246] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG566 play_move_leftright::@5 + //SEG567 [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } -//SEG567 play_move_down +//SEG568 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { - //SEG568 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG569 [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG569 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG570 [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b4 - //SEG570 [249] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] - //SEG571 play_move_down::@4 - //SEG572 [250] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] - //SEG573 [250] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG571 [250] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG572 play_move_down::@4 + //SEG573 [251] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG574 [251] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG574 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG575 [251] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b4: - //SEG575 [250] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG576 [251] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG576 play_move_down::@1 + //SEG577 play_move_down::@1 b1: - //SEG577 [251] call keyboard_event_pressed - //SEG578 [380] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG579 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG578 [252] call keyboard_event_pressed + //SEG579 [381] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG580 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG580 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - //SEG581 play_move_down::@12 - //SEG582 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG583 [254] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG581 [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG582 play_move_down::@12 + //SEG583 [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG584 [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG584 play_move_down::@5 - //SEG585 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG585 play_move_down::@5 + //SEG586 [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2 - //SEG586 play_move_down::@6 - //SEG587 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG587 play_move_down::@6 + //SEG588 [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG588 [257] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] - //SEG589 [257] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy - //SEG590 play_move_down::@2 + //SEG589 [258] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG590 [258] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG591 play_move_down::@2 b2: - //SEG591 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG592 [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3 - //SEG592 play_move_down::@7 - //SEG593 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG593 play_move_down::@7 + //SEG594 [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG594 [260] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] - //SEG595 [260] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy - //SEG596 play_move_down::@3 + //SEG595 [261] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG596 [261] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG597 play_move_down::@3 b3: - //SEG597 [261] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG598 [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq b5 - //SEG598 play_move_down::@8 - //SEG599 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG599 play_move_down::@8 + //SEG600 [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG600 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG601 [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG601 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG602 [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG602 [265] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG603 [266] (byte*~) current_piece#96 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_96 lda current_piece+1 sta current_piece_96+1 - //SEG603 [266] call play_collision - //SEG604 [201] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] - //SEG605 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG606 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG607 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG608 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG604 [267] call play_collision + //SEG605 [202] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG606 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG607 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG608 [202] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG609 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#96 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG609 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 - //SEG610 play_move_down::@13 - //SEG611 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG612 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 + //SEG610 [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG611 play_move_down::@13 + //SEG612 [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG613 [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b10 - //SEG613 [270] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] - //SEG614 play_move_down::@9 - //SEG615 [271] call play_lock_current + //SEG614 [271] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG615 play_move_down::@9 + //SEG616 [272] call play_lock_current jsr play_lock_current - //SEG616 [272] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] - //SEG617 play_move_down::@14 - //SEG618 [273] call play_remove_lines - //SEG619 [339] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG617 [273] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG618 play_move_down::@14 + //SEG619 [274] call play_remove_lines + //SEG620 [340] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] jsr play_remove_lines - //SEG620 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 + //SEG621 [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 lda play_remove_lines.removed - //SEG621 play_move_down::@15 - //SEG622 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG623 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG622 play_move_down::@15 + //SEG623 [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG624 [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG624 [277] call play_update_score + //SEG625 [278] call play_update_score jsr play_update_score - //SEG625 [278] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] - //SEG626 play_move_down::@16 - //SEG627 [279] call play_spawn_current - //SEG628 [286] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] - //SEG629 [286] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG630 [286] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG626 [279] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG627 play_move_down::@16 + //SEG628 [280] call play_spawn_current + //SEG629 [287] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG630 [287] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG631 [287] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG631 play_move_down::@17 - //SEG632 [280] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG632 play_move_down::@17 + //SEG633 [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG633 [281] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG634 [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG634 [282] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] - //SEG635 [282] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy - //SEG636 [282] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy - //SEG637 [282] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy - //SEG638 [282] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy - //SEG639 [282] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG635 [283] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11] + //SEG636 [283] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy + //SEG637 [283] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy + //SEG638 [283] phi (byte) current_xpos#43 = (byte) current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy + //SEG639 [283] phi (byte*) current_piece_gfx#35 = (byte*~) current_piece_gfx#117 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy + //SEG640 [283] phi (byte) current_orientation#37 = (byte) 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG640 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy - //SEG641 [282] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy - //SEG642 [282] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy - //SEG643 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy - //SEG644 [282] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy - //SEG645 [282] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy - //SEG646 [282] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy - //SEG647 [282] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy - //SEG648 play_move_down::@11 + //SEG641 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy + //SEG642 [283] phi (byte*) current_piece#28 = (byte*~) current_piece#93 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy + //SEG643 [283] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy + //SEG644 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy + //SEG645 [283] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy + //SEG646 [283] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy + //SEG647 [283] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy + //SEG648 [283] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@17->play_move_down::@11#12] -- register_copy + //SEG649 play_move_down::@11 b11: - //SEG649 [283] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] - //SEG650 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG651 [283] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG652 [283] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG653 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG654 [283] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG655 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG656 [283] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG657 [283] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG658 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG659 [283] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG660 [283] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG661 [283] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG662 [283] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG663 [283] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG650 [284] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG651 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG652 [284] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG653 [284] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG654 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG655 [284] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG656 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG657 [284] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG658 [284] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG659 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG660 [284] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG661 [284] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG662 [284] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG663 [284] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG664 [284] phi (byte) current_movedown_counter#14 = (byte) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG664 [283] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG665 [284] phi (byte) play_move_down::return#3 = (byte) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #1 rts - //SEG665 [283] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG666 [284] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] b5: - //SEG666 [283] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG667 [283] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG668 [283] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG669 [283] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG670 [283] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG671 [283] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG672 [283] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG673 [283] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG674 [283] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG675 [283] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG676 [283] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG677 [283] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG678 [283] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG679 [283] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG680 [283] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG667 [284] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG668 [284] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG669 [284] phi (byte) current_xpos#22 = (byte) current_xpos#14 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG670 [284] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#13 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG671 [284] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG672 [284] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG673 [284] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG674 [284] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG675 [284] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG676 [284] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG677 [284] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG678 [284] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG679 [284] phi (byte) current_ypos#19 = (byte) current_ypos#11 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG680 [284] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG681 [284] phi (byte) play_move_down::return#3 = (byte) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #0 - //SEG681 play_move_down::@return - //SEG682 [284] return + //SEG682 play_move_down::@return + //SEG683 [285] return rts - //SEG683 play_move_down::@10 + //SEG684 play_move_down::@10 b10: - //SEG684 [285] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 + //SEG685 [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG685 [282] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] - //SEG686 [282] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG687 [282] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG688 [282] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG689 [282] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG690 [282] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG691 [282] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG692 [282] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG693 [282] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG694 [282] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG695 [282] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG696 [282] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG697 [282] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG698 [282] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG686 [283] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG687 [283] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG688 [283] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG689 [283] phi (byte) current_xpos#43 = (byte) current_xpos#14 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG690 [283] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#13 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG691 [283] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG692 [283] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG693 [283] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG694 [283] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG695 [283] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG696 [283] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG697 [283] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG698 [283] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG699 [283] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG699 play_spawn_current +//SEG700 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { .label _7 = $61 .label piece_idx = $36 - //SEG700 [287] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG701 [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current ldx next_piece_idx - //SEG701 [288] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuxx_rol_1 + //SEG702 [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _7 - //SEG702 [289] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG703 [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG703 [290] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG704 [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG704 [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG705 [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG705 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 + //SEG706 [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG706 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG707 [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG707 [294] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG708 [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 ldy _7 lda PIECES,y sta current_piece_100 lda PIECES+1,y sta current_piece_100+1 - //SEG708 [295] call play_collision - //SEG709 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] - //SEG710 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG711 [201] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG712 [201] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG709 [296] call play_collision + //SEG710 [202] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG711 [202] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG712 [202] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG713 [202] phi (byte) play_collision::orientation#5 = (byte) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG713 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG714 [202] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG714 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 - //SEG715 play_spawn_current::@4 - //SEG716 [297] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 - //SEG717 [298] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG715 [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG716 play_spawn_current::@4 + //SEG717 [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + //SEG718 [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b1 - //SEG718 [300] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] - //SEG719 [300] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG719 [301] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG720 [301] phi (byte) game_over#52 = (byte) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over - //SEG720 [299] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] - //SEG721 play_spawn_current::@5 - //SEG722 [300] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] - //SEG723 [300] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy - //SEG724 play_spawn_current::@1 + //SEG721 [300] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG722 play_spawn_current::@5 + //SEG723 [301] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG724 [301] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG725 play_spawn_current::@1 b1: - //SEG725 [301] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG726 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG726 [302] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG727 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx - //SEG727 play_spawn_current::@2 + //SEG728 play_spawn_current::@2 b2: - //SEG728 [302] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG729 [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 - //SEG729 play_spawn_current::@return - //SEG730 [303] return + //SEG730 play_spawn_current::@return + //SEG731 [304] return rts - //SEG731 play_spawn_current::sid_rnd1 + //SEG732 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG732 [304] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG733 [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG733 play_spawn_current::@3 - //SEG734 [305] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG734 play_spawn_current::@3 + //SEG735 [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG735 [301] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] - //SEG736 [301] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG736 [302] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG737 [302] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 } -//SEG737 play_update_score +//SEG738 play_update_score // Update the score based on the number of lines removed // play_update_score(byte register(X) removed) play_update_score: { .label lines_before = $62 .label add_bcd = $63 - //SEG738 [306] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG739 [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn - //SEG739 play_update_score::@1 - //SEG740 [307] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG740 play_update_score::@1 + //SEG741 [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG741 [308] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuaa_band_vbuc1 + //SEG742 [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG742 [309] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG743 [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG743 [310] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa + //SEG744 [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -26462,9 +26473,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG744 asm { sed } + //SEG745 asm { sed } sed - //SEG745 [312] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG746 [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -26472,7 +26483,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG746 [313] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG747 [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -26486,88 +26497,88 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG747 asm { cld } + //SEG748 asm { cld } cld - //SEG748 [315] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuaa=_lo_vwuz1 + //SEG749 [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG749 [316] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuaa=vbuaa_band_vbuc1 + //SEG750 [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG750 [317] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG751 [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn - //SEG751 [318] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] - //SEG752 play_update_score::@2 - //SEG753 [319] call play_increase_level + //SEG752 [319] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG753 play_update_score::@2 + //SEG754 [320] call play_increase_level jsr play_increase_level - //SEG754 [320] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] - //SEG755 [320] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG756 [320] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG757 [320] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG758 [320] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG759 [320] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy - //SEG760 play_update_score::@return + //SEG755 [321] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG756 [321] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG757 [321] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG758 [321] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG759 [321] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG760 [321] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG761 play_update_score::@return breturn: - //SEG761 [321] return + //SEG762 [322] return rts } -//SEG762 play_increase_level +//SEG763 play_increase_level // Increase the level play_increase_level: { - //SEG763 [322] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG764 [323] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG764 [323] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG765 [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b3 - //SEG765 play_increase_level::@3 - //SEG766 [324] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG766 play_increase_level::@3 + //SEG767 [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 tay lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG767 [325] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] - //SEG768 [325] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG768 [326] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG769 [326] phi (byte) current_movedown_slow#66 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG769 [325] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG770 [326] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b3: - //SEG770 [325] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG771 [326] phi (byte) current_movedown_slow#66 = (byte) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow - //SEG771 play_increase_level::@1 + //SEG772 play_increase_level::@1 b1: - //SEG772 [326] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG773 [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG773 [327] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG774 [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG774 [328] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG775 [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b2 - //SEG775 play_increase_level::@4 - //SEG776 [329] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG776 play_increase_level::@4 + //SEG777 [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG777 [330] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] - //SEG778 [330] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy - //SEG779 play_increase_level::@2 + //SEG778 [331] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG779 [331] phi (byte) level_bcd#62 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG780 play_increase_level::@2 b2: - //SEG780 asm { sed } + //SEG781 asm { sed } // Increase the score values gained sed - //SEG781 [332] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] - //SEG782 [332] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 + //SEG782 [333] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG783 [333] phi (byte) play_increase_level::b#2 = (byte) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG783 [332] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] - //SEG784 [332] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy - //SEG785 play_increase_level::@5 + //SEG784 [333] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG785 [333] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG786 play_increase_level::@5 b5: - //SEG786 [333] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG787 [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG787 [334] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG788 [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -26582,19 +26593,19 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG788 [335] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG789 [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG789 [336] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG790 [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b5 - //SEG790 play_increase_level::@6 - //SEG791 asm { cld } + //SEG791 play_increase_level::@6 + //SEG792 asm { cld } cld - //SEG792 play_increase_level::@return - //SEG793 [338] return + //SEG793 play_increase_level::@return + //SEG794 [339] return rts } -//SEG794 play_remove_lines +//SEG795 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -26605,112 +26616,112 @@ play_remove_lines: { .label y = $38 .label removed = $39 .label full = $3b - //SEG795 [340] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG796 [340] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG796 [341] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG797 [341] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG797 [340] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG798 [341] phi (byte) play_remove_lines::y#8 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 sta y - //SEG798 [340] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG799 [341] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG799 [340] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG800 [341] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 // Read all lines and rewrite them - //SEG800 [340] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] - //SEG801 [340] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG802 [340] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG803 [340] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG804 [340] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy - //SEG805 play_remove_lines::@1 + //SEG801 [341] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG802 [341] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG803 [341] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG804 [341] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG805 [341] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG806 play_remove_lines::@1 b1: - //SEG806 [341] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG807 [341] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG807 [342] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG808 [342] phi (byte) play_remove_lines::full#4 = (byte) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG808 [341] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG809 [342] phi (byte) play_remove_lines::x#2 = (byte) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG809 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG810 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy - //SEG811 [341] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG812 [341] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG813 [341] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG814 [341] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG815 [341] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy - //SEG816 play_remove_lines::@2 + //SEG810 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG811 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG812 [342] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG813 [342] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG814 [342] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG815 [342] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG816 [342] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG817 play_remove_lines::@2 b2: - //SEG817 [342] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG818 [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG818 [343] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG819 [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG819 [344] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG820 [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG820 [346] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG821 [346] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG821 [347] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG822 [347] phi (byte) play_remove_lines::full#2 = (byte) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG822 [345] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] - //SEG823 play_remove_lines::@9 - //SEG824 [346] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] - //SEG825 [346] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy - //SEG826 play_remove_lines::@3 + //SEG823 [346] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG824 play_remove_lines::@9 + //SEG825 [347] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG826 [347] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG827 play_remove_lines::@3 b3: - //SEG827 [347] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG828 [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG828 [348] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG829 [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG829 [349] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [350] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2 - //SEG831 play_remove_lines::@4 - //SEG832 [351] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG832 play_remove_lines::@4 + //SEG833 [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6 - //SEG833 play_remove_lines::@5 - //SEG834 [352] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG834 play_remove_lines::@5 + //SEG835 [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[PLAYFIELD_COLS] - //SEG835 [353] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [354] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] - //SEG837 [354] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG838 [354] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy - //SEG839 play_remove_lines::@6 + //SEG837 [355] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG838 [355] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG839 [355] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG840 play_remove_lines::@6 b6: - //SEG840 [355] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [356] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1 - //SEG842 [357] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG843 [358] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b4: - //SEG843 [357] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG844 [358] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy // Write zeros in the rest of the lines - //SEG844 play_remove_lines::@7 - //SEG845 [358] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG845 play_remove_lines::@7 + //SEG846 [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 - //SEG846 play_remove_lines::@return - //SEG847 [359] return + //SEG847 play_remove_lines::@return + //SEG848 [360] return rts - //SEG848 play_remove_lines::@8 + //SEG849 play_remove_lines::@8 b8: - //SEG849 [360] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG850 [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG850 [361] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG851 [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b4 } -//SEG851 play_lock_current +//SEG852 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label yp = $25 @@ -26722,147 +26733,147 @@ play_lock_current: { .label i_3 = $3d .label i_7 = $3d .label i_9 = $3d - //SEG852 [362] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 - //SEG853 [363] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG854 [363] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG853 [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 + //SEG854 [364] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG855 [364] phi (byte) play_lock_current::l#6 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG855 [363] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG856 [364] phi (byte) play_lock_current::i#3 = (byte) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG856 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG857 play_lock_current::@1 + //SEG857 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG858 play_lock_current::@1 b1: - //SEG858 [364] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG859 [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda yp asl - //SEG859 [365] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa + //SEG860 [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG860 [366] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 + //SEG861 [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14 -- vbuz1=vbuz2 lda current_xpos sta xp - //SEG861 [367] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG862 [367] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG862 [368] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG863 [368] phi (byte) play_lock_current::c#2 = (byte) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG863 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG864 [367] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy - //SEG865 play_lock_current::@2 + //SEG864 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG865 [368] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG866 play_lock_current::@2 b2: - //SEG866 [368] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG867 [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG867 [369] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG868 [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG868 play_lock_current::@4 - //SEG869 [370] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG869 play_lock_current::@4 + //SEG870 [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy xp sta (playfield_line),y - //SEG870 play_lock_current::@3 + //SEG871 play_lock_current::@3 b3: - //SEG871 [371] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + //SEG872 [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 inc xp - //SEG872 [372] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG873 [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG873 [373] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG874 [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b7 - //SEG874 play_lock_current::@5 - //SEG875 [374] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + //SEG875 play_lock_current::@5 + //SEG876 [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 inc yp - //SEG876 [375] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG877 [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG877 [376] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG878 [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 - //SEG878 play_lock_current::@return - //SEG879 [377] return + //SEG879 play_lock_current::@return + //SEG880 [378] return rts - //SEG880 play_lock_current::@6 + //SEG881 play_lock_current::@6 b6: - //SEG881 [378] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG882 [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG882 [363] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] - //SEG883 [363] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG884 [363] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG885 [363] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG883 [364] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG884 [364] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG885 [364] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG886 [364] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG886 play_lock_current::@7 + //SEG887 play_lock_current::@7 b7: - //SEG887 [379] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG888 [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG888 [367] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] - //SEG889 [367] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG890 [367] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG891 [367] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG889 [368] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG890 [368] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG891 [368] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG892 [368] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG892 keyboard_event_pressed +//SEG893 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed // keyboard_event_pressed(byte zeropage($3f) keycode) keyboard_event_pressed: { .label row_bits = $6b .label keycode = $3f - //SEG893 [381] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG894 [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG894 [382] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG895 [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG895 [383] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG896 [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG896 [384] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG897 [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG897 keyboard_event_pressed::@return - //SEG898 [385] return + //SEG898 keyboard_event_pressed::@return + //SEG899 [386] return rts } -//SEG899 keyboard_event_get +//SEG900 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG900 [386] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG901 [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG901 keyboard_event_get::@1 - //SEG902 [387] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG902 keyboard_event_get::@1 + //SEG903 [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG903 [388] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG904 [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldy keyboard_events_size ldx keyboard_events,y - //SEG904 [389] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] - //SEG905 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG906 [389] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG905 [390] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG906 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG907 [390] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy rts - //SEG907 [389] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG908 [390] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG908 [389] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG909 [389] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG909 [390] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG910 [390] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff - //SEG910 keyboard_event_get::@return - //SEG911 [390] return + //SEG911 keyboard_event_get::@return + //SEG912 [391] return rts } -//SEG912 keyboard_event_scan +//SEG913 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -26871,184 +26882,184 @@ keyboard_event_scan: { .label row_scan = $6c .label keycode = $41 .label row = $40 - //SEG913 [392] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] - //SEG914 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG915 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG914 [393] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + //SEG915 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG916 [392] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG917 [393] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 sta row - //SEG917 [392] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] - //SEG918 [392] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG919 [392] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG920 [392] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy - //SEG921 keyboard_event_scan::@7 + //SEG918 [393] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG919 [393] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG920 [393] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG921 [393] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG922 keyboard_event_scan::@7 b7: - //SEG922 [393] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG923 [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG923 [394] call keyboard_matrix_read + //SEG924 [395] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG924 [395] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG925 keyboard_event_scan::@19 - //SEG926 [396] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG925 [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG926 keyboard_event_scan::@19 + //SEG927 [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG927 [397] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG928 [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b5 - //SEG928 keyboard_event_scan::@16 - //SEG929 [398] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG929 keyboard_event_scan::@16 + //SEG930 [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 lax keycode axs #-[8] stx keycode - //SEG930 [399] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] - //SEG931 [399] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG932 [399] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy - //SEG933 keyboard_event_scan::@8 + //SEG931 [400] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG932 [400] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG933 [400] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG934 keyboard_event_scan::@8 b8: - //SEG934 [400] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG935 [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG935 [401] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG936 [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7 - //SEG936 [402] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] - //SEG937 keyboard_event_scan::@17 - //SEG938 [403] call keyboard_event_pressed - //SEG939 [380] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] - //SEG940 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG937 [403] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG938 keyboard_event_scan::@17 + //SEG939 [404] call keyboard_event_pressed + //SEG940 [381] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG941 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG941 [404] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 - //SEG942 keyboard_event_scan::@20 - //SEG943 [405] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - //SEG944 [406] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 + //SEG942 [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG943 keyboard_event_scan::@20 + //SEG944 [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + //SEG945 [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG945 [407] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] - //SEG946 keyboard_event_scan::@18 - //SEG947 [408] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] - //SEG948 keyboard_event_scan::@1 - //SEG949 [409] call keyboard_event_pressed - //SEG950 [380] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] - //SEG951 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG946 [408] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG947 keyboard_event_scan::@18 + //SEG948 [409] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG949 keyboard_event_scan::@1 + //SEG950 [410] call keyboard_event_pressed + //SEG951 [381] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG952 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG952 [410] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 - //SEG953 keyboard_event_scan::@21 - //SEG954 [411] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - //SEG955 [412] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 + //SEG953 [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG954 keyboard_event_scan::@21 + //SEG955 [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + //SEG956 [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG956 [413] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] - //SEG957 keyboard_event_scan::@4 - //SEG958 [414] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] - //SEG959 keyboard_event_scan::@2 - //SEG960 [415] call keyboard_event_pressed - //SEG961 [380] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] - //SEG962 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG957 [414] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG958 keyboard_event_scan::@4 + //SEG959 [415] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG960 keyboard_event_scan::@2 + //SEG961 [416] call keyboard_event_pressed + //SEG962 [381] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG963 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG963 [416] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 - //SEG964 keyboard_event_scan::@22 - //SEG965 [417] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - //SEG966 [418] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 + //SEG964 [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG965 keyboard_event_scan::@22 + //SEG966 [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + //SEG967 [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG967 [419] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] - //SEG968 keyboard_event_scan::@5 - //SEG969 [420] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] - //SEG970 keyboard_event_scan::@3 - //SEG971 [421] call keyboard_event_pressed - //SEG972 [380] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] - //SEG973 [380] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG968 [420] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG969 keyboard_event_scan::@5 + //SEG970 [421] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG971 keyboard_event_scan::@3 + //SEG972 [422] call keyboard_event_pressed + //SEG973 [381] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG974 [381] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG974 [422] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 - //SEG975 keyboard_event_scan::@23 - //SEG976 [423] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - //SEG977 [424] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG975 [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG976 keyboard_event_scan::@23 + //SEG977 [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + //SEG978 [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG978 [425] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] - //SEG979 keyboard_event_scan::@6 - //SEG980 keyboard_event_scan::@return - //SEG981 [426] return + //SEG979 [426] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG980 keyboard_event_scan::@6 + //SEG981 keyboard_event_scan::@return + //SEG982 [427] return rts // Something has changed on the keyboard row - check each column - //SEG982 [427] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] - //SEG983 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG984 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG985 [427] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy - //SEG986 [427] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG983 [428] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG984 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [428] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG987 [428] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b5: - //SEG987 [427] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG988 [427] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG989 [427] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 + //SEG988 [428] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG989 [428] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG990 [428] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 - //SEG990 keyboard_event_scan::@9 + //SEG991 keyboard_event_scan::@9 b9: - //SEG991 [428] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG992 [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG992 [429] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG993 [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG993 [430] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG994 [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG994 keyboard_event_scan::@12 - //SEG995 [431] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG995 keyboard_event_scan::@12 + //SEG996 [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10 - //SEG996 keyboard_event_scan::@13 - //SEG997 [432] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG997 keyboard_event_scan::@13 + //SEG998 [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG998 [433] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG999 [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG999 keyboard_event_scan::@14 - //SEG1000 [434] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1000 keyboard_event_scan::@14 + //SEG1001 [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG1001 [435] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1002 [436] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] - //SEG1003 [436] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy - //SEG1004 keyboard_event_scan::@10 + //SEG1003 [437] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG1004 [437] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1005 keyboard_event_scan::@10 b10: - //SEG1005 [437] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1006 [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1006 [438] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1007 [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1007 [439] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG1008 [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b9 - //SEG1008 keyboard_event_scan::@15 - //SEG1009 [440] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1009 keyboard_event_scan::@15 + //SEG1010 [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8 - //SEG1010 keyboard_event_scan::@11 + //SEG1011 keyboard_event_scan::@11 b11: - //SEG1011 [441] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuaa=vbuz1_bor_vbuc1 + //SEG1012 [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG1012 [442] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1013 [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa // Key released ldy keyboard_events_size sta keyboard_events,y - //SEG1013 [443] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10 } -//SEG1014 keyboard_matrix_read +//SEG1015 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -27056,90 +27067,90 @@ keyboard_event_scan: { // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. // keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG1015 [444] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG1016 [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG1016 [445] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1017 [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG1017 keyboard_matrix_read::@return - //SEG1018 [446] return + //SEG1018 keyboard_matrix_read::@return + //SEG1019 [447] return rts } -//SEG1019 render_show +//SEG1020 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f - //SEG1020 [447] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1021 [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181 - //SEG1021 [448] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] - //SEG1022 render_show::toD0182 - //SEG1023 [449] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] - //SEG1024 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1022 [449] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1023 render_show::toD0182 + //SEG1024 [450] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1025 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0182_return - //SEG1025 render_show::@1 + //SEG1026 render_show::@1 b1: - //SEG1026 [450] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1027 [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1027 [451] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1028 [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1028 [452] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1029 [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1029 [453] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1030 [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing - //SEG1030 render_show::@return - //SEG1031 [454] return + //SEG1031 render_show::@return + //SEG1032 [455] return rts - //SEG1032 [455] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] - //SEG1033 render_show::toD0181 + //SEG1033 [456] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1034 render_show::toD0181 toD0181: - //SEG1034 [449] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] - //SEG1035 [449] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1035 [450] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1036 [450] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b1 } -//SEG1036 play_init +//SEG1037 play_init // Initialize play data tables play_init: { .label pli = $43 .label idx = $45 - //SEG1037 [457] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG1038 [457] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1038 [458] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1039 [458] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1039 [457] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1040 [458] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1040 [457] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 + //SEG1041 [458] phi (byte) play_init::j#2 = (byte) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 ldy #0 - //SEG1041 [457] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG1042 [457] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1043 [457] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1044 [457] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG1045 play_init::@1 + //SEG1042 [458] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1043 [458] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1044 [458] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1045 [458] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1046 play_init::@1 b1: - //SEG1046 [458] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1047 [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1047 [459] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1048 [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 lda pli sta playfield_lines,x lda pli+1 sta playfield_lines+1,x - //SEG1048 [460] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG1049 [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda idx sta playfield_lines_idx,y - //SEG1049 [461] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1050 [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -27147,36 +27158,36 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1050 [462] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1051 [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1051 [463] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy + //SEG1052 [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG1052 [464] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1053 [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1 - //SEG1053 play_init::@2 - //SEG1054 [465] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1054 play_init::@2 + //SEG1055 [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1055 [466] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1056 [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1056 [467] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] - //SEG1057 [467] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 + //SEG1057 [468] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1058 [468] phi (byte) play_init::b#2 = (byte) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 ldx #0 // Set the initial score add values - //SEG1058 [467] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] - //SEG1059 [467] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy - //SEG1060 play_init::@3 + //SEG1059 [468] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1060 [468] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1061 play_init::@3 b3: - //SEG1061 [468] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG1062 [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1062 [469] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1063 [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -27186,196 +27197,196 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1063 [470] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1064 [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1064 [471] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1065 [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b3 - //SEG1065 play_init::@return - //SEG1066 [472] return + //SEG1066 play_init::@return + //SEG1067 [473] return rts } -//SEG1067 sprites_irq_init +//SEG1068 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1068 asm { sei } + //SEG1069 asm { sei } sei - //SEG1069 [474] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1070 asm { ldaCIA1_INTERRUPT } + //SEG1071 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1071 [476] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1072 [477] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1073 [478] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1074 [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1074 [479] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1075 [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1075 [480] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1076 [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1076 [481] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1077 [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1077 [482] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1078 [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1078 asm { cli } + //SEG1079 asm { cli } cli - //SEG1079 sprites_irq_init::@return - //SEG1080 [484] return + //SEG1080 sprites_irq_init::@return + //SEG1081 [485] return rts } -//SEG1081 sprites_init +//SEG1082 sprites_init // Setup the sprites sprites_init: { .label xpos = $46 - //SEG1082 [485] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG1083 [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1083 [486] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG1084 [487] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1084 [487] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1085 [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG1085 [488] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1086 [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG1086 [489] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG1087 [489] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1087 [490] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1088 [490] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1088 [489] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG1089 [490] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG1089 [489] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG1090 [489] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1091 [489] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG1092 sprites_init::@1 + //SEG1090 [490] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1091 [490] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1092 [490] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1093 sprites_init::@1 b1: - //SEG1093 [490] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1094 [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1094 [491] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1095 [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG1095 [492] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG1096 [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG1096 [493] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1097 [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1097 [494] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG1098 [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG1098 [495] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1099 [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1 - //SEG1099 sprites_init::@return - //SEG1100 [496] return + //SEG1100 sprites_init::@return + //SEG1101 [497] return rts } -//SEG1101 render_init +//SEG1102 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3 .label li_1 = $47 .label li_2 = $49 - //SEG1102 render_init::vicSelectGfxBank1 - //SEG1103 [498] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1103 render_init::vicSelectGfxBank1 + //SEG1104 [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1104 [499] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG1105 render_init::vicSelectGfxBank1_toDd001 - //SEG1106 render_init::vicSelectGfxBank1_@1 - //SEG1107 [500] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1105 [500] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1106 render_init::vicSelectGfxBank1_toDd001 + //SEG1107 render_init::vicSelectGfxBank1_@1 + //SEG1108 [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG1108 render_init::@2 - //SEG1109 [501] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG1109 render_init::@2 + //SEG1110 [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1110 [502] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1111 [503] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1112 [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG1112 [504] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1113 [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1113 [505] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1114 [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1114 [506] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1115 [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1115 [507] call render_screen_original - //SEG1116 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] - //SEG1117 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1116 [508] call render_screen_original + //SEG1117 [520] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1118 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [508] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] - //SEG1119 render_init::@3 - //SEG1120 [509] call render_screen_original - //SEG1121 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] - //SEG1122 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1119 [509] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1120 render_init::@3 + //SEG1121 [510] call render_screen_original + //SEG1122 [520] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1123 [520] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1123 [510] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] - //SEG1124 [510] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1124 [511] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1125 [511] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1125 [510] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1126 [511] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1126 [510] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1 + //SEG1127 [511] phi (byte) render_init::i#2 = (byte) 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1 ldy #0 - //SEG1127 [510] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG1128 [510] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1129 [510] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1130 [510] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy - //SEG1131 render_init::@1 + //SEG1128 [511] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1129 [511] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1130 [511] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1131 [511] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1132 render_init::@1 b1: - //SEG1132 [511] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG1133 [512] (byte~) render_init::$15 ← (byte) render_init::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1133 [512] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$15) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuxx=pbuz1 lda li_1 sta screen_lines_1,x lda li_1+1 sta screen_lines_1+1,x - //SEG1134 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1135 [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuxx=pbuz1 lda li_2 sta screen_lines_2,x lda li_2+1 sta screen_lines_2+1,x - //SEG1135 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1136 [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -27383,7 +27394,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1136 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1137 [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -27391,16 +27402,16 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1137 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuyy=_inc_vbuyy + //SEG1138 [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuyy=_inc_vbuyy iny - //SEG1138 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1139 [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1 - //SEG1139 render_init::@return - //SEG1140 [518] return + //SEG1140 render_init::@return + //SEG1141 [519] return rts } -//SEG1141 render_screen_original +//SEG1142 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 // render_screen_original(byte* zeropage($50) screen) @@ -27411,315 +27422,315 @@ render_screen_original: { .label oscr = $4c .label ocols = $4e .label y = $4b - //SEG1142 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] - //SEG1143 [520] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1143 [521] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1144 [521] phi (byte) render_screen_original::y#6 = (byte) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1144 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1145 [521] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1145 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1146 [521] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1146 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1147 [521] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1147 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy - //SEG1148 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] - //SEG1149 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1150 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1151 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1152 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1153 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy - //SEG1154 render_screen_original::@1 + //SEG1148 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1149 [521] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1150 [521] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1151 [521] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1152 [521] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1153 [521] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1154 [521] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1155 render_screen_original::@1 b1: - //SEG1155 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG1156 [521] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1156 [522] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1157 [522] phi (byte) render_screen_original::x#4 = (byte) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1157 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1158 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy - //SEG1159 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG1160 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1161 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1162 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy - //SEG1163 render_screen_original::@2 + //SEG1158 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1159 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1160 [522] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1161 [522] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1162 [522] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1163 [522] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1164 render_screen_original::@2 b2: - //SEG1164 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1165 [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1165 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1166 [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1166 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1167 [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1167 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1168 [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1168 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1169 [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1169 [527] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1170 [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2 - //SEG1170 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] - //SEG1171 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1172 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1173 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1174 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1175 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy - //SEG1176 render_screen_original::@3 + //SEG1171 [529] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1172 [529] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1173 [529] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1174 [529] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1175 [529] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1176 [529] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1177 render_screen_original::@3 b3: - //SEG1177 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y sta (screen),y - //SEG1178 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1179 [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1179 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1180 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1181 [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y sta (cols),y - //SEG1181 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1182 [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1182 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1183 [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1183 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1184 [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1184 [536] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1185 [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3 - //SEG1185 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] - //SEG1186 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1187 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1188 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy - //SEG1189 render_screen_original::@4 + //SEG1186 [538] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1187 [538] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1188 [538] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1189 [538] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1190 render_screen_original::@4 b4: - //SEG1190 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1191 [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1191 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1192 [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1192 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1193 [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1193 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1194 [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1194 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1195 [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1195 [543] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1196 [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4 - //SEG1196 render_screen_original::@5 - //SEG1197 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1197 render_screen_original::@5 + //SEG1198 [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1198 [545] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1199 [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1 - //SEG1199 render_screen_original::@return - //SEG1200 [546] return + //SEG1200 render_screen_original::@return + //SEG1201 [547] return rts } -//SEG1201 sid_rnd_init +//SEG1202 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1202 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 + //SEG1203 [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1203 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1204 [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG1204 sid_rnd_init::@return - //SEG1205 [549] return + //SEG1205 sid_rnd_init::@return + //SEG1206 [550] return rts } -//SEG1206 sprites_irq +//SEG1207 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = $54 - //SEG1207 entry interrupt(HARDWARE_CLOBBER) + //SEG1208 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1208 asm { cld } + //SEG1209 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1209 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1210 [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG1210 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1211 [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1211 [553] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1212 [554] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1213 [555] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1214 [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1214 [556] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 + //SEG1215 [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1215 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1216 [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify - //SEG1216 sprites_irq::@8 + //SEG1217 sprites_irq::@8 b8: - //SEG1217 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1218 [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 - //SEG1218 sprites_irq::@9 - //SEG1219 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1219 sprites_irq::@9 + //SEG1220 [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1220 [560] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1221 [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 - //SEG1221 sprites_irq::@10 - //SEG1222 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1222 sprites_irq::@10 + //SEG1223 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1223 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1224 [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG1224 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1225 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1226 [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1226 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1227 [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1227 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1228 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG1228 sprites_irq::@2 + //SEG1229 sprites_irq::@2 b2: - //SEG1229 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1230 [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1230 [568] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1231 [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 - //SEG1231 sprites_irq::@6 - //SEG1232 [569] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1232 sprites_irq::@6 + //SEG1233 [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 - //SEG1233 sprites_irq::@7 - //SEG1234 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1234 sprites_irq::@7 + //SEG1235 [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1235 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1236 [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1236 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1237 [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1237 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] - //SEG1238 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy - //SEG1239 sprites_irq::@5 + //SEG1238 [574] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1239 [574] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1240 sprites_irq::@5 b5: - //SEG1240 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1241 [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1241 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1242 [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1242 sprites_irq::@return - //SEG1243 [576] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1243 sprites_irq::@return + //SEG1244 [577] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1244 sprites_irq::@4 + //SEG1245 sprites_irq::@4 b4: - //SEG1245 [577] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG1246 [578] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1246 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1247 [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1247 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1248 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1249 [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5 - //SEG1249 sprites_irq::@3 + //SEG1250 sprites_irq::@3 b3: - //SEG1250 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1251 [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1251 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1252 [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1252 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] - //SEG1253 sprites_irq::toSpritePtr2 - //SEG1254 sprites_irq::@11 - //SEG1255 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1253 [584] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1254 sprites_irq::toSpritePtr2 + //SEG1255 sprites_irq::@11 + //SEG1256 [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5 - //SEG1256 sprites_irq::@1 + //SEG1257 sprites_irq::@1 b1: - //SEG1257 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1258 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1258 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG1259 [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG1259 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1260 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1261 [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1261 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG1262 [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG1262 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1263 [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } diff --git a/src/test/ref/complex/tetris/tetris.sym b/src/test/ref/complex/tetris/tetris.sym index 8e7e93298..4fb7c61e2 100644 --- a/src/test/ref/complex/tetris/tetris.sym +++ b/src/test/ref/complex/tetris/tetris.sym @@ -1010,9 +1010,10 @@ (dword[5]) score_add_bcd (const dword[5]) score_add_bcd#0 score_add_bcd = { fill( 5, 0) } (dword) score_bcd +(dword) score_bcd#0 score_bcd zp ZP_DWORD:40 0.1111111111111111 (dword) score_bcd#14 score_bcd zp ZP_DWORD:40 3.135135135135135 (dword) score_bcd#16 score_bcd zp ZP_DWORD:40 1.1428571428571428 -(dword) score_bcd#18 score_bcd zp ZP_DWORD:40 2.352941176470588 +(dword) score_bcd#18 score_bcd zp ZP_DWORD:40 2.3921568627450975 (dword) score_bcd#26 score_bcd zp ZP_DWORD:40 6.0 (dword) score_bcd#29 score_bcd zp ZP_DWORD:40 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 @@ -1117,7 +1118,7 @@ reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] zp ZP_BYTE:37 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] zp ZP_WORD:38 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#29 ] +zp ZP_DWORD:40 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:44 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_BYTE:45 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:46 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] diff --git a/src/test/ref/const-early-identification.log b/src/test/ref/const-early-identification.log index 7a07f1114..fcc6f3c2d 100644 --- a/src/test/ref/const-early-identification.log +++ b/src/test/ref/const-early-identification.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte*~) main::$0 ← & (byte) A Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 Identified constant variable (byte*) SCREEN Identified constant variable (byte) main::B @@ -176,7 +177,6 @@ VARIABLE REGISTER WEIGHTS (byte) sub::D#0 4.0 Initial phi equivalence classes -Added variable A#0 to zero page equivalence class [ A#0 ] Added variable sub::D#0 to zero page equivalence class [ sub::D#0 ] Complete equivalence classes [ A#0 ] diff --git a/src/test/ref/const-word-pointer.log b/src/test/ref/const-word-pointer.log index 009210ea4..e83ae6934 100644 --- a/src/test/ref/const-word-pointer.log +++ b/src/test/ref/const-word-pointer.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (word*~) main::$0 ← & (word) main::w Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 Identified constant variable (byte*) main::screen @@ -140,7 +141,6 @@ VARIABLE REGISTER WEIGHTS (word*) main::wp Initial phi equivalence classes -Added variable main::w#0 to zero page equivalence class [ main::w#0 ] Added variable main::$1 to zero page equivalence class [ main::$1 ] Added variable main::$2 to zero page equivalence class [ main::$2 ] Added variable main::$3 to zero page equivalence class [ main::$3 ] diff --git a/src/test/ref/hex2dec-ptrptr.asm b/src/test/ref/hex2dec-ptrptr.asm index a275232d1..2a1c31da1 100644 --- a/src/test/ref/hex2dec-ptrptr.asm +++ b/src/test/ref/hex2dec-ptrptr.asm @@ -53,8 +53,8 @@ main: { // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(2) value, byte* zeropage(4) dst) utoa16w: { - .label value = 2 .label dst = 4 + .label value = 2 lda value+1 lsr lsr diff --git a/src/test/ref/hex2dec-ptrptr.cfg b/src/test/ref/hex2dec-ptrptr.cfg index 6985aaf3c..621a8a41b 100644 --- a/src/test/ref/hex2dec-ptrptr.cfg +++ b/src/test/ref/hex2dec-ptrptr.cfg @@ -12,30 +12,30 @@ main: scope:[main] from @1 [5] call cls to:main::@1 main::@1: scope:[main] from main - [6] phi() + [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 [7] call utoa16w to:main::@2 main::@2: scope:[main] from main::@1 - [8] phi() + [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [9] call utoa16w to:main::@3 main::@3: scope:[main] from main::@2 - [10] phi() + [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [11] call utoa16w to:main::@4 main::@4: scope:[main] from main::@3 - [12] phi() + [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [13] call utoa16w to:main::@5 main::@5: scope:[main] from main::@4 - [14] phi() + [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [15] call utoa16w to:main::@return main::@return: scope:[main] from main::@5 [16] return to:@return utoa16w: scope:[utoa16w] from main::@1 main::@2 main::@3 main::@4 main::@5 - [17] (byte*) utoa16w::dst#5 ← phi( main::@1/(byte*) 1024 main::@2/(byte*) 1024+(byte) $28 main::@3/(byte*) 1024+(byte) $28+(byte) $28 main::@4/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28 main::@5/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 ) + [17] (byte*) utoa16w::dst#5 ← phi( main::@1/(byte*) utoa16w::dst#0 main::@2/(byte*) utoa16w::dst#1 main::@3/(byte*) utoa16w::dst#2 main::@4/(byte*) utoa16w::dst#3 main::@5/(byte*) utoa16w::dst#4 ) [17] (word) utoa16w::value#5 ← phi( main::@1/(byte) 0 main::@2/(word) $4d2 main::@3/(word) $162e main::@4/(word) $270f main::@5/(word) $e608 ) [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 diff --git a/src/test/ref/hex2dec-ptrptr.log b/src/test/ref/hex2dec-ptrptr.log index d29567935..c721dd111 100644 --- a/src/test/ref/hex2dec-ptrptr.log +++ b/src/test/ref/hex2dec-ptrptr.log @@ -1,3 +1,7 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$2 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$6 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$10 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$14 ← & (byte*) utoa16w::dst Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 Adding pointer type conversion cast (byte*) cls::screen in (byte*) cls::screen ← (number) $400 Identified constant variable (byte*) cls::screen @@ -454,24 +458,21 @@ Constant (const word**) utoa16n::dst#3 = &utoa16w::dst#5 Constant (const byte) utoa16n::started#3 = 1 Constant (const byte) utoa16n::started#4 = 1 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#0 = main::screen#0 Constant (const byte) utoa16n::started#0 = utoa16w::started#0 Successful SSA optimization Pass2ConstantIdentification -Eliminating unused variable (byte) utoa16w::started#3 and assignment [38] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2 -Eliminating unused variable (byte) utoa16n::return#3 and assignment [42] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4 +Eliminating unused variable (byte) utoa16w::started#3 and assignment [39] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2 +Eliminating unused variable (byte) utoa16n::return#3 and assignment [43] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4 Successful SSA optimization PassNEliminateUnusedVars -Eliminating unused variable (byte) utoa16n::return#2 and assignment [37] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4 +Eliminating unused variable (byte) utoa16n::return#2 and assignment [38] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4 Successful SSA optimization PassNEliminateUnusedVars -Constant right-side identified [2] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28 -Constant right-side identified [15] (byte*~) cls::$0 ← (const byte*) cls::screen#0 + (word) $3e7 +Constant right-side identified [3] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28 +Constant right-side identified [16] (byte*~) cls::$0 ← (const byte*) cls::screen#0 + (word) $3e7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#1 = main::screen#0+$28 Constant (const byte*) cls::$0 = cls::screen#0+$3e7 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#1 = main::screen#1 -Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [18] cls::sc#1 ← ++ cls::sc#2 to ++ -Resolved ranged comparison value [19] if(cls::sc#1!=rangelast(cls::screen#0,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1 +Resolved ranged next value [19] cls::sc#1 ← ++ cls::sc#2 to ++ +Resolved ranged comparison value [20] if(cls::sc#1!=rangelast(cls::screen#0,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1 Adding number conversion cast (unumber) 1 in if((byte*) cls::sc#1!=(byte*)(const byte*) cls::$0+(number) 1) goto cls::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast (const byte*) cls::$0+(unumber)(number) 1 @@ -479,24 +480,18 @@ Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [3] (byte*) main::screen#2 ← (const byte*) main::screen#1 + (byte) $28 +Constant right-side identified [5] (byte*) main::screen#2 ← (const byte*) main::screen#1 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#2 = main::screen#1+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#2 = main::screen#2 -Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [4] (byte*) main::screen#3 ← (const byte*) main::screen#2 + (byte) $28 +Constant right-side identified [7] (byte*) main::screen#3 ← (const byte*) main::screen#2 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#3 = main::screen#2+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#3 = main::screen#3 -Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [5] (byte*) main::screen#4 ← (const byte*) main::screen#3 + (byte) $28 +Constant right-side identified [9] (byte*) main::screen#4 ← (const byte*) main::screen#3 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#4 = main::screen#3+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#4 = main::screen#4 -Successful SSA optimization Pass2ConstantIdentification Inlining constant with different constant siblings (const byte*) main::screen#0 Inlining constant with different constant siblings (const byte*) main::screen#1 Inlining constant with different constant siblings (const byte*) main::screen#2 @@ -508,11 +503,6 @@ Inlining constant with var siblings (const word) utoa16w::value#2 Inlining constant with var siblings (const word) utoa16w::value#3 Inlining constant with var siblings (const word) utoa16w::value#4 Inlining constant with var siblings (const byte) utoa16w::started#0 -Inlining constant with var siblings (const byte*) utoa16w::dst#0 -Inlining constant with var siblings (const byte*) utoa16w::dst#1 -Inlining constant with var siblings (const byte*) utoa16w::dst#2 -Inlining constant with var siblings (const byte*) utoa16w::dst#3 -Inlining constant with var siblings (const byte*) utoa16w::dst#4 Inlining constant with var siblings (const word**) utoa16n::dst#0 Inlining constant with var siblings (const word**) utoa16n::dst#1 Inlining constant with var siblings (const word**) utoa16n::dst#2 @@ -529,22 +519,17 @@ Constant inlined main::screen#2 = (byte*) 1024+(byte) $28+(byte) $28 Constant inlined utoa16w::value#0 = (byte) 0 Constant inlined main::screen#3 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 Constant inlined $0 = (const byte[]) DIGITS#0 +Constant inlined utoa16w::started#0 = (byte) 0 Constant inlined utoa16n::started#0 = (byte) 0 +Constant inlined cls::$0 = (const byte*) cls::screen#0+(word) $3e7 Constant inlined utoa16n::dst#1 = &(byte*) utoa16w::dst#5 Constant inlined utoa16n::dst#0 = &(byte*) utoa16w::dst#5 -Constant inlined utoa16w::dst#3 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -Constant inlined utoa16w::dst#4 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -Constant inlined utoa16w::dst#1 = (byte*) 1024+(byte) $28 -Constant inlined utoa16w::dst#2 = (byte*) 1024+(byte) $28+(byte) $28 +Constant inlined utoa16w::value#4 = (word) $e608 +Constant inlined utoa16w::value#3 = (word) $270f Constant inlined utoa16n::started#3 = (byte) 1 Constant inlined utoa16n::dst#3 = &(byte*) utoa16w::dst#5 Constant inlined utoa16n::started#4 = (byte) 1 -Constant inlined utoa16w::dst#0 = (byte*) 1024 Constant inlined utoa16n::dst#2 = &(byte*) utoa16w::dst#5 -Constant inlined utoa16w::started#0 = (byte) 0 -Constant inlined cls::$0 = (const byte*) cls::screen#0+(word) $3e7 -Constant inlined utoa16w::value#4 = (word) $e608 -Constant inlined utoa16w::value#3 = (word) $270f Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word**) utoa16n::dst#4 &(byte*) utoa16w::dst#5 Successful SSA optimization Pass2IdenticalPhiElimination @@ -556,29 +541,29 @@ Adding NOP phi() at start of @4 Adding NOP phi() at start of @5 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@1 -Adding NOP phi() at start of main::@2 -Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of main::@4 -Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@6 Adding NOP phi() at start of utoa16n::@3 Adding NOP phi() at start of utoa16n::@2 Adding NOP phi() at start of cls CALL GRAPH Calls in [] to main:3 -Calls in [main] to cls:7 utoa16w:9 utoa16w:11 utoa16w:13 utoa16w:15 utoa16w:17 -Calls in [utoa16w] to utoa16n:24 utoa16n:32 utoa16n:40 utoa16n:44 +Calls in [main] to cls:7 utoa16w:10 utoa16w:13 utoa16w:16 utoa16w:19 utoa16w:22 +Calls in [utoa16w] to utoa16n:29 utoa16n:37 utoa16n:45 utoa16n:49 Created 6 initial phi equivalence classes -Coalesced [23] utoa16n::nybble#8 ← utoa16n::nybble#0 -Coalesced [30] utoa16n::nybble#9 ← utoa16n::nybble#1 -Coalesced [31] utoa16n::started#9 ← utoa16n::started#1 -Coalesced [38] utoa16n::nybble#10 ← utoa16n::nybble#2 -Coalesced [39] utoa16n::started#10 ← utoa16n::started#2 -Coalesced [43] utoa16n::nybble#11 ← utoa16n::nybble#3 -Coalesced [56] utoa16n::return#10 ← utoa16n::started#7 -Coalesced [63] cls::sc#3 ← cls::sc#1 +Coalesced [9] utoa16w::dst#10 ← utoa16w::dst#0 +Coalesced [12] utoa16w::dst#11 ← utoa16w::dst#1 +Coalesced [15] utoa16w::dst#12 ← utoa16w::dst#2 +Coalesced [18] utoa16w::dst#13 ← utoa16w::dst#3 +Coalesced [21] utoa16w::dst#14 ← utoa16w::dst#4 +Coalesced [28] utoa16n::nybble#8 ← utoa16n::nybble#0 +Coalesced [35] utoa16n::nybble#9 ← utoa16n::nybble#1 +Coalesced [36] utoa16n::started#9 ← utoa16n::started#1 +Coalesced [43] utoa16n::nybble#10 ← utoa16n::nybble#2 +Coalesced [44] utoa16n::started#10 ← utoa16n::started#2 +Coalesced [48] utoa16n::nybble#11 ← utoa16n::nybble#3 +Coalesced [61] utoa16n::return#10 ← utoa16n::started#7 +Coalesced [68] cls::sc#3 ← cls::sc#1 Coalesced down to 5 phi equivalence classes Culled Empty Block (label) @2 Culled Empty Block (label) @5 @@ -593,11 +578,6 @@ Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@1 -Adding NOP phi() at start of main::@2 -Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of main::@4 -Adding NOP phi() at start of main::@5 Adding NOP phi() at start of utoa16n::@3 Adding NOP phi() at start of cls @@ -616,30 +596,30 @@ main: scope:[main] from @1 [5] call cls to:main::@1 main::@1: scope:[main] from main - [6] phi() + [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 [7] call utoa16w to:main::@2 main::@2: scope:[main] from main::@1 - [8] phi() + [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [9] call utoa16w to:main::@3 main::@3: scope:[main] from main::@2 - [10] phi() + [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [11] call utoa16w to:main::@4 main::@4: scope:[main] from main::@3 - [12] phi() + [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [13] call utoa16w to:main::@5 main::@5: scope:[main] from main::@4 - [14] phi() + [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [15] call utoa16w to:main::@return main::@return: scope:[main] from main::@5 [16] return to:@return utoa16w: scope:[utoa16w] from main::@1 main::@2 main::@3 main::@4 main::@5 - [17] (byte*) utoa16w::dst#5 ← phi( main::@1/(byte*) 1024 main::@2/(byte*) 1024+(byte) $28 main::@3/(byte*) 1024+(byte) $28+(byte) $28 main::@4/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28 main::@5/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 ) + [17] (byte*) utoa16w::dst#5 ← phi( main::@1/(byte*) utoa16w::dst#0 main::@2/(byte*) utoa16w::dst#1 main::@3/(byte*) utoa16w::dst#2 main::@4/(byte*) utoa16w::dst#3 main::@5/(byte*) utoa16w::dst#4 ) [17] (word) utoa16w::value#5 ← phi( main::@1/(byte) 0 main::@2/(word) $4d2 main::@3/(word) $162e main::@4/(word) $270f main::@5/(word) $e608 ) [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 @@ -736,7 +716,12 @@ VARIABLE REGISTER WEIGHTS (byte~) utoa16w::$4 4.0 (byte~) utoa16w::$8 4.0 (byte*) utoa16w::dst -(byte*) utoa16w::dst#5 0.07407407407407407 +(byte*) utoa16w::dst#0 4.0 +(byte*) utoa16w::dst#1 4.0 +(byte*) utoa16w::dst#2 4.0 +(byte*) utoa16w::dst#3 4.0 +(byte*) utoa16w::dst#4 4.0 +(byte*) utoa16w::dst#5 0.4444444444444444 (byte) utoa16w::started (byte) utoa16w::started#1 1.3333333333333333 (byte) utoa16w::started#2 1.3333333333333333 @@ -745,7 +730,7 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ utoa16w::value#5 ] -[ utoa16w::dst#5 ] +[ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] [ cls::sc#2 cls::sc#1 ] @@ -759,7 +744,7 @@ Added variable utoa16w::$8 to zero page equivalence class [ utoa16w::$8 ] Added variable utoa16w::$12 to zero page equivalence class [ utoa16w::$12 ] Complete equivalence classes [ utoa16w::value#5 ] -[ utoa16w::dst#5 ] +[ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] [ cls::sc#2 cls::sc#1 ] @@ -772,7 +757,7 @@ Complete equivalence classes [ utoa16w::$8 ] [ utoa16w::$12 ] Allocated zp ZP_WORD:2 [ utoa16w::value#5 ] -Allocated zp ZP_WORD:4 [ utoa16w::dst#5 ] +Allocated zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] Allocated zp ZP_BYTE:6 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] Allocated zp ZP_BYTE:7 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Allocated zp ZP_WORD:8 [ cls::sc#2 cls::sc#1 ] @@ -815,95 +800,90 @@ main: { //SEG12 [46] phi from main to cls [phi:main->cls] cls_from_main: jsr cls - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG13 main::@1 b1: - //SEG15 [7] call utoa16w - //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] - utoa16w_from_b1: - //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@1->utoa16w#0] -- pbuz1=pbuc1 + //SEG14 [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 + //SEG15 [7] call utoa16w + //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] + utoa16w_from_b1: + //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@1->utoa16w#0] -- register_copy //SEG18 [17] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@1->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value lda #0 sta utoa16w.value+1 jsr utoa16w - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - b2_from_b1: jmp b2 - //SEG20 main::@2 + //SEG19 main::@2 b2: - //SEG21 [9] call utoa16w - //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - utoa16w_from_b2: - //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG20 [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 + //SEG21 [9] call utoa16w + //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + utoa16w_from_b2: + //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@2->utoa16w#0] -- register_copy //SEG24 [17] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@2->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - b3_from_b2: jmp b3 - //SEG26 main::@3 + //SEG25 main::@3 b3: - //SEG27 [11] call utoa16w - //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] - utoa16w_from_b3: - //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@3->utoa16w#0] -- pbuz1=pbuc1 + //SEG26 [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 + //SEG27 [11] call utoa16w + //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] + utoa16w_from_b3: + //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@3->utoa16w#0] -- register_copy //SEG30 [17] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@3->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w - //SEG31 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - b4_from_b3: jmp b4 - //SEG32 main::@4 + //SEG31 main::@4 b4: - //SEG33 [13] call utoa16w - //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - utoa16w_from_b4: - //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG32 [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 + //SEG33 [13] call utoa16w + //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + utoa16w_from_b4: + //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@4->utoa16w#0] -- register_copy //SEG36 [17] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w - //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - b5_from_b4: jmp b5 - //SEG38 main::@5 + //SEG37 main::@5 b5: - //SEG39 [15] call utoa16w - //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - utoa16w_from_b5: - //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG38 [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 + //SEG39 [15] call utoa16w + //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + utoa16w_from_b5: + //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@5->utoa16w#0] -- register_copy //SEG42 [17] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value @@ -924,10 +904,10 @@ utoa16w: { .label _4 = $d .label _8 = $10 .label _12 = $11 + .label dst = 4 .label started = $c .label started_2 = $f .label value = 2 - .label dst = 4 //SEG46 [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuz1=_hi_vwuz2 lda value+1 sta _0 @@ -1127,6 +1107,11 @@ cls: { DIGITS: .text "0123456789abcdef@" REGISTER UPLIFT POTENTIAL REGISTERS +Statement [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 [ utoa16w::dst#0 ] ( main:2 [ utoa16w::dst#0 ] ) always clobbers reg byte a +Statement [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [ utoa16w::dst#1 ] ( main:2 [ utoa16w::dst#1 ] ) always clobbers reg byte a +Statement [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst#2 ] ( main:2 [ utoa16w::dst#2 ] ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst#3 ] ( main:2 [ utoa16w::dst#3 ] ) always clobbers reg byte a +Statement [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst#4 ] ( main:2 [ utoa16w::dst#4 ] ) always clobbers reg byte a Statement [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a Statement [23] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a @@ -1141,6 +1126,11 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ ut Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a +Statement [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 [ utoa16w::dst#0 ] ( main:2 [ utoa16w::dst#0 ] ) always clobbers reg byte a +Statement [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [ utoa16w::dst#1 ] ( main:2 [ utoa16w::dst#1 ] ) always clobbers reg byte a +Statement [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst#2 ] ( main:2 [ utoa16w::dst#2 ] ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst#3 ] ( main:2 [ utoa16w::dst#3 ] ) always clobbers reg byte a +Statement [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst#4 ] ( main:2 [ utoa16w::dst#4 ] ) always clobbers reg byte a Statement [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a Statement [23] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:7 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:9 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:11 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:13 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:15 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a @@ -1152,7 +1142,7 @@ Statement [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (by Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ utoa16w::value#5 ] : zp ZP_WORD:2 , -Potential registers zp ZP_WORD:4 [ utoa16w::dst#5 ] : zp ZP_WORD:4 , +Potential registers zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:7 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] : zp ZP_BYTE:7 , reg byte x , Potential registers zp ZP_WORD:8 [ cls::sc#2 cls::sc#1 ] : zp ZP_WORD:8 , @@ -1166,17 +1156,17 @@ Potential registers zp ZP_BYTE:16 [ utoa16w::$8 ] : zp ZP_BYTE:16 , reg byte a , Potential registers zp ZP_BYTE:17 [ utoa16w::$12 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES +Uplift Scope [utoa16w] 20.44: zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] 4: zp ZP_BYTE:10 [ utoa16w::$0 ] 4: zp ZP_BYTE:13 [ utoa16w::$4 ] 4: zp ZP_BYTE:16 [ utoa16w::$8 ] 4: zp ZP_BYTE:17 [ utoa16w::$12 ] 1.33: zp ZP_BYTE:12 [ utoa16w::started#1 ] 1.33: zp ZP_BYTE:15 [ utoa16w::started#2 ] 0.5: zp ZP_WORD:2 [ utoa16w::value#5 ] Uplift Scope [utoa16n] 14.4: zp ZP_BYTE:6 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 11.14: zp ZP_BYTE:7 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 4: zp ZP_BYTE:11 [ utoa16n::return#0 ] 4: zp ZP_BYTE:14 [ utoa16n::return#1 ] Uplift Scope [cls] 33: zp ZP_WORD:8 [ cls::sc#2 cls::sc#1 ] -Uplift Scope [utoa16w] 4: zp ZP_BYTE:10 [ utoa16w::$0 ] 4: zp ZP_BYTE:13 [ utoa16w::$4 ] 4: zp ZP_BYTE:16 [ utoa16w::$8 ] 4: zp ZP_BYTE:17 [ utoa16w::$12 ] 1.33: zp ZP_BYTE:12 [ utoa16w::started#1 ] 1.33: zp ZP_BYTE:15 [ utoa16w::started#2 ] 0.5: zp ZP_WORD:2 [ utoa16w::value#5 ] 0.07: zp ZP_WORD:4 [ utoa16w::dst#5 ] Uplift Scope [main] Uplift Scope [] -Uplifting [utoa16n] best 929 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] -Limited combination testing to 100 combinations of 128 possible. -Uplifting [cls] best 929 combination zp ZP_WORD:8 [ cls::sc#2 cls::sc#1 ] -Uplifting [utoa16w] best 905 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$4 ] reg byte a [ utoa16w::$8 ] reg byte a [ utoa16w::$12 ] zp ZP_BYTE:12 [ utoa16w::started#1 ] zp ZP_BYTE:15 [ utoa16w::started#2 ] zp ZP_WORD:2 [ utoa16w::value#5 ] zp ZP_WORD:4 [ utoa16w::dst#5 ] +Uplifting [utoa16w] best 957 combination zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$4 ] reg byte a [ utoa16w::$8 ] reg byte a [ utoa16w::$12 ] zp ZP_BYTE:12 [ utoa16w::started#1 ] zp ZP_BYTE:15 [ utoa16w::started#2 ] zp ZP_WORD:2 [ utoa16w::value#5 ] Limited combination testing to 100 combinations of 2304 possible. +Uplifting [utoa16n] best 905 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] +Limited combination testing to 100 combinations of 128 possible. +Uplifting [cls] best 905 combination zp ZP_WORD:8 [ cls::sc#2 cls::sc#1 ] Uplifting [main] best 905 combination Uplifting [] best 905 combination Attempting to uplift remaining variables inzp ZP_BYTE:12 [ utoa16w::started#1 ] @@ -1215,95 +1205,90 @@ main: { //SEG12 [46] phi from main to cls [phi:main->cls] cls_from_main: jsr cls - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG13 main::@1 b1: - //SEG15 [7] call utoa16w - //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] - utoa16w_from_b1: - //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@1->utoa16w#0] -- pbuz1=pbuc1 + //SEG14 [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 + //SEG15 [7] call utoa16w + //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] + utoa16w_from_b1: + //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@1->utoa16w#0] -- register_copy //SEG18 [17] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@1->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value lda #0 sta utoa16w.value+1 jsr utoa16w - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - b2_from_b1: jmp b2 - //SEG20 main::@2 + //SEG19 main::@2 b2: - //SEG21 [9] call utoa16w - //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - utoa16w_from_b2: - //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG20 [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 + //SEG21 [9] call utoa16w + //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + utoa16w_from_b2: + //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@2->utoa16w#0] -- register_copy //SEG24 [17] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@2->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - b3_from_b2: jmp b3 - //SEG26 main::@3 + //SEG25 main::@3 b3: - //SEG27 [11] call utoa16w - //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] - utoa16w_from_b3: - //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@3->utoa16w#0] -- pbuz1=pbuc1 + //SEG26 [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 + //SEG27 [11] call utoa16w + //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] + utoa16w_from_b3: + //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@3->utoa16w#0] -- register_copy //SEG30 [17] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@3->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w - //SEG31 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - b4_from_b3: jmp b4 - //SEG32 main::@4 + //SEG31 main::@4 b4: - //SEG33 [13] call utoa16w - //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - utoa16w_from_b4: - //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG32 [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 + //SEG33 [13] call utoa16w + //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + utoa16w_from_b4: + //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@4->utoa16w#0] -- register_copy //SEG36 [17] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w - //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - b5_from_b4: jmp b5 - //SEG38 main::@5 + //SEG37 main::@5 b5: - //SEG39 [15] call utoa16w - //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - utoa16w_from_b5: - //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG38 [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 + //SEG39 [15] call utoa16w + //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + utoa16w_from_b5: + //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@5->utoa16w#0] -- register_copy //SEG42 [17] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value @@ -1320,8 +1305,8 @@ main: { // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(2) value, byte* zeropage(4) dst) utoa16w: { - .label value = 2 .label dst = 4 + .label value = 2 //SEG46 [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 //SEG47 [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 @@ -1517,16 +1502,6 @@ Removing instruction b1_from_bbegin: Removing instruction b1: Removing instruction main_from_b1: Removing instruction bend_from_b1: -Removing instruction b1_from_main: -Removing instruction utoa16w_from_b1: -Removing instruction b2_from_b1: -Removing instruction utoa16w_from_b2: -Removing instruction b3_from_b2: -Removing instruction utoa16w_from_b3: -Removing instruction b4_from_b3: -Removing instruction utoa16w_from_b4: -Removing instruction b5_from_b4: -Removing instruction utoa16w_from_b5: Removing instruction b3_from_utoa16n: Removing instruction b3: Removing instruction b1_from_b3: @@ -1535,10 +1510,15 @@ Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: Removing instruction cls_from_main: Removing instruction b1: +Removing instruction utoa16w_from_b1: Removing instruction b2: +Removing instruction utoa16w_from_b2: Removing instruction b3: +Removing instruction utoa16w_from_b3: Removing instruction b4: +Removing instruction utoa16w_from_b4: Removing instruction b5: +Removing instruction utoa16w_from_b5: Removing instruction breturn: Removing instruction utoa16n_from_utoa16w: Removing instruction b1: @@ -1616,7 +1596,12 @@ FINAL SYMBOL TABLE (label) utoa16w::@4 (label) utoa16w::@return (byte*) utoa16w::dst -(byte*) utoa16w::dst#5 dst zp ZP_WORD:4 0.07407407407407407 +(byte*) utoa16w::dst#0 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#1 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#2 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#3 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#4 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#5 dst zp ZP_WORD:4 0.4444444444444444 (byte) utoa16w::started (byte) utoa16w::started#1 reg byte x 1.3333333333333333 (byte) utoa16w::started#2 reg byte x 1.3333333333333333 @@ -1624,7 +1609,7 @@ FINAL SYMBOL TABLE (word) utoa16w::value#5 value zp ZP_WORD:2 0.5 zp ZP_WORD:2 [ utoa16w::value#5 ] -zp ZP_WORD:4 [ utoa16w::dst#5 ] +zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] zp ZP_WORD:6 [ cls::sc#2 cls::sc#1 ] @@ -1660,74 +1645,74 @@ main: { //SEG11 [5] call cls //SEG12 [46] phi from main to cls [phi:main->cls] jsr cls - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG14 main::@1 - //SEG15 [7] call utoa16w - //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] - //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@1->utoa16w#0] -- pbuz1=pbuc1 + //SEG13 main::@1 + //SEG14 [6] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 + //SEG15 [7] call utoa16w + //SEG16 [17] phi from main::@1 to utoa16w [phi:main::@1->utoa16w] + //SEG17 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@1->utoa16w#0] -- register_copy //SEG18 [17] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@1->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value sta utoa16w.value+1 jsr utoa16w - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 main::@2 - //SEG21 [9] call utoa16w - //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG19 main::@2 + //SEG20 [8] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 + //SEG21 [9] call utoa16w + //SEG22 [17] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + //SEG23 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@2->utoa16w#0] -- register_copy //SEG24 [17] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@2->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG26 main::@3 - //SEG27 [11] call utoa16w - //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] - //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@3->utoa16w#0] -- pbuz1=pbuc1 + //SEG25 main::@3 + //SEG26 [10] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 + //SEG27 [11] call utoa16w + //SEG28 [17] phi from main::@3 to utoa16w [phi:main::@3->utoa16w] + //SEG29 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@3->utoa16w#0] -- register_copy //SEG30 [17] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@3->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w - //SEG31 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG32 main::@4 - //SEG33 [13] call utoa16w - //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG31 main::@4 + //SEG32 [12] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 + //SEG33 [13] call utoa16w + //SEG34 [17] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + //SEG35 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@4->utoa16w#0] -- register_copy //SEG36 [17] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w - //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG38 main::@5 - //SEG39 [15] call utoa16w - //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG37 main::@5 + //SEG38 [14] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 + //SEG39 [15] call utoa16w + //SEG40 [17] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + //SEG41 [17] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@5->utoa16w#0] -- register_copy //SEG42 [17] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value @@ -1742,8 +1727,8 @@ main: { // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(2) value, byte* zeropage(4) dst) utoa16w: { - .label value = 2 .label dst = 4 + .label value = 2 //SEG46 [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 //SEG47 [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 diff --git a/src/test/ref/hex2dec-ptrptr.sym b/src/test/ref/hex2dec-ptrptr.sym index 124ca6044..55eb6c55c 100644 --- a/src/test/ref/hex2dec-ptrptr.sym +++ b/src/test/ref/hex2dec-ptrptr.sym @@ -50,7 +50,12 @@ (label) utoa16w::@4 (label) utoa16w::@return (byte*) utoa16w::dst -(byte*) utoa16w::dst#5 dst zp ZP_WORD:4 0.07407407407407407 +(byte*) utoa16w::dst#0 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#1 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#2 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#3 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#4 dst zp ZP_WORD:4 4.0 +(byte*) utoa16w::dst#5 dst zp ZP_WORD:4 0.4444444444444444 (byte) utoa16w::started (byte) utoa16w::started#1 reg byte x 1.3333333333333333 (byte) utoa16w::started#2 reg byte x 1.3333333333333333 @@ -58,7 +63,7 @@ (word) utoa16w::value#5 value zp ZP_WORD:2 0.5 zp ZP_WORD:2 [ utoa16w::value#5 ] -zp ZP_WORD:4 [ utoa16w::dst#5 ] +zp ZP_WORD:4 [ utoa16w::dst#5 utoa16w::dst#0 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] zp ZP_WORD:6 [ cls::sc#2 cls::sc#1 ] diff --git a/src/test/ref/hex2dec.asm b/src/test/ref/hex2dec.asm index 60c59a317..90e96ca56 100644 --- a/src/test/ref/hex2dec.asm +++ b/src/test/ref/hex2dec.asm @@ -176,8 +176,8 @@ utoa10w: { // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(8) value, byte* zeropage($a) dst) utoa16w: { - .label value = 8 .label dst = $a + .label value = 8 lda value+1 lsr lsr diff --git a/src/test/ref/hex2dec.cfg b/src/test/ref/hex2dec.cfg index 7ec41e914..a645295f4 100644 --- a/src/test/ref/hex2dec.cfg +++ b/src/test/ref/hex2dec.cfg @@ -20,145 +20,150 @@ main::@1: scope:[main] from main main::@1 main::@3 main::@2: scope:[main] from main::@1 [10] *((const byte*) bordercol#0) ← (byte) 1 [11] (byte) main::time_start#0 ← *((const byte*) raster#0) - [12] call utoa16w + [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 + [13] call utoa16w to:main::@4 main::@4: scope:[main] from main::@2 - [13] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [14] call utoa16w + [14] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 + [16] call utoa16w to:main::@5 main::@5: scope:[main] from main::@4 - [15] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [16] call utoa16w + [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 + [19] call utoa16w to:main::@6 main::@6: scope:[main] from main::@5 - [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [18] call utoa16w + [20] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 + [22] call utoa16w to:main::@7 main::@7: scope:[main] from main::@6 - [19] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [20] call utoa16w + [23] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 + [25] call utoa16w to:main::@8 main::@8: scope:[main] from main::@7 - [21] (byte) main::time_end#0 ← *((const byte*) raster#0) - [22] *((const byte*) bordercol#0) ← (byte) 0 - [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 - [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 - [25] call utoa10w + [26] (byte) main::time_end#0 ← *((const byte*) raster#0) + [27] *((const byte*) bordercol#0) ← (byte) 0 + [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 + [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 + [30] call utoa10w to:main::@3 main::@3: scope:[main] from main::@3 main::@8 - [26] (byte) main::i#2 ← phi( main::@8/(byte) 0 main::@3/(byte) main::i#1 ) - [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) - [28] (byte) main::i#1 ← ++ (byte) main::i#2 - [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 + [31] (byte) main::i#2 ← phi( main::@8/(byte) 0 main::@3/(byte) main::i#1 ) + [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) + [33] (byte) main::i#1 ← ++ (byte) main::i#2 + [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 to:main::@1 utoa10w: scope:[utoa10w] from main::@8 - [30] phi() + [35] phi() to:utoa10w::@1 utoa10w::@1: scope:[utoa10w] from utoa10w utoa10w::@2 utoa10w::@6 - [31] (byte*) utoa10w::dst#11 ← phi( utoa10w/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 utoa10w::@6/(byte*) utoa10w::dst#4 ) - [31] (byte) utoa10w::bStarted#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) 1 ) - [31] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::digit#7 utoa10w::@2/(byte) utoa10w::digit#1 ) - [31] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 ) - [31] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::i#1 ) - [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 - [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 + [36] (byte*) utoa10w::dst#11 ← phi( utoa10w/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 utoa10w::@6/(byte*) utoa10w::dst#4 ) + [36] (byte) utoa10w::bStarted#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) 1 ) + [36] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::digit#7 utoa10w::@2/(byte) utoa10w::digit#1 ) + [36] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 ) + [36] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::i#1 ) + [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 + [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 to:utoa10w::@3 utoa10w::@3: scope:[utoa10w] from utoa10w::@1 - [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 - [35] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 + [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 + [40] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 to:utoa10w::@4 utoa10w::@4: scope:[utoa10w] from utoa10w::@3 - [36] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 + [41] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 to:utoa10w::@5 utoa10w::@5: scope:[utoa10w] from utoa10w::@4 - [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) - [38] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 + [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) + [43] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 to:utoa10w::@7 utoa10w::@7: scope:[utoa10w] from utoa10w::@4 utoa10w::@5 - [39] (byte*) utoa10w::dst#7 ← phi( utoa10w::@4/(byte*) utoa10w::dst#11 utoa10w::@5/(byte*) utoa10w::dst#1 ) + [44] (byte*) utoa10w::dst#7 ← phi( utoa10w::@4/(byte*) utoa10w::dst#11 utoa10w::@5/(byte*) utoa10w::dst#1 ) to:utoa10w::@6 utoa10w::@6: scope:[utoa10w] from utoa10w::@3 utoa10w::@7 - [40] (byte) utoa10w::digit#7 ← phi( utoa10w::@7/(byte) 0 utoa10w::@3/(byte) utoa10w::digit#3 ) - [40] (byte*) utoa10w::dst#4 ← phi( utoa10w::@7/(byte*) utoa10w::dst#7 utoa10w::@3/(byte*) utoa10w::dst#11 ) - [41] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 - [42] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 + [45] (byte) utoa10w::digit#7 ← phi( utoa10w::@7/(byte) 0 utoa10w::@3/(byte) utoa10w::digit#3 ) + [45] (byte*) utoa10w::dst#4 ← phi( utoa10w::@7/(byte*) utoa10w::dst#7 utoa10w::@3/(byte*) utoa10w::dst#11 ) + [46] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 + [47] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 to:utoa10w::@8 utoa10w::@8: scope:[utoa10w] from utoa10w::@6 - [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 - [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) - [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 - [46] *((byte*) utoa10w::dst#2) ← (byte) 0 + [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 + [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) + [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 + [51] *((byte*) utoa10w::dst#2) ← (byte) 0 to:utoa10w::@return utoa10w::@return: scope:[utoa10w] from utoa10w::@8 - [47] return + [52] return to:@return utoa10w::@2: scope:[utoa10w] from utoa10w::@1 - [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) - [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 - [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) + [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) + [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 + [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) to:utoa10w::@1 utoa16w: scope:[utoa16w] from main::@2 main::@4 main::@5 main::@6 main::@7 - [51] (byte*) utoa16w::dst#5 ← phi( main::@4/(byte*) 1024+(byte) $28 main::@5/(byte*) 1024+(byte) $28+(byte) $28 main::@6/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28 main::@7/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 main::@2/(byte*) 1024 ) - [51] (word) utoa16w::value#5 ← phi( main::@4/(word) $4d2 main::@5/(word) $162e main::@6/(word) $270f main::@7/(word) $e608 main::@2/(byte) 0 ) - [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 - [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 - [54] call utoa16n - [55] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 + [56] (byte*) utoa16w::dst#5 ← phi( main::@4/(byte*) utoa16w::dst#1 main::@5/(byte*) utoa16w::dst#2 main::@6/(byte*) utoa16w::dst#3 main::@7/(byte*) utoa16w::dst#4 main::@2/(byte*) utoa16w::dst#0 ) + [56] (word) utoa16w::value#5 ← phi( main::@4/(word) $4d2 main::@5/(word) $162e main::@6/(word) $270f main::@7/(word) $e608 main::@2/(byte) 0 ) + [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 + [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 + [59] call utoa16n + [60] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 to:utoa16w::@1 utoa16w::@1: scope:[utoa16w] from utoa16w - [56] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 - [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 - [58] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f - [59] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 - [60] call utoa16n - [61] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 + [61] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 + [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 + [63] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f + [64] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 + [65] call utoa16n + [66] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 to:utoa16w::@2 utoa16w::@2: scope:[utoa16w] from utoa16w::@1 - [62] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 - [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 - [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 - [65] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 - [66] call utoa16n + [67] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 + [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 + [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 + [70] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 + [71] call utoa16n to:utoa16w::@3 utoa16w::@3: scope:[utoa16w] from utoa16w::@2 - [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 - [68] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f - [69] call utoa16n + [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 + [73] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f + [74] call utoa16n to:utoa16w::@4 utoa16w::@4: scope:[utoa16w] from utoa16w::@3 - [70] *((byte*) utoa16w::dst#5) ← (byte) 0 + [75] *((byte*) utoa16w::dst#5) ← (byte) 0 to:utoa16w::@return utoa16w::@return: scope:[utoa16w] from utoa16w::@4 - [71] return + [76] return to:@return utoa16n: scope:[utoa16n] from utoa16w utoa16w::@1 utoa16w::@2 utoa16w::@3 - [72] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) - [72] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) - [73] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 + [77] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) + [77] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) + [78] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 to:utoa16n::@1 utoa16n::@3: scope:[utoa16n] from utoa16n - [74] phi() + [79] phi() to:utoa16n::@1 utoa16n::@1: scope:[utoa16n] from utoa16n utoa16n::@3 - [75] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) - [76] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return + [80] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) + [81] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return to:utoa16n::@2 utoa16n::@2: scope:[utoa16n] from utoa16n::@1 - [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) - [78] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) + [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) + [83] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) to:utoa16n::@return utoa16n::@return: scope:[utoa16n] from utoa16n::@1 utoa16n::@2 - [79] return + [84] return to:@return cls: scope:[cls] from main - [80] phi() + [85] phi() to:cls::@1 cls::@1: scope:[cls] from cls cls::@1 - [81] (byte*) cls::sc#2 ← phi( cls/(const byte*) cls::screen#0 cls::@1/(byte*) cls::sc#1 ) - [82] *((byte*) cls::sc#2) ← (byte) ' ' - [83] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 - [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 + [86] (byte*) cls::sc#2 ← phi( cls/(const byte*) cls::screen#0 cls::@1/(byte*) cls::sc#1 ) + [87] *((byte*) cls::sc#2) ← (byte) ' ' + [88] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 + [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 to:cls::@return cls::@return: scope:[cls] from cls::@1 - [85] return + [90] return to:@return diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log index 20bd720a1..498c07524 100644 --- a/src/test/ref/hex2dec.log +++ b/src/test/ref/hex2dec.log @@ -1,3 +1,7 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$2 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$6 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$10 ← & (byte*) utoa16w::dst +Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$14 ← & (byte*) utoa16w::dst Fixing pointer array-indexing *((word[]) UTOA10_SUB + (byte) utoa10w::i) Fixing pointer array-indexing *((word[]) UTOA10_SUB + (byte) utoa10w::i) Adding pointer type conversion cast (byte*) control in (byte*) control ← (number) $d011 @@ -880,17 +884,16 @@ Constant (const word**) utoa16n::dst#3 = &utoa16w::dst#5 Constant (const byte) utoa16n::started#3 = 1 Constant (const byte) utoa16n::started#4 = 1 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#0 = main::screen#0 Constant (const byte) utoa16n::started#0 = utoa16w::started#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [5] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [94] utoa10w::i#1 ← ++ utoa10w::i#2 to ++ Resolved ranged comparison value [96] if(utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 to (number) 8 -Eliminating unused variable (byte) utoa16w::started#3 and assignment [81] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2 -Eliminating unused variable (byte) utoa16n::return#3 and assignment [85] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4 +Eliminating unused variable (byte) utoa16w::started#3 and assignment [82] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2 +Eliminating unused variable (byte) utoa16n::return#3 and assignment [86] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4 Successful SSA optimization PassNEliminateUnusedVars -Eliminating unused variable (byte) utoa16n::return#2 and assignment [80] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4 +Eliminating unused variable (byte) utoa16n::return#2 and assignment [81] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -900,16 +903,14 @@ Simplifying constant integer cast 8 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [10] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28 -Constant right-side identified [37] (byte*~) cls::$0 ← (const byte*) cls::screen#0 + (word) $3e7 +Constant right-side identified [11] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28 +Constant right-side identified [38] (byte*~) cls::$0 ← (const byte*) cls::screen#0 + (word) $3e7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#1 = main::screen#0+$28 Constant (const byte*) cls::$0 = cls::screen#0+$3e7 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#1 = main::screen#1 -Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [40] cls::sc#1 ← ++ cls::sc#2 to ++ -Resolved ranged comparison value [41] if(cls::sc#1!=rangelast(cls::screen#0,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1 +Resolved ranged next value [41] cls::sc#1 ← ++ cls::sc#2 to ++ +Resolved ranged comparison value [42] if(cls::sc#1!=rangelast(cls::screen#0,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1 Adding number conversion cast (unumber) 1 in if((byte*) cls::sc#1!=(byte*)(const byte*) cls::$0+(number) 1) goto cls::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast (const byte*) cls::$0+(unumber)(number) 1 @@ -917,36 +918,30 @@ Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [12] (byte*) main::screen#2 ← (const byte*) main::screen#1 + (byte) $28 +Constant right-side identified [14] (byte*) main::screen#2 ← (const byte*) main::screen#1 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#2 = main::screen#1+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#2 = main::screen#2 -Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [14] (byte*) main::screen#3 ← (const byte*) main::screen#2 + (byte) $28 +Constant right-side identified [17] (byte*) main::screen#3 ← (const byte*) main::screen#2 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#3 = main::screen#2+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#3 = main::screen#3 -Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [16] (byte*) main::screen#11 ← (const byte*) main::screen#3 + (byte) $28 +Constant right-side identified [20] (byte*) main::screen#11 ← (const byte*) main::screen#3 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#11 = main::screen#3+$28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) utoa16w::dst#4 = main::screen#11 -Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [21] (byte*) utoa10w::dst#0 ← (const byte*) main::screen#11 + (byte) $50 -Constant right-side identified [24] (byte*~) main::$14 ← (const byte*) main::screen#11 + (byte) $50 +Constant right-side identified [26] (byte*) utoa10w::dst#0 ← (const byte*) main::screen#11 + (byte) $50 +Constant right-side identified [29] (byte*~) main::$14 ← (const byte*) main::screen#11 + (byte) $50 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) utoa10w::dst#0 = main::screen#11+$50 Constant (const byte*) main::$14 = main::screen#11+$50 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [23] (byte*~) main::$15 ← (const byte*) main::$14 + (byte) 3 +Constant right-side identified [28] (byte*~) main::$15 ← (const byte*) main::$14 + (byte) 3 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::$15 = main::$14+3 Successful SSA optimization Pass2ConstantIdentification -Rewriting multiplication to use shift [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [35] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [40] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with different constant siblings (const byte*) main::screen#0 Inlining constant with var siblings (const byte) main::i#0 @@ -966,11 +961,6 @@ Inlining constant with var siblings (const word) utoa16w::value#2 Inlining constant with var siblings (const word) utoa16w::value#3 Inlining constant with var siblings (const word) utoa16w::value#4 Inlining constant with var siblings (const byte) utoa16w::started#0 -Inlining constant with var siblings (const byte*) utoa16w::dst#0 -Inlining constant with var siblings (const byte*) utoa16w::dst#1 -Inlining constant with var siblings (const byte*) utoa16w::dst#2 -Inlining constant with var siblings (const byte*) utoa16w::dst#3 -Inlining constant with var siblings (const byte*) utoa16w::dst#4 Inlining constant with var siblings (const word**) utoa16n::dst#0 Inlining constant with var siblings (const word**) utoa16n::dst#1 Inlining constant with var siblings (const word**) utoa16n::dst#2 @@ -996,14 +986,9 @@ Constant inlined main::$17 = (const byte[]) main::msg#0 Constant inlined main::i#0 = (byte) 0 Constant inlined utoa16n::dst#1 = &(byte*) utoa16w::dst#5 Constant inlined utoa16n::dst#0 = &(byte*) utoa16w::dst#5 -Constant inlined utoa16w::dst#3 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -Constant inlined utoa16w::dst#4 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -Constant inlined utoa16w::dst#1 = (byte*) 1024+(byte) $28 -Constant inlined utoa16w::dst#2 = (byte*) 1024+(byte) $28+(byte) $28 Constant inlined utoa16n::started#3 = (byte) 1 Constant inlined utoa16n::dst#3 = &(byte*) utoa16w::dst#5 Constant inlined utoa16n::started#4 = (byte) 1 -Constant inlined utoa16w::dst#0 = (byte*) 1024 Constant inlined utoa16n::dst#2 = &(byte*) utoa16w::dst#5 Constant inlined utoa16w::started#0 = (byte) 0 Constant inlined cls::$0 = (const byte*) cls::screen#0+(word) $3e7 @@ -1037,30 +1022,35 @@ Adding NOP phi() at start of utoa16n::@2 Adding NOP phi() at start of cls CALL GRAPH Calls in [] to main:3 -Calls in [main] to cls:7 utoa16w:16 utoa16w:18 utoa16w:20 utoa16w:22 utoa16w:24 utoa10w:29 -Calls in [utoa16w] to utoa16n:71 utoa16n:79 utoa16n:87 utoa16n:91 +Calls in [main] to cls:7 utoa16w:18 utoa16w:22 utoa16w:26 utoa16w:30 utoa16w:34 utoa10w:39 +Calls in [utoa16w] to utoa16n:81 utoa16n:89 utoa16n:97 utoa16n:101 Created 15 initial phi equivalence classes -Coalesced [35] main::i#3 ← main::i#1 -Coalesced [36] utoa10w::value#11 ← utoa10w::value#0 -Coalesced [45] utoa10w::dst#16 ← utoa10w::dst#1 -Coalesced [47] utoa10w::dst#13 ← utoa10w::dst#7 -Coalesced [56] utoa10w::i#9 ← utoa10w::i#1 -Coalesced [57] utoa10w::digit#9 ← utoa10w::digit#7 -Coalesced [58] utoa10w::dst#12 ← utoa10w::dst#4 -Coalesced (already) [59] utoa10w::dst#15 ← utoa10w::dst#11 -Coalesced (already) [60] utoa10w::dst#14 ← utoa10w::dst#11 -Coalesced (already) [61] utoa10w::digit#11 ← utoa10w::digit#3 -Coalesced [65] utoa10w::value#12 ← utoa10w::value#1 -Coalesced [66] utoa10w::digit#10 ← utoa10w::digit#1 -Coalesced [70] utoa16n::nybble#8 ← utoa16n::nybble#0 -Coalesced [77] utoa16n::nybble#9 ← utoa16n::nybble#1 -Coalesced [78] utoa16n::started#9 ← utoa16n::started#1 -Coalesced [85] utoa16n::nybble#10 ← utoa16n::nybble#2 -Coalesced [86] utoa16n::started#10 ← utoa16n::started#2 -Coalesced [90] utoa16n::nybble#11 ← utoa16n::nybble#3 -Coalesced [103] utoa16n::return#10 ← utoa16n::started#7 -Coalesced [110] cls::sc#3 ← cls::sc#1 +Coalesced [17] utoa16w::dst#14 ← utoa16w::dst#0 +Coalesced [21] utoa16w::dst#10 ← utoa16w::dst#1 +Coalesced [25] utoa16w::dst#11 ← utoa16w::dst#2 +Coalesced [29] utoa16w::dst#12 ← utoa16w::dst#3 +Coalesced [33] utoa16w::dst#13 ← utoa16w::dst#4 +Coalesced [45] main::i#3 ← main::i#1 +Coalesced [46] utoa10w::value#11 ← utoa10w::value#0 +Coalesced [55] utoa10w::dst#16 ← utoa10w::dst#1 +Coalesced [57] utoa10w::dst#13 ← utoa10w::dst#7 +Coalesced [66] utoa10w::i#9 ← utoa10w::i#1 +Coalesced [67] utoa10w::digit#9 ← utoa10w::digit#7 +Coalesced [68] utoa10w::dst#12 ← utoa10w::dst#4 +Coalesced (already) [69] utoa10w::dst#15 ← utoa10w::dst#11 +Coalesced (already) [70] utoa10w::dst#14 ← utoa10w::dst#11 +Coalesced (already) [71] utoa10w::digit#11 ← utoa10w::digit#3 +Coalesced [75] utoa10w::value#12 ← utoa10w::value#1 +Coalesced [76] utoa10w::digit#10 ← utoa10w::digit#1 +Coalesced [80] utoa16n::nybble#8 ← utoa16n::nybble#0 +Coalesced [87] utoa16n::nybble#9 ← utoa16n::nybble#1 +Coalesced [88] utoa16n::started#9 ← utoa16n::started#1 +Coalesced [95] utoa16n::nybble#10 ← utoa16n::nybble#2 +Coalesced [96] utoa16n::started#10 ← utoa16n::started#2 +Coalesced [100] utoa16n::nybble#11 ← utoa16n::nybble#3 +Coalesced [113] utoa16n::return#10 ← utoa16n::started#7 +Coalesced [120] cls::sc#3 ← cls::sc#1 Coalesced down to 11 phi equivalence classes Culled Empty Block (label) @2 Culled Empty Block (label) @6 @@ -1123,147 +1113,152 @@ main::@1: scope:[main] from main main::@1 main::@3 main::@2: scope:[main] from main::@1 [10] *((const byte*) bordercol#0) ← (byte) 1 [11] (byte) main::time_start#0 ← *((const byte*) raster#0) - [12] call utoa16w + [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 + [13] call utoa16w to:main::@4 main::@4: scope:[main] from main::@2 - [13] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [14] call utoa16w + [14] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 + [16] call utoa16w to:main::@5 main::@5: scope:[main] from main::@4 - [15] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [16] call utoa16w + [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 + [19] call utoa16w to:main::@6 main::@6: scope:[main] from main::@5 - [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [18] call utoa16w + [20] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 + [22] call utoa16w to:main::@7 main::@7: scope:[main] from main::@6 - [19] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) - [20] call utoa16w + [23] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) + [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 + [25] call utoa16w to:main::@8 main::@8: scope:[main] from main::@7 - [21] (byte) main::time_end#0 ← *((const byte*) raster#0) - [22] *((const byte*) bordercol#0) ← (byte) 0 - [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 - [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 - [25] call utoa10w + [26] (byte) main::time_end#0 ← *((const byte*) raster#0) + [27] *((const byte*) bordercol#0) ← (byte) 0 + [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 + [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 + [30] call utoa10w to:main::@3 main::@3: scope:[main] from main::@3 main::@8 - [26] (byte) main::i#2 ← phi( main::@8/(byte) 0 main::@3/(byte) main::i#1 ) - [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) - [28] (byte) main::i#1 ← ++ (byte) main::i#2 - [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 + [31] (byte) main::i#2 ← phi( main::@8/(byte) 0 main::@3/(byte) main::i#1 ) + [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) + [33] (byte) main::i#1 ← ++ (byte) main::i#2 + [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 to:main::@1 utoa10w: scope:[utoa10w] from main::@8 - [30] phi() + [35] phi() to:utoa10w::@1 utoa10w::@1: scope:[utoa10w] from utoa10w utoa10w::@2 utoa10w::@6 - [31] (byte*) utoa10w::dst#11 ← phi( utoa10w/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 utoa10w::@6/(byte*) utoa10w::dst#4 ) - [31] (byte) utoa10w::bStarted#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) 1 ) - [31] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::digit#7 utoa10w::@2/(byte) utoa10w::digit#1 ) - [31] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 ) - [31] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::i#1 ) - [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 - [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 + [36] (byte*) utoa10w::dst#11 ← phi( utoa10w/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 utoa10w::@6/(byte*) utoa10w::dst#4 ) + [36] (byte) utoa10w::bStarted#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) 1 ) + [36] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::digit#7 utoa10w::@2/(byte) utoa10w::digit#1 ) + [36] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 ) + [36] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@6/(byte) utoa10w::i#1 ) + [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 + [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 to:utoa10w::@3 utoa10w::@3: scope:[utoa10w] from utoa10w::@1 - [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 - [35] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 + [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 + [40] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 to:utoa10w::@4 utoa10w::@4: scope:[utoa10w] from utoa10w::@3 - [36] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 + [41] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 to:utoa10w::@5 utoa10w::@5: scope:[utoa10w] from utoa10w::@4 - [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) - [38] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 + [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) + [43] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 to:utoa10w::@7 utoa10w::@7: scope:[utoa10w] from utoa10w::@4 utoa10w::@5 - [39] (byte*) utoa10w::dst#7 ← phi( utoa10w::@4/(byte*) utoa10w::dst#11 utoa10w::@5/(byte*) utoa10w::dst#1 ) + [44] (byte*) utoa10w::dst#7 ← phi( utoa10w::@4/(byte*) utoa10w::dst#11 utoa10w::@5/(byte*) utoa10w::dst#1 ) to:utoa10w::@6 utoa10w::@6: scope:[utoa10w] from utoa10w::@3 utoa10w::@7 - [40] (byte) utoa10w::digit#7 ← phi( utoa10w::@7/(byte) 0 utoa10w::@3/(byte) utoa10w::digit#3 ) - [40] (byte*) utoa10w::dst#4 ← phi( utoa10w::@7/(byte*) utoa10w::dst#7 utoa10w::@3/(byte*) utoa10w::dst#11 ) - [41] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 - [42] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 + [45] (byte) utoa10w::digit#7 ← phi( utoa10w::@7/(byte) 0 utoa10w::@3/(byte) utoa10w::digit#3 ) + [45] (byte*) utoa10w::dst#4 ← phi( utoa10w::@7/(byte*) utoa10w::dst#7 utoa10w::@3/(byte*) utoa10w::dst#11 ) + [46] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 + [47] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 to:utoa10w::@8 utoa10w::@8: scope:[utoa10w] from utoa10w::@6 - [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 - [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) - [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 - [46] *((byte*) utoa10w::dst#2) ← (byte) 0 + [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 + [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) + [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 + [51] *((byte*) utoa10w::dst#2) ← (byte) 0 to:utoa10w::@return utoa10w::@return: scope:[utoa10w] from utoa10w::@8 - [47] return + [52] return to:@return utoa10w::@2: scope:[utoa10w] from utoa10w::@1 - [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) - [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 - [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) + [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) + [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 + [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) to:utoa10w::@1 utoa16w: scope:[utoa16w] from main::@2 main::@4 main::@5 main::@6 main::@7 - [51] (byte*) utoa16w::dst#5 ← phi( main::@4/(byte*) 1024+(byte) $28 main::@5/(byte*) 1024+(byte) $28+(byte) $28 main::@6/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28 main::@7/(byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 main::@2/(byte*) 1024 ) - [51] (word) utoa16w::value#5 ← phi( main::@4/(word) $4d2 main::@5/(word) $162e main::@6/(word) $270f main::@7/(word) $e608 main::@2/(byte) 0 ) - [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 - [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 - [54] call utoa16n - [55] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 + [56] (byte*) utoa16w::dst#5 ← phi( main::@4/(byte*) utoa16w::dst#1 main::@5/(byte*) utoa16w::dst#2 main::@6/(byte*) utoa16w::dst#3 main::@7/(byte*) utoa16w::dst#4 main::@2/(byte*) utoa16w::dst#0 ) + [56] (word) utoa16w::value#5 ← phi( main::@4/(word) $4d2 main::@5/(word) $162e main::@6/(word) $270f main::@7/(word) $e608 main::@2/(byte) 0 ) + [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 + [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 + [59] call utoa16n + [60] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 to:utoa16w::@1 utoa16w::@1: scope:[utoa16w] from utoa16w - [56] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 - [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 - [58] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f - [59] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 - [60] call utoa16n - [61] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 + [61] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 + [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 + [63] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f + [64] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 + [65] call utoa16n + [66] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 to:utoa16w::@2 utoa16w::@2: scope:[utoa16w] from utoa16w::@1 - [62] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 - [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 - [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 - [65] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 - [66] call utoa16n + [67] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 + [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 + [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 + [70] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 + [71] call utoa16n to:utoa16w::@3 utoa16w::@3: scope:[utoa16w] from utoa16w::@2 - [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 - [68] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f - [69] call utoa16n + [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 + [73] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f + [74] call utoa16n to:utoa16w::@4 utoa16w::@4: scope:[utoa16w] from utoa16w::@3 - [70] *((byte*) utoa16w::dst#5) ← (byte) 0 + [75] *((byte*) utoa16w::dst#5) ← (byte) 0 to:utoa16w::@return utoa16w::@return: scope:[utoa16w] from utoa16w::@4 - [71] return + [76] return to:@return utoa16n: scope:[utoa16n] from utoa16w utoa16w::@1 utoa16w::@2 utoa16w::@3 - [72] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) - [72] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) - [73] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 + [77] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) + [77] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) + [78] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 to:utoa16n::@1 utoa16n::@3: scope:[utoa16n] from utoa16n - [74] phi() + [79] phi() to:utoa16n::@1 utoa16n::@1: scope:[utoa16n] from utoa16n utoa16n::@3 - [75] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) - [76] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return + [80] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) + [81] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return to:utoa16n::@2 utoa16n::@2: scope:[utoa16n] from utoa16n::@1 - [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) - [78] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) + [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) + [83] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) to:utoa16n::@return utoa16n::@return: scope:[utoa16n] from utoa16n::@1 utoa16n::@2 - [79] return + [84] return to:@return cls: scope:[cls] from main - [80] phi() + [85] phi() to:cls::@1 cls::@1: scope:[cls] from cls cls::@1 - [81] (byte*) cls::sc#2 ← phi( cls/(const byte*) cls::screen#0 cls::@1/(byte*) cls::sc#1 ) - [82] *((byte*) cls::sc#2) ← (byte) ' ' - [83] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 - [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 + [86] (byte*) cls::sc#2 ← phi( cls/(const byte*) cls::screen#0 cls::@1/(byte*) cls::sc#1 ) + [87] *((byte*) cls::sc#2) ← (byte) ' ' + [88] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 + [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 to:cls::@return cls::@return: scope:[cls] from cls::@1 - [85] return + [90] return to:@return @@ -1293,7 +1288,7 @@ VARIABLE REGISTER WEIGHTS (byte) main::time_end (byte) main::time_end#0 11.0 (byte) main::time_start -(byte) main::time_start#0 1.8333333333333333 +(byte) main::time_start#0 1.2941176470588236 (byte*) raster (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) (byte~) utoa10w::$0 4.0 @@ -1341,7 +1336,12 @@ VARIABLE REGISTER WEIGHTS (byte~) utoa16w::$4 4.0 (byte~) utoa16w::$8 4.0 (byte*) utoa16w::dst -(byte*) utoa16w::dst#5 0.07407407407407407 +(byte*) utoa16w::dst#0 22.0 +(byte*) utoa16w::dst#1 22.0 +(byte*) utoa16w::dst#2 22.0 +(byte*) utoa16w::dst#3 22.0 +(byte*) utoa16w::dst#4 22.0 +(byte*) utoa16w::dst#5 2.1111111111111107 (byte) utoa16w::started (byte) utoa16w::started#1 1.3333333333333333 (byte) utoa16w::started#2 1.3333333333333333 @@ -1356,7 +1356,7 @@ Initial phi equivalence classes [ utoa10w::bStarted#2 ] [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] [ utoa16w::value#5 ] -[ utoa16w::dst#5 ] +[ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] [ cls::sc#2 cls::sc#1 ] @@ -1387,7 +1387,7 @@ Complete equivalence classes [ utoa10w::bStarted#2 ] [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] [ utoa16w::value#5 ] -[ utoa16w::dst#5 ] +[ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] [ cls::sc#2 cls::sc#1 ] @@ -1417,7 +1417,7 @@ Allocated zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Allocated zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] Allocated zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] Allocated zp ZP_WORD:10 [ utoa16w::value#5 ] -Allocated zp ZP_WORD:12 [ utoa16w::dst#5 ] +Allocated zp ZP_WORD:12 [ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] Allocated zp ZP_BYTE:14 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] Allocated zp ZP_BYTE:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Allocated zp ZP_WORD:16 [ cls::sc#2 cls::sc#1 ] @@ -1478,7 +1478,7 @@ main: { //SEG10 asm { sei } sei //SEG11 [5] call cls - //SEG12 [80] phi from main to cls [phi:main->cls] + //SEG12 [85] phi from main to cls [phi:main->cls] cls_from_main: jsr cls jmp b1 @@ -1509,138 +1509,143 @@ main: { //SEG20 [11] (byte) main::time_start#0 ← *((const byte*) raster#0) -- vbuz1=_deref_pbuc1 lda raster sta time_start - //SEG21 [12] call utoa16w - //SEG22 [51] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - utoa16w_from_b2: - //SEG23 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG21 [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 - //SEG24 [51] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 + //SEG22 [13] call utoa16w + //SEG23 [56] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + utoa16w_from_b2: + //SEG24 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@2->utoa16w#0] -- register_copy + //SEG25 [56] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value lda #0 sta utoa16w.value+1 jsr utoa16w jmp b4 - //SEG25 main::@4 + //SEG26 main::@4 b4: - //SEG26 [13] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG27 [14] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG27 [14] call utoa16w - //SEG28 [51] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - utoa16w_from_b4: - //SEG29 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG28 [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 - //SEG30 [51] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 + //SEG29 [16] call utoa16w + //SEG30 [56] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + utoa16w_from_b4: + //SEG31 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@4->utoa16w#0] -- register_copy + //SEG32 [56] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w jmp b5 - //SEG31 main::@5 + //SEG33 main::@5 b5: - //SEG32 [15] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG34 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG33 [16] call utoa16w - //SEG34 [51] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - utoa16w_from_b5: - //SEG35 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG35 [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 - //SEG36 [51] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 + //SEG36 [19] call utoa16w + //SEG37 [56] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + utoa16w_from_b5: + //SEG38 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@5->utoa16w#0] -- register_copy + //SEG39 [56] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w jmp b6 - //SEG37 main::@6 + //SEG40 main::@6 b6: - //SEG38 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG41 [20] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG39 [18] call utoa16w - //SEG40 [51] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] - utoa16w_from_b6: - //SEG41 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@6->utoa16w#0] -- pbuz1=pbuc1 + //SEG42 [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 - //SEG42 [51] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 + //SEG43 [22] call utoa16w + //SEG44 [56] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] + utoa16w_from_b6: + //SEG45 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@6->utoa16w#0] -- register_copy + //SEG46 [56] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w jmp b7 - //SEG43 main::@7 + //SEG47 main::@7 b7: - //SEG44 [19] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG48 [23] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG45 [20] call utoa16w - //SEG46 [51] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] - utoa16w_from_b7: - //SEG47 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@7->utoa16w#0] -- pbuz1=pbuc1 + //SEG49 [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 - //SEG48 [51] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 + //SEG50 [25] call utoa16w + //SEG51 [56] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] + utoa16w_from_b7: + //SEG52 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@7->utoa16w#0] -- register_copy + //SEG53 [56] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value lda #>$e608 sta utoa16w.value+1 jsr utoa16w jmp b8 - //SEG49 main::@8 + //SEG54 main::@8 b8: - //SEG50 [21] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuz1=_deref_pbuc1 + //SEG55 [26] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuz1=_deref_pbuc1 lda raster sta time_end - //SEG51 [22] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG56 [27] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta bordercol - //SEG52 [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG57 [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuz1=vbuz2_minus_vbuz3 lda time_end sec sbc time_start sta time - //SEG53 [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuz2 + //SEG58 [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuz2 lda time sta utoa10w.value lda #0 sta utoa10w.value+1 - //SEG54 [25] call utoa10w - //SEG55 [30] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] + //SEG59 [30] call utoa10w + //SEG60 [35] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] utoa10w_from_b8: jsr utoa10w - //SEG56 [26] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG61 [31] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG57 [26] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuz1=vbuc1 + //SEG62 [31] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuz1=vbuc1 lda #0 sta i jmp b3 - //SEG58 [26] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG63 [31] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG59 [26] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG64 [31] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG60 main::@3 + //SEG65 main::@3 b3: - //SEG61 [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG66 [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda msg,y sta $400+$28+$28+$28+$28+$50+3,y - //SEG62 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG67 [33] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG63 [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuz1_neq_0_then_la1 + //SEG68 [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuz1_neq_0_then_la1 ldy i lda msg,y cmp #0 @@ -1648,7 +1653,7 @@ main: { jmp b1 msg: .text "raster lines@" } -//SEG64 utoa10w +//SEG69 utoa10w // Decimal utoa() without using multiply or divide // utoa10w(word zeropage(4) value, byte* zeropage(8) dst) utoa10w: { @@ -1662,37 +1667,37 @@ utoa10w: { .label dst = 8 .label dst_2 = $1b .label bStarted = 7 - //SEG65 [31] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] + //SEG70 [36] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] b1_from_utoa10w: - //SEG66 [31] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 + //SEG71 [36] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28+$50 sta dst lda #>$400+$28+$28+$28+$28+$50 sta dst+1 - //SEG67 [31] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 + //SEG72 [36] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 lda #0 sta bStarted - //SEG68 [31] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 + //SEG73 [36] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 lda #0 sta digit - //SEG69 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy - //SEG70 [31] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuz1=vbuc1 + //SEG74 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy + //SEG75 [36] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG71 [31] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] + //SEG76 [36] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] b1_from_b6: - //SEG72 [31] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy - //SEG73 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy - //SEG74 [31] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy + //SEG77 [36] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy + //SEG78 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy + //SEG79 [36] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy jmp b1 - //SEG75 utoa10w::@1 + //SEG80 utoa10w::@1 b1: - //SEG76 [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG81 [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _8 - //SEG77 [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1 + //SEG82 [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1 ldy _8 lda UTOA10_SUB+1,y cmp value+1 @@ -1703,75 +1708,75 @@ utoa10w: { !: bcc b2 jmp b3 - //SEG78 utoa10w::@3 + //SEG83 utoa10w::@3 b3: - //SEG79 [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG84 [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _2 - //SEG80 [35] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuz1_eq_0_then_la1 + //SEG85 [40] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b6_from_b3 jmp b4 - //SEG81 utoa10w::@4 + //SEG86 utoa10w::@4 b4: - //SEG82 [36] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 + //SEG87 [41] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 lda bStarted cmp #0 beq b7_from_b4 jmp b5 - //SEG83 utoa10w::@5 + //SEG88 utoa10w::@5 b5: - //SEG84 [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG89 [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy digit lda DIGITS,y ldy #0 sta (dst),y - //SEG85 [38] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 + //SEG90 [43] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG86 [39] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] + //SEG91 [44] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] b7_from_b4: b7_from_b5: - //SEG87 [39] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy + //SEG92 [44] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy jmp b7 - //SEG88 utoa10w::@7 + //SEG93 utoa10w::@7 b7: - //SEG89 [40] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] + //SEG94 [45] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] b6_from_b7: - //SEG90 [40] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 + //SEG95 [45] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 lda #0 sta digit - //SEG91 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy + //SEG96 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy jmp b6 - //SEG92 [40] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] + //SEG97 [45] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] b6_from_b3: - //SEG93 [40] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy - //SEG94 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy + //SEG98 [45] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy + //SEG99 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy jmp b6 - //SEG95 utoa10w::@6 + //SEG100 utoa10w::@6 b6: - //SEG96 [41] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuz1=_inc_vbuz1 + //SEG101 [46] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG97 [42] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG102 [47] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b6 jmp b8 - //SEG98 utoa10w::@8 + //SEG103 utoa10w::@8 b8: - //SEG99 [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuz1=_byte_vwuz2 + //SEG104 [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuz1=_byte_vwuz2 lda value sta _0 - //SEG100 [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG105 [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda DIGITS,y ldy #0 sta (dst),y - //SEG101 [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz2 + //SEG106 [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz2 lda dst clc adc #1 @@ -1779,28 +1784,28 @@ utoa10w: { lda dst+1 adc #0 sta dst_2+1 - //SEG102 [46] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG107 [51] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (dst_2),y jmp breturn - //SEG103 utoa10w::@return + //SEG108 utoa10w::@return breturn: - //SEG104 [47] return + //SEG109 [52] return rts - //SEG105 utoa10w::@2 + //SEG110 utoa10w::@2 b2: - //SEG106 [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuz2 + //SEG111 [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuz2 lda digit ldy i clc adc UTOA10_VAL,y sta digit - //SEG107 [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG112 [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _9 - //SEG108 [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 + //SEG113 [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 ldy _9 sec lda value @@ -1809,16 +1814,16 @@ utoa10w: { lda value+1 sbc UTOA10_SUB+1,y sta value+1 - //SEG109 [31] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] + //SEG114 [36] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] b1_from_b2: - //SEG110 [31] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 + //SEG115 [36] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 lda #1 sta bStarted - //SEG111 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy - //SEG112 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy + //SEG116 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy + //SEG117 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy jmp b1 } -//SEG113 utoa16w +//SEG118 utoa16w // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage($a) value, byte* zeropage($c) dst) utoa16w: { @@ -1826,113 +1831,113 @@ utoa16w: { .label _4 = $21 .label _8 = $24 .label _12 = $25 + .label dst = $c .label started = $20 .label started_2 = $23 .label value = $a - .label dst = $c - //SEG114 [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuz1=_hi_vwuz2 + //SEG119 [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuz1=_hi_vwuz2 lda value+1 sta _0 - //SEG115 [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG120 [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda _0 lsr lsr lsr lsr sta utoa16n.nybble - //SEG116 [54] call utoa16n - //SEG117 [72] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + //SEG121 [59] call utoa16n + //SEG122 [77] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] utoa16n_from_utoa16w: - //SEG118 [72] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuz1=vbuc1 + //SEG123 [77] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuz1=vbuc1 lda #0 sta utoa16n.started - //SEG119 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + //SEG124 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n - //SEG120 [55] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 + //SEG125 [60] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 lda utoa16n.return_4 sta utoa16n.return jmp b1 - //SEG121 utoa16w::@1 + //SEG126 utoa16w::@1 b1: - //SEG122 [56] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 -- vbuz1=vbuz2 + //SEG127 [61] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 -- vbuz1=vbuz2 lda utoa16n.return sta started - //SEG123 [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuz1=_hi_vwuz2 + //SEG128 [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuz1=_hi_vwuz2 lda value+1 sta _4 - //SEG124 [58] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG129 [63] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and _4 sta utoa16n.nybble - //SEG125 [59] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 -- vbuz1=vbuz2 + //SEG130 [64] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 -- vbuz1=vbuz2 lda started sta utoa16n.started - //SEG126 [60] call utoa16n - //SEG127 [72] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + //SEG131 [65] call utoa16n + //SEG132 [77] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] utoa16n_from_b1: - //SEG128 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - //SEG129 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + //SEG133 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + //SEG134 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n - //SEG130 [61] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 + //SEG135 [66] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 lda utoa16n.return_4 sta utoa16n.return_1 jmp b2 - //SEG131 utoa16w::@2 + //SEG136 utoa16w::@2 b2: - //SEG132 [62] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 -- vbuz1=vbuz2 + //SEG137 [67] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 -- vbuz1=vbuz2 lda utoa16n.return_1 sta started_2 - //SEG133 [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuz1=_lo_vwuz2 + //SEG138 [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuz1=_lo_vwuz2 lda value sta _8 - //SEG134 [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG139 [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda _8 lsr lsr lsr lsr sta utoa16n.nybble - //SEG135 [65] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 -- vbuz1=vbuz2 + //SEG140 [70] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 -- vbuz1=vbuz2 lda started_2 sta utoa16n.started - //SEG136 [66] call utoa16n - //SEG137 [72] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + //SEG141 [71] call utoa16n + //SEG142 [77] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] utoa16n_from_b2: - //SEG138 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - //SEG139 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + //SEG143 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + //SEG144 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n jmp b3 - //SEG140 utoa16w::@3 + //SEG145 utoa16w::@3 b3: - //SEG141 [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuz1=_lo_vwuz2 + //SEG146 [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuz1=_lo_vwuz2 lda value sta _12 - //SEG142 [68] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG147 [73] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and _12 sta utoa16n.nybble - //SEG143 [69] call utoa16n - //SEG144 [72] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + //SEG148 [74] call utoa16n + //SEG149 [77] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] utoa16n_from_b3: - //SEG145 [72] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuz1=vbuc1 + //SEG150 [77] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuz1=vbuc1 lda #1 sta utoa16n.started - //SEG146 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + //SEG151 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n jmp b4 - //SEG147 utoa16w::@4 + //SEG152 utoa16w::@4 b4: - //SEG148 [70] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG153 [75] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (dst),y jmp breturn - //SEG149 utoa16w::@return + //SEG154 utoa16w::@return breturn: - //SEG150 [71] return + //SEG155 [76] return rts } -//SEG151 utoa16n +//SEG156 utoa16n // Hexadecimal utoa() for a single nybble // utoa16n(byte zeropage($e) nybble, byte zeropage($f) started) utoa16n: { @@ -1941,78 +1946,78 @@ utoa16n: { .label started = $f .label return_1 = $22 .label return_4 = $f - //SEG152 [73] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuz1_eq_0_then_la1 + //SEG157 [78] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuz1_eq_0_then_la1 lda nybble cmp #0 beq b3_from_utoa16n - //SEG153 [75] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + //SEG158 [80] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] b1_from_utoa16n: - //SEG154 [75] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuz1=vbuc1 + //SEG159 [80] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuz1=vbuc1 lda #1 sta return_4 jmp b1 - //SEG155 [74] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + //SEG160 [79] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] b3_from_utoa16n: jmp b3 - //SEG156 utoa16n::@3 + //SEG161 utoa16n::@3 b3: - //SEG157 [75] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + //SEG162 [80] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] b1_from_b3: - //SEG158 [75] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + //SEG163 [80] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy jmp b1 - //SEG159 utoa16n::@1 + //SEG164 utoa16n::@1 b1: - //SEG160 [76] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuz1_eq_0_then_la1 + //SEG165 [81] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuz1_eq_0_then_la1 lda return_4 cmp #0 beq breturn jmp b2 - //SEG161 utoa16n::@2 + //SEG166 utoa16n::@2 b2: - //SEG162 [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuz1 + //SEG167 [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuz1 ldy nybble lda DIGITS,y ldy #0 sta (utoa16w.dst),y - //SEG163 [78] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 + //SEG168 [83] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 inc utoa16w.dst bne !+ inc utoa16w.dst+1 !: jmp breturn - //SEG164 utoa16n::@return + //SEG169 utoa16n::@return breturn: - //SEG165 [79] return + //SEG170 [84] return rts } -//SEG166 cls +//SEG171 cls cls: { .label screen = $400 .label sc = $10 - //SEG167 [81] phi from cls to cls::@1 [phi:cls->cls::@1] + //SEG172 [86] phi from cls to cls::@1 [phi:cls->cls::@1] b1_from_cls: - //SEG168 [81] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 + //SEG173 [86] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 lda #screen sta sc+1 jmp b1 - //SEG169 [81] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] + //SEG174 [86] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] b1_from_b1: - //SEG170 [81] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy + //SEG175 [86] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy jmp b1 - //SEG171 cls::@1 + //SEG176 cls::@1 b1: - //SEG172 [82] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [87] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG173 [83] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [88] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG174 [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG179 [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>screen+$3e7+1 bne b1_from_b1 @@ -2020,9 +2025,9 @@ cls: { cmp #> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ main::$1 ] Statement [10] *((const byte*) bordercol#0) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) bordercol#0) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 [ main::time_start#0 utoa16w::dst#0 ] ( main:2 [ main::time_start#0 utoa16w::dst#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ main::time_start#0 ] +Statement [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst#1 ] ( main:2 [ main::time_start#0 utoa16w::dst#1 ] ) always clobbers reg byte a +Statement [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#2 ] ( main:2 [ main::time_start#0 utoa16w::dst#2 ] ) always clobbers reg byte a +Statement [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#3 ] ( main:2 [ main::time_start#0 utoa16w::dst#3 ] ) always clobbers reg byte a +Statement [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#4 ] ( main:2 [ main::time_start#0 utoa16w::dst#4 ] ) always clobbers reg byte a +Statement [27] *((const byte*) bordercol#0) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ main::time_end#0 ] -Statement [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a -Statement [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a -Statement [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a +Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a +Statement [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a +Statement [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ utoa10w::i#2 utoa10w::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] -Statement [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a -Statement [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a -Statement [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y +Statement [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a +Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a +Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ utoa10w::i#2 utoa10w::i#1 ] -Statement [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:25 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a -Statement [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:25 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:25 [ utoa10w::dst#2 ] ) always clobbers reg byte a -Statement [46] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:25 [ ] ) always clobbers reg byte a reg byte y -Statement [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:25 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a -Statement [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) [ utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:25 [ utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a +Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a +Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y +Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] ) always clobbers reg byte a +Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] ) always clobbers reg byte a reg byte y +Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ) always clobbers reg byte a +Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a +Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) [ utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a +Statement [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a +Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a +Statement [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ utoa16w::started#1 ] -Statement [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ) always clobbers reg byte a +Statement [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ utoa16w::started#2 ] -Statement [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 [ utoa16w::dst#5 utoa16w::$12 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] ) always clobbers reg byte a -Statement [70] *((byte*) utoa16w::dst#5) ← (byte) 0 [ ] ( main:2::utoa16w:12 [ main::time_start#0 ] main:2::utoa16w:14 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:18 [ main::time_start#0 ] main:2::utoa16w:20 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y +Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a +Statement [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 [ utoa16w::dst#5 utoa16w::$12 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] ) always clobbers reg byte a +Statement [75] *((byte*) utoa16w::dst#5) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:19 [ main::time_start#0 ] main:2::utoa16w:22 [ main::time_start#0 ] main:2::utoa16w:25 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ main::time_start#0 ] -Statement [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) [ utoa16w::dst#5 utoa16n::return#4 ] ( main:2::utoa16w:12::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] ) always clobbers reg byte a reg byte y +Statement [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) [ utoa16w::dst#5 utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] -Statement [82] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a +Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a Statement [6] (byte~) main::$1 ← *((const byte*) control#0) & (byte) $80 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a Statement [7] (byte~) main::$2 ← *((const byte*) raster#0) >> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] ) always clobbers reg byte a Statement [10] *((const byte*) bordercol#0) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) bordercol#0) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a -Statement [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a -Statement [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a -Statement [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a -Statement [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a -Statement [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a -Statement [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y -Statement [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:25 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a -Statement [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:25 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:25 [ utoa10w::dst#2 ] ) always clobbers reg byte a -Statement [46] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:25 [ ] ) always clobbers reg byte a reg byte y -Statement [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ( main:2::utoa10w:25 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:25 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a -Statement [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) [ utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:25 [ utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a -Statement [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ) always clobbers reg byte a -Statement [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 [ utoa16w::dst#5 utoa16w::$12 ] ( main:2::utoa16w:12 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:14 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:18 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:20 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] ) always clobbers reg byte a -Statement [70] *((byte*) utoa16w::dst#5) ← (byte) 0 [ ] ( main:2::utoa16w:12 [ main::time_start#0 ] main:2::utoa16w:14 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:18 [ main::time_start#0 ] main:2::utoa16w:20 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y -Statement [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) [ utoa16w::dst#5 utoa16n::return#4 ] ( main:2::utoa16w:12::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:54 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:60 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:66 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:12::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:14::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:18::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:20::utoa16n:69 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] ) always clobbers reg byte a reg byte y -Statement [82] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 [ main::time_start#0 utoa16w::dst#0 ] ( main:2 [ main::time_start#0 utoa16w::dst#0 ] ) always clobbers reg byte a +Statement [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst#1 ] ( main:2 [ main::time_start#0 utoa16w::dst#1 ] ) always clobbers reg byte a +Statement [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#2 ] ( main:2 [ main::time_start#0 utoa16w::dst#2 ] ) always clobbers reg byte a +Statement [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#3 ] ( main:2 [ main::time_start#0 utoa16w::dst#3 ] ) always clobbers reg byte a +Statement [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst#4 ] ( main:2 [ main::time_start#0 utoa16w::dst#4 ] ) always clobbers reg byte a +Statement [27] *((const byte*) bordercol#0) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a +Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a +Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a +Statement [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a +Statement [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a +Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a +Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y +Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a +Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y +Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] ) always clobbers reg byte a +Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] ) always clobbers reg byte a reg byte y +Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#1 ] ) always clobbers reg byte a +Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::value#10 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a +Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) [ utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a +Statement [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::$0 ] ) always clobbers reg byte a +Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::nybble#0 ] ) always clobbers reg byte a +Statement [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#1 utoa16w::$4 ] ) always clobbers reg byte a +Statement [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16w::$8 ] ) always clobbers reg byte a +Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 [ utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a +Statement [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 [ utoa16w::dst#5 utoa16w::$12 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst#5 utoa16w::$12 ] ) always clobbers reg byte a +Statement [75] *((byte*) utoa16w::dst#5) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:19 [ main::time_start#0 ] main:2::utoa16w:22 [ main::time_start#0 ] main:2::utoa16w:25 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y +Statement [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) [ utoa16w::dst#5 utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst#5 utoa16n::return#4 ] ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ utoa10w::i#2 utoa10w::i#1 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_WORD:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] : zp ZP_WORD:4 , @@ -2111,7 +2126,7 @@ Potential registers zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::di Potential registers zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , Potential registers zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] : zp ZP_WORD:8 , Potential registers zp ZP_WORD:10 [ utoa16w::value#5 ] : zp ZP_WORD:10 , -Potential registers zp ZP_WORD:12 [ utoa16w::dst#5 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:12 [ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] : zp ZP_WORD:12 , Potential registers zp ZP_BYTE:14 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] : zp ZP_BYTE:15 , reg byte x , Potential registers zp ZP_WORD:16 [ cls::sc#2 cls::sc#1 ] : zp ZP_WORD:16 , @@ -2137,49 +2152,49 @@ Potential registers zp ZP_BYTE:37 [ utoa16w::$12 ] : zp ZP_BYTE:37 , reg byte a REGISTER UPLIFT SCOPES Uplift Scope [utoa10w] 638.54: zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] 230.29: zp ZP_WORD:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] 218.83: zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] 206.59: zp ZP_BYTE:3 [ utoa10w::i#2 utoa10w::i#1 ] 202: zp ZP_BYTE:24 [ utoa10w::$8 ] 202: zp ZP_BYTE:25 [ utoa10w::$2 ] 202: zp ZP_BYTE:29 [ utoa10w::$9 ] 20.2: zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] 4: zp ZP_BYTE:26 [ utoa10w::$0 ] 4: zp ZP_WORD:27 [ utoa10w::dst#2 ] -Uplift Scope [main] 353.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 202: zp ZP_BYTE:19 [ main::$2 ] 202: zp ZP_BYTE:20 [ main::rst#0 ] 101: zp ZP_BYTE:18 [ main::$1 ] 11: zp ZP_BYTE:22 [ main::time_end#0 ] 11: zp ZP_BYTE:23 [ main::time#0 ] 1.83: zp ZP_BYTE:21 [ main::time_start#0 ] +Uplift Scope [main] 353.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 202: zp ZP_BYTE:19 [ main::$2 ] 202: zp ZP_BYTE:20 [ main::rst#0 ] 101: zp ZP_BYTE:18 [ main::$1 ] 11: zp ZP_BYTE:22 [ main::time_end#0 ] 11: zp ZP_BYTE:23 [ main::time#0 ] 1.29: zp ZP_BYTE:21 [ main::time_start#0 ] +Uplift Scope [utoa16w] 112.11: zp ZP_WORD:12 [ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] 4: zp ZP_BYTE:30 [ utoa16w::$0 ] 4: zp ZP_BYTE:33 [ utoa16w::$4 ] 4: zp ZP_BYTE:36 [ utoa16w::$8 ] 4: zp ZP_BYTE:37 [ utoa16w::$12 ] 1.33: zp ZP_BYTE:32 [ utoa16w::started#1 ] 1.33: zp ZP_BYTE:35 [ utoa16w::started#2 ] 0.5: zp ZP_WORD:10 [ utoa16w::value#5 ] Uplift Scope [utoa16n] 14.4: zp ZP_BYTE:14 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 11.14: zp ZP_BYTE:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 4: zp ZP_BYTE:31 [ utoa16n::return#0 ] 4: zp ZP_BYTE:34 [ utoa16n::return#1 ] Uplift Scope [cls] 33: zp ZP_WORD:16 [ cls::sc#2 cls::sc#1 ] -Uplift Scope [utoa16w] 4: zp ZP_BYTE:30 [ utoa16w::$0 ] 4: zp ZP_BYTE:33 [ utoa16w::$4 ] 4: zp ZP_BYTE:36 [ utoa16w::$8 ] 4: zp ZP_BYTE:37 [ utoa16w::$12 ] 1.33: zp ZP_BYTE:32 [ utoa16w::started#1 ] 1.33: zp ZP_BYTE:35 [ utoa16w::started#2 ] 0.5: zp ZP_WORD:10 [ utoa16w::value#5 ] 0.07: zp ZP_WORD:12 [ utoa16w::dst#5 ] Uplift Scope [] -Uplifting [utoa10w] best 28511 combination zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] zp ZP_WORD:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] reg byte a [ utoa10w::$8 ] reg byte a [ utoa10w::$2 ] zp ZP_BYTE:29 [ utoa10w::$9 ] zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] zp ZP_BYTE:26 [ utoa10w::$0 ] zp ZP_WORD:27 [ utoa10w::dst#2 ] +Uplifting [utoa10w] best 28961 combination zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] zp ZP_WORD:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] reg byte a [ utoa10w::$8 ] reg byte a [ utoa10w::$2 ] zp ZP_BYTE:29 [ utoa10w::$9 ] zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] zp ZP_BYTE:26 [ utoa10w::$0 ] zp ZP_WORD:27 [ utoa10w::dst#2 ] Limited combination testing to 100 combinations of 4608 possible. -Uplifting [main] best 26111 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp ZP_BYTE:18 [ main::$1 ] zp ZP_BYTE:22 [ main::time_end#0 ] zp ZP_BYTE:23 [ main::time#0 ] zp ZP_BYTE:21 [ main::time_start#0 ] +Uplifting [main] best 26561 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp ZP_BYTE:18 [ main::$1 ] zp ZP_BYTE:22 [ main::time_end#0 ] zp ZP_BYTE:23 [ main::time#0 ] zp ZP_BYTE:21 [ main::time_start#0 ] Limited combination testing to 100 combinations of 3456 possible. -Uplifting [utoa16n] best 26059 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] -Limited combination testing to 100 combinations of 128 possible. -Uplifting [cls] best 26059 combination zp ZP_WORD:16 [ cls::sc#2 cls::sc#1 ] -Uplifting [utoa16w] best 26035 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$4 ] reg byte a [ utoa16w::$8 ] reg byte a [ utoa16w::$12 ] zp ZP_BYTE:32 [ utoa16w::started#1 ] zp ZP_BYTE:35 [ utoa16w::started#2 ] zp ZP_WORD:10 [ utoa16w::value#5 ] zp ZP_WORD:12 [ utoa16w::dst#5 ] +Uplifting [utoa16w] best 26537 combination zp ZP_WORD:12 [ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$4 ] reg byte a [ utoa16w::$8 ] reg byte a [ utoa16w::$12 ] zp ZP_BYTE:32 [ utoa16w::started#1 ] zp ZP_BYTE:35 [ utoa16w::started#2 ] zp ZP_WORD:10 [ utoa16w::value#5 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [] best 26035 combination +Uplifting [utoa16n] best 26485 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] +Limited combination testing to 100 combinations of 128 possible. +Uplifting [cls] best 26485 combination zp ZP_WORD:16 [ cls::sc#2 cls::sc#1 ] +Uplifting [] best 26485 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] -Uplifting [utoa10w] best 26035 combination zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] +Uplifting [utoa10w] best 26485 combination zp ZP_BYTE:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ utoa10w::$9 ] -Uplifting [utoa10w] best 25635 combination reg byte a [ utoa10w::$9 ] +Uplifting [utoa10w] best 26085 combination reg byte a [ utoa10w::$9 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ main::$1 ] -Uplifting [main] best 25635 combination zp ZP_BYTE:18 [ main::$1 ] +Uplifting [main] best 26085 combination zp ZP_BYTE:18 [ main::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ utoa10w::bStarted#2 ] -Uplifting [utoa10w] best 25635 combination zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] +Uplifting [utoa10w] best 26085 combination zp ZP_BYTE:7 [ utoa10w::bStarted#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ main::time_end#0 ] -Uplifting [main] best 25595 combination reg byte x [ main::time_end#0 ] +Uplifting [main] best 26045 combination reg byte x [ main::time_end#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::time#0 ] -Uplifting [main] best 25535 combination reg byte a [ main::time#0 ] +Uplifting [main] best 25985 combination reg byte a [ main::time#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ utoa10w::$0 ] -Uplifting [utoa10w] best 25531 combination reg byte a [ utoa10w::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::time_start#0 ] -Uplifting [main] best 25531 combination zp ZP_BYTE:21 [ main::time_start#0 ] +Uplifting [utoa10w] best 25981 combination reg byte a [ utoa10w::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ utoa16w::started#1 ] -Uplifting [utoa16w] best 25525 combination reg byte x [ utoa16w::started#1 ] +Uplifting [utoa16w] best 25975 combination reg byte x [ utoa16w::started#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ utoa16w::started#2 ] -Uplifting [utoa16w] best 25519 combination reg byte x [ utoa16w::started#2 ] +Uplifting [utoa16w] best 25969 combination reg byte x [ utoa16w::started#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::time_start#0 ] +Uplifting [main] best 25969 combination zp ZP_BYTE:21 [ main::time_start#0 ] Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] ] with [ zp ZP_WORD:27 [ utoa10w::dst#2 ] ] - score: 1 Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:5 [ utoa10w::bStarted#2 ] Allocated (was zp ZP_WORD:8) zp ZP_WORD:6 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 utoa10w::dst#2 ] Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ utoa16w::value#5 ] -Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ utoa16w::dst#5 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ utoa16w::dst#5 utoa16w::dst#1 utoa16w::dst#2 utoa16w::dst#3 utoa16w::dst#4 utoa16w::dst#0 ] Allocated (was zp ZP_WORD:16) zp ZP_WORD:12 [ cls::sc#2 cls::sc#1 ] Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:14 [ main::$1 ] Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:15 [ main::time_start#0 ] @@ -2216,7 +2231,7 @@ main: { //SEG10 asm { sei } sei //SEG11 [5] call cls - //SEG12 [80] phi from main to cls [phi:main->cls] + //SEG12 [85] phi from main to cls [phi:main->cls] cls_from_main: jsr cls jmp b1 @@ -2243,140 +2258,145 @@ main: { //SEG20 [11] (byte) main::time_start#0 ← *((const byte*) raster#0) -- vbuz1=_deref_pbuc1 lda raster sta time_start - //SEG21 [12] call utoa16w - //SEG22 [51] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - utoa16w_from_b2: - //SEG23 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG21 [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 - //SEG24 [51] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 + //SEG22 [13] call utoa16w + //SEG23 [56] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + utoa16w_from_b2: + //SEG24 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@2->utoa16w#0] -- register_copy + //SEG25 [56] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value lda #0 sta utoa16w.value+1 jsr utoa16w jmp b4 - //SEG25 main::@4 + //SEG26 main::@4 b4: - //SEG26 [13] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG27 [14] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG27 [14] call utoa16w - //SEG28 [51] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - utoa16w_from_b4: - //SEG29 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG28 [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 - //SEG30 [51] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 + //SEG29 [16] call utoa16w + //SEG30 [56] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + utoa16w_from_b4: + //SEG31 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@4->utoa16w#0] -- register_copy + //SEG32 [56] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w jmp b5 - //SEG31 main::@5 + //SEG33 main::@5 b5: - //SEG32 [15] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG34 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG33 [16] call utoa16w - //SEG34 [51] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - utoa16w_from_b5: - //SEG35 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG35 [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 - //SEG36 [51] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 + //SEG36 [19] call utoa16w + //SEG37 [56] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + utoa16w_from_b5: + //SEG38 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@5->utoa16w#0] -- register_copy + //SEG39 [56] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w jmp b6 - //SEG37 main::@6 + //SEG40 main::@6 b6: - //SEG38 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG41 [20] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG39 [18] call utoa16w - //SEG40 [51] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] - utoa16w_from_b6: - //SEG41 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@6->utoa16w#0] -- pbuz1=pbuc1 + //SEG42 [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 - //SEG42 [51] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 + //SEG43 [22] call utoa16w + //SEG44 [56] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] + utoa16w_from_b6: + //SEG45 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@6->utoa16w#0] -- register_copy + //SEG46 [56] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w jmp b7 - //SEG43 main::@7 + //SEG47 main::@7 b7: - //SEG44 [19] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG48 [23] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG45 [20] call utoa16w - //SEG46 [51] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] - utoa16w_from_b7: - //SEG47 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@7->utoa16w#0] -- pbuz1=pbuc1 + //SEG49 [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 - //SEG48 [51] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 + //SEG50 [25] call utoa16w + //SEG51 [56] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] + utoa16w_from_b7: + //SEG52 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@7->utoa16w#0] -- register_copy + //SEG53 [56] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value lda #>$e608 sta utoa16w.value+1 jsr utoa16w jmp b8 - //SEG49 main::@8 + //SEG54 main::@8 b8: - //SEG50 [21] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuxx=_deref_pbuc1 + //SEG55 [26] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuxx=_deref_pbuc1 ldx raster - //SEG51 [22] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG56 [27] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta bordercol - //SEG52 [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuaa=vbuxx_minus_vbuz1 + //SEG57 [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuaa=vbuxx_minus_vbuz1 txa sec sbc time_start - //SEG53 [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuaa + //SEG58 [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuaa sta utoa10w.value lda #0 sta utoa10w.value+1 - //SEG54 [25] call utoa10w - //SEG55 [30] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] + //SEG59 [30] call utoa10w + //SEG60 [35] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] utoa10w_from_b8: jsr utoa10w - //SEG56 [26] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG61 [31] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG57 [26] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 + //SEG62 [31] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG58 [26] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG63 [31] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG59 [26] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG64 [31] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG60 main::@3 + //SEG65 main::@3 b3: - //SEG61 [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG66 [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta $400+$28+$28+$28+$28+$50+3,x - //SEG62 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG67 [33] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG63 [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuxx_neq_0_then_la1 + //SEG68 [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuxx_neq_0_then_la1 lda msg,x cmp #0 bne b3_from_b3 jmp b1 msg: .text "raster lines@" } -//SEG64 utoa10w +//SEG69 utoa10w // Decimal utoa() without using multiply or divide // utoa10w(word zeropage(2) value, byte* zeropage(6) dst) utoa10w: { @@ -2384,35 +2404,35 @@ utoa10w: { .label digit = 4 .label dst = 6 .label bStarted = 5 - //SEG65 [31] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] + //SEG70 [36] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] b1_from_utoa10w: - //SEG66 [31] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 + //SEG71 [36] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28+$50 sta dst lda #>$400+$28+$28+$28+$28+$50 sta dst+1 - //SEG67 [31] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 + //SEG72 [36] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 lda #0 sta bStarted - //SEG68 [31] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 + //SEG73 [36] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 lda #0 sta digit - //SEG69 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy - //SEG70 [31] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuxx=vbuc1 + //SEG74 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy + //SEG75 [36] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG71 [31] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] + //SEG76 [36] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] b1_from_b6: - //SEG72 [31] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy - //SEG73 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy - //SEG74 [31] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy + //SEG77 [36] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy + //SEG78 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy + //SEG79 [36] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy jmp b1 - //SEG75 utoa10w::@1 + //SEG80 utoa10w::@1 b1: - //SEG76 [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + //SEG81 [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG77 [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 + //SEG82 [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 tay lda UTOA10_SUB+1,y cmp value+1 @@ -2423,95 +2443,95 @@ utoa10w: { !: bcc b2 jmp b3 - //SEG78 utoa10w::@3 + //SEG83 utoa10w::@3 b3: - //SEG79 [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG84 [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG80 [35] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuaa_eq_0_then_la1 + //SEG85 [40] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6_from_b3 jmp b4 - //SEG81 utoa10w::@4 + //SEG86 utoa10w::@4 b4: - //SEG82 [36] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 + //SEG87 [41] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 lda bStarted cmp #0 beq b7_from_b4 jmp b5 - //SEG83 utoa10w::@5 + //SEG88 utoa10w::@5 b5: - //SEG84 [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG89 [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy digit lda DIGITS,y ldy #0 sta (dst),y - //SEG85 [38] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 + //SEG90 [43] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG86 [39] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] + //SEG91 [44] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] b7_from_b4: b7_from_b5: - //SEG87 [39] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy + //SEG92 [44] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy jmp b7 - //SEG88 utoa10w::@7 + //SEG93 utoa10w::@7 b7: - //SEG89 [40] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] + //SEG94 [45] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] b6_from_b7: - //SEG90 [40] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 + //SEG95 [45] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 lda #0 sta digit - //SEG91 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy + //SEG96 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy jmp b6 - //SEG92 [40] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] + //SEG97 [45] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] b6_from_b3: - //SEG93 [40] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy - //SEG94 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy + //SEG98 [45] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy + //SEG99 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy jmp b6 - //SEG95 utoa10w::@6 + //SEG100 utoa10w::@6 b6: - //SEG96 [41] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuxx=_inc_vbuxx + //SEG101 [46] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuxx=_inc_vbuxx inx - //SEG97 [42] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG102 [47] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b6 jmp b8 - //SEG98 utoa10w::@8 + //SEG103 utoa10w::@8 b8: - //SEG99 [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuaa=_byte_vwuz1 + //SEG104 [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuaa=_byte_vwuz1 lda value - //SEG100 [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG105 [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda DIGITS,y ldy #0 sta (dst),y - //SEG101 [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz1 + //SEG106 [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG102 [46] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG107 [51] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (dst),y jmp breturn - //SEG103 utoa10w::@return + //SEG108 utoa10w::@return breturn: - //SEG104 [47] return + //SEG109 [52] return rts - //SEG105 utoa10w::@2 + //SEG110 utoa10w::@2 b2: - //SEG106 [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuxx + //SEG111 [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuxx lda UTOA10_VAL,x clc adc digit sta digit - //SEG107 [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + //SEG112 [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG108 [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa + //SEG113 [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa tay sec lda value @@ -2520,170 +2540,170 @@ utoa10w: { lda value+1 sbc UTOA10_SUB+1,y sta value+1 - //SEG109 [31] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] + //SEG114 [36] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] b1_from_b2: - //SEG110 [31] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 + //SEG115 [36] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 lda #1 sta bStarted - //SEG111 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy - //SEG112 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy + //SEG116 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy + //SEG117 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy jmp b1 } -//SEG113 utoa16w +//SEG118 utoa16w // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(8) value, byte* zeropage($a) dst) utoa16w: { - .label value = 8 .label dst = $a - //SEG114 [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 + .label value = 8 + //SEG119 [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 - //SEG115 [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG120 [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG116 [54] call utoa16n - //SEG117 [72] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + //SEG121 [59] call utoa16n + //SEG122 [77] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] utoa16n_from_utoa16w: - //SEG118 [72] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 + //SEG123 [77] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 ldx #0 - //SEG119 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + //SEG124 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n - //SEG120 [55] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 + //SEG125 [60] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 jmp b1 - //SEG121 utoa16w::@1 + //SEG126 utoa16w::@1 b1: - //SEG122 [56] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 - //SEG123 [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 + //SEG127 [61] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 + //SEG128 [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 - //SEG124 [58] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 + //SEG129 [63] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG125 [59] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 - //SEG126 [60] call utoa16n - //SEG127 [72] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + //SEG130 [64] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 + //SEG131 [65] call utoa16n + //SEG132 [77] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] utoa16n_from_b1: - //SEG128 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - //SEG129 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + //SEG133 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + //SEG134 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n - //SEG130 [61] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 + //SEG135 [66] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 jmp b2 - //SEG131 utoa16w::@2 + //SEG136 utoa16w::@2 b2: - //SEG132 [62] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 - //SEG133 [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 + //SEG137 [67] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 + //SEG138 [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 lda value - //SEG134 [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG139 [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG135 [65] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 - //SEG136 [66] call utoa16n - //SEG137 [72] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + //SEG140 [70] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 + //SEG141 [71] call utoa16n + //SEG142 [77] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] utoa16n_from_b2: - //SEG138 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - //SEG139 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + //SEG143 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + //SEG144 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n jmp b3 - //SEG140 utoa16w::@3 + //SEG145 utoa16w::@3 b3: - //SEG141 [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 + //SEG146 [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 lda value - //SEG142 [68] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 + //SEG147 [73] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG143 [69] call utoa16n - //SEG144 [72] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + //SEG148 [74] call utoa16n + //SEG149 [77] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] utoa16n_from_b3: - //SEG145 [72] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 + //SEG150 [77] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 ldx #1 - //SEG146 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + //SEG151 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n jmp b4 - //SEG147 utoa16w::@4 + //SEG152 utoa16w::@4 b4: - //SEG148 [70] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG153 [75] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (dst),y jmp breturn - //SEG149 utoa16w::@return + //SEG154 utoa16w::@return breturn: - //SEG150 [71] return + //SEG155 [76] return rts } -//SEG151 utoa16n +//SEG156 utoa16n // Hexadecimal utoa() for a single nybble // utoa16n(byte register(A) nybble, byte register(X) started) utoa16n: { - //SEG152 [73] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 + //SEG157 [78] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_utoa16n - //SEG153 [75] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + //SEG158 [80] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] b1_from_utoa16n: - //SEG154 [75] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 + //SEG159 [80] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG155 [74] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + //SEG160 [79] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] b3_from_utoa16n: jmp b3 - //SEG156 utoa16n::@3 + //SEG161 utoa16n::@3 b3: - //SEG157 [75] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + //SEG162 [80] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] b1_from_b3: - //SEG158 [75] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + //SEG163 [80] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy jmp b1 - //SEG159 utoa16n::@1 + //SEG164 utoa16n::@1 b1: - //SEG160 [76] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 + //SEG165 [81] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn jmp b2 - //SEG161 utoa16n::@2 + //SEG166 utoa16n::@2 b2: - //SEG162 [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + //SEG167 [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 sta (utoa16w.dst),y - //SEG163 [78] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 + //SEG168 [83] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 inc utoa16w.dst bne !+ inc utoa16w.dst+1 !: jmp breturn - //SEG164 utoa16n::@return + //SEG169 utoa16n::@return breturn: - //SEG165 [79] return + //SEG170 [84] return rts } -//SEG166 cls +//SEG171 cls cls: { .label screen = $400 .label sc = $c - //SEG167 [81] phi from cls to cls::@1 [phi:cls->cls::@1] + //SEG172 [86] phi from cls to cls::@1 [phi:cls->cls::@1] b1_from_cls: - //SEG168 [81] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 + //SEG173 [86] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 lda #screen sta sc+1 jmp b1 - //SEG169 [81] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] + //SEG174 [86] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] b1_from_b1: - //SEG170 [81] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy + //SEG175 [86] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy jmp b1 - //SEG171 cls::@1 + //SEG176 cls::@1 b1: - //SEG172 [82] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [87] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG173 [83] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [88] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG174 [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG179 [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>screen+$3e7+1 bne b1_from_b1 @@ -2691,9 +2711,9 @@ cls: { cmp #cls] + //SEG12 [85] phi from main to cls [phi:main->cls] jsr cls //SEG13 main::@1 b1: @@ -3009,119 +3034,124 @@ main: { //SEG20 [11] (byte) main::time_start#0 ← *((const byte*) raster#0) -- vbuz1=_deref_pbuc1 lda raster sta time_start - //SEG21 [12] call utoa16w - //SEG22 [51] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] - //SEG23 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024 [phi:main::@2->utoa16w#0] -- pbuz1=pbuc1 + //SEG21 [12] (byte*) utoa16w::dst#0 ← (byte*) 1024 -- pbuz1=pbuc1 lda #<$400 sta utoa16w.dst lda #>$400 sta utoa16w.dst+1 - //SEG24 [51] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 + //SEG22 [13] call utoa16w + //SEG23 [56] phi from main::@2 to utoa16w [phi:main::@2->utoa16w] + //SEG24 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#0 [phi:main::@2->utoa16w#0] -- register_copy + //SEG25 [56] phi (word) utoa16w::value#5 = (byte) 0 [phi:main::@2->utoa16w#1] -- vwuz1=vbuc1 lda #0 sta utoa16w.value sta utoa16w.value+1 jsr utoa16w - //SEG25 main::@4 - //SEG26 [13] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG26 main::@4 + //SEG27 [14] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG27 [14] call utoa16w - //SEG28 [51] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] - //SEG29 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28 [phi:main::@4->utoa16w#0] -- pbuz1=pbuc1 + //SEG28 [15] (byte*) utoa16w::dst#1 ← (byte*) 1024+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28 sta utoa16w.dst lda #>$400+$28 sta utoa16w.dst+1 - //SEG30 [51] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 + //SEG29 [16] call utoa16w + //SEG30 [56] phi from main::@4 to utoa16w [phi:main::@4->utoa16w] + //SEG31 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#1 [phi:main::@4->utoa16w#0] -- register_copy + //SEG32 [56] phi (word) utoa16w::value#5 = (word) $4d2 [phi:main::@4->utoa16w#1] -- vwuz1=vwuc1 lda #<$4d2 sta utoa16w.value lda #>$4d2 sta utoa16w.value+1 jsr utoa16w - //SEG31 main::@5 - //SEG32 [15] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG33 main::@5 + //SEG34 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG33 [16] call utoa16w - //SEG34 [51] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] - //SEG35 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28 [phi:main::@5->utoa16w#0] -- pbuz1=pbuc1 + //SEG35 [18] (byte*) utoa16w::dst#2 ← (byte*) 1024+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28 sta utoa16w.dst lda #>$400+$28+$28 sta utoa16w.dst+1 - //SEG36 [51] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 + //SEG36 [19] call utoa16w + //SEG37 [56] phi from main::@5 to utoa16w [phi:main::@5->utoa16w] + //SEG38 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#2 [phi:main::@5->utoa16w#0] -- register_copy + //SEG39 [56] phi (word) utoa16w::value#5 = (word) $162e [phi:main::@5->utoa16w#1] -- vwuz1=vwuc1 lda #<$162e sta utoa16w.value lda #>$162e sta utoa16w.value+1 jsr utoa16w - //SEG37 main::@6 - //SEG38 [17] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG40 main::@6 + //SEG41 [20] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG39 [18] call utoa16w - //SEG40 [51] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] - //SEG41 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [phi:main::@6->utoa16w#0] -- pbuz1=pbuc1 + //SEG42 [21] (byte*) utoa16w::dst#3 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28 sta utoa16w.dst+1 - //SEG42 [51] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 + //SEG43 [22] call utoa16w + //SEG44 [56] phi from main::@6 to utoa16w [phi:main::@6->utoa16w] + //SEG45 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#3 [phi:main::@6->utoa16w#0] -- register_copy + //SEG46 [56] phi (word) utoa16w::value#5 = (word) $270f [phi:main::@6->utoa16w#1] -- vwuz1=vwuc1 lda #<$270f sta utoa16w.value lda #>$270f sta utoa16w.value+1 jsr utoa16w - //SEG43 main::@7 - //SEG44 [19] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 main::@7 + //SEG48 [23] *((const byte*) bordercol#0) ← ++ *((const byte*) bordercol#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc bordercol - //SEG45 [20] call utoa16w - //SEG46 [51] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] - //SEG47 [51] phi (byte*) utoa16w::dst#5 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [phi:main::@7->utoa16w#0] -- pbuz1=pbuc1 + //SEG49 [24] (byte*) utoa16w::dst#4 ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28 sta utoa16w.dst lda #>$400+$28+$28+$28+$28 sta utoa16w.dst+1 - //SEG48 [51] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 + //SEG50 [25] call utoa16w + //SEG51 [56] phi from main::@7 to utoa16w [phi:main::@7->utoa16w] + //SEG52 [56] phi (byte*) utoa16w::dst#5 = (byte*) utoa16w::dst#4 [phi:main::@7->utoa16w#0] -- register_copy + //SEG53 [56] phi (word) utoa16w::value#5 = (word) $e608 [phi:main::@7->utoa16w#1] -- vwuz1=vwuc1 lda #<$e608 sta utoa16w.value lda #>$e608 sta utoa16w.value+1 jsr utoa16w - //SEG49 main::@8 - //SEG50 [21] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuxx=_deref_pbuc1 + //SEG54 main::@8 + //SEG55 [26] (byte) main::time_end#0 ← *((const byte*) raster#0) -- vbuxx=_deref_pbuc1 ldx raster - //SEG51 [22] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG56 [27] *((const byte*) bordercol#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta bordercol - //SEG52 [23] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuaa=vbuxx_minus_vbuz1 + //SEG57 [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 -- vbuaa=vbuxx_minus_vbuz1 txa sec sbc time_start - //SEG53 [24] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuaa + //SEG58 [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 -- vwuz1=_word_vbuaa sta utoa10w.value lda #0 sta utoa10w.value+1 - //SEG54 [25] call utoa10w - //SEG55 [30] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] + //SEG59 [30] call utoa10w + //SEG60 [35] phi from main::@8 to utoa10w [phi:main::@8->utoa10w] jsr utoa10w - //SEG56 [26] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG57 [26] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 + //SEG61 [31] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG62 [31] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG58 [26] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - //SEG59 [26] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy - //SEG60 main::@3 + //SEG63 [31] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG64 [31] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG65 main::@3 b3: - //SEG61 [27] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG66 [32] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta $400+$28+$28+$28+$28+$50+3,x - //SEG62 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG67 [33] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG63 [29] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuxx_neq_0_then_la1 + //SEG68 [34] if(*((const byte[]) main::msg#0 + (byte) main::i#1)!=(byte) 0) goto main::@3 -- pbuc1_derefidx_vbuxx_neq_0_then_la1 lda msg,x cmp #0 bne b3 jmp b1 msg: .text "raster lines@" } -//SEG64 utoa10w +//SEG69 utoa10w // Decimal utoa() without using multiply or divide // utoa10w(word zeropage(2) value, byte* zeropage(6) dst) utoa10w: { @@ -3129,30 +3159,30 @@ utoa10w: { .label digit = 4 .label dst = 6 .label bStarted = 5 - //SEG65 [31] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] - //SEG66 [31] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 + //SEG70 [36] phi from utoa10w to utoa10w::@1 [phi:utoa10w->utoa10w::@1] + //SEG71 [36] phi (byte*) utoa10w::dst#11 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50 [phi:utoa10w->utoa10w::@1#0] -- pbuz1=pbuc1 lda #<$400+$28+$28+$28+$28+$50 sta dst lda #>$400+$28+$28+$28+$28+$50 sta dst+1 - //SEG67 [31] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 + //SEG72 [36] phi (byte) utoa10w::bStarted#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#1] -- vbuz1=vbuc1 lda #0 sta bStarted - //SEG68 [31] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 + //SEG73 [36] phi (byte) utoa10w::digit#3 = (byte) 0 [phi:utoa10w->utoa10w::@1#2] -- vbuz1=vbuc1 sta digit - //SEG69 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy - //SEG70 [31] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuxx=vbuc1 + //SEG74 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#0 [phi:utoa10w->utoa10w::@1#3] -- register_copy + //SEG75 [36] phi (byte) utoa10w::i#2 = (byte) 0 [phi:utoa10w->utoa10w::@1#4] -- vbuxx=vbuc1 tax - //SEG71 [31] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] - //SEG72 [31] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy - //SEG73 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy - //SEG74 [31] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy - //SEG75 utoa10w::@1 + //SEG76 [36] phi from utoa10w::@6 to utoa10w::@1 [phi:utoa10w::@6->utoa10w::@1] + //SEG77 [36] phi (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#4 [phi:utoa10w::@6->utoa10w::@1#0] -- register_copy + //SEG78 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#7 [phi:utoa10w::@6->utoa10w::@1#1] -- register_copy + //SEG79 [36] phi (byte) utoa10w::i#2 = (byte) utoa10w::i#1 [phi:utoa10w::@6->utoa10w::@1#2] -- register_copy + //SEG80 utoa10w::@1 b1: - //SEG76 [32] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + //SEG81 [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG77 [33] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 + //SEG82 [38] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 tay lda UTOA10_SUB+1,y cmp value+1 @@ -3162,79 +3192,79 @@ utoa10w: { beq b2 !: bcc b2 - //SEG78 utoa10w::@3 - //SEG79 [34] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG83 utoa10w::@3 + //SEG84 [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG80 [35] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuaa_eq_0_then_la1 + //SEG85 [40] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG81 utoa10w::@4 - //SEG82 [36] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 + //SEG86 utoa10w::@4 + //SEG87 [41] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@7 -- vbuz1_eq_0_then_la1 lda bStarted cmp #0 beq b7 - //SEG83 utoa10w::@5 - //SEG84 [37] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG88 utoa10w::@5 + //SEG89 [42] *((byte*) utoa10w::dst#11) ← *((const byte[]) DIGITS#0 + (byte) utoa10w::digit#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy digit lda DIGITS,y ldy #0 sta (dst),y - //SEG85 [38] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 + //SEG90 [43] (byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#11 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG86 [39] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] - //SEG87 [39] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy - //SEG88 utoa10w::@7 + //SEG91 [44] phi from utoa10w::@4 utoa10w::@5 to utoa10w::@7 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7] + //SEG92 [44] phi (byte*) utoa10w::dst#7 = (byte*) utoa10w::dst#11 [phi:utoa10w::@4/utoa10w::@5->utoa10w::@7#0] -- register_copy + //SEG93 utoa10w::@7 b7: - //SEG89 [40] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] - //SEG90 [40] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 + //SEG94 [45] phi from utoa10w::@7 to utoa10w::@6 [phi:utoa10w::@7->utoa10w::@6] + //SEG95 [45] phi (byte) utoa10w::digit#7 = (byte) 0 [phi:utoa10w::@7->utoa10w::@6#0] -- vbuz1=vbuc1 lda #0 sta digit - //SEG91 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy - //SEG92 [40] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] - //SEG93 [40] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy - //SEG94 [40] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy - //SEG95 utoa10w::@6 + //SEG96 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#7 [phi:utoa10w::@7->utoa10w::@6#1] -- register_copy + //SEG97 [45] phi from utoa10w::@3 to utoa10w::@6 [phi:utoa10w::@3->utoa10w::@6] + //SEG98 [45] phi (byte) utoa10w::digit#7 = (byte) utoa10w::digit#3 [phi:utoa10w::@3->utoa10w::@6#0] -- register_copy + //SEG99 [45] phi (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#11 [phi:utoa10w::@3->utoa10w::@6#1] -- register_copy + //SEG100 utoa10w::@6 b6: - //SEG96 [41] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuxx=_inc_vbuxx + //SEG101 [46] (byte) utoa10w::i#1 ← ++ (byte) utoa10w::i#2 -- vbuxx=_inc_vbuxx inx - //SEG97 [42] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG102 [47] if((byte) utoa10w::i#1!=(byte) 8) goto utoa10w::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG98 utoa10w::@8 - //SEG99 [43] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuaa=_byte_vwuz1 + //SEG103 utoa10w::@8 + //SEG104 [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 -- vbuaa=_byte_vwuz1 lda value - //SEG100 [44] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG105 [49] *((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS#0 + (byte~) utoa10w::$0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda DIGITS,y ldy #0 sta (dst),y - //SEG101 [45] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz1 + //SEG106 [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG102 [46] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG107 [51] *((byte*) utoa10w::dst#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (dst),y - //SEG103 utoa10w::@return - //SEG104 [47] return + //SEG108 utoa10w::@return + //SEG109 [52] return rts - //SEG105 utoa10w::@2 + //SEG110 utoa10w::@2 b2: - //SEG106 [48] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuxx + //SEG111 [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL#0 + (byte) utoa10w::i#2) -- vbuz1=vbuz1_plus_pbuc1_derefidx_vbuxx lda UTOA10_VAL,x clc adc digit sta digit - //SEG107 [49] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + //SEG112 [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG108 [50] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa + //SEG113 [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word[]) UTOA10_SUB#0 + (byte~) utoa10w::$9) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa tay sec lda value @@ -3243,149 +3273,149 @@ utoa10w: { lda value+1 sbc UTOA10_SUB+1,y sta value+1 - //SEG109 [31] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] - //SEG110 [31] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 + //SEG114 [36] phi from utoa10w::@2 to utoa10w::@1 [phi:utoa10w::@2->utoa10w::@1] + //SEG115 [36] phi (byte) utoa10w::bStarted#2 = (byte) 1 [phi:utoa10w::@2->utoa10w::@1#0] -- vbuz1=vbuc1 lda #1 sta bStarted - //SEG111 [31] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy - //SEG112 [31] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy + //SEG116 [36] phi (byte) utoa10w::digit#3 = (byte) utoa10w::digit#1 [phi:utoa10w::@2->utoa10w::@1#1] -- register_copy + //SEG117 [36] phi (word) utoa10w::value#10 = (word) utoa10w::value#1 [phi:utoa10w::@2->utoa10w::@1#2] -- register_copy jmp b1 } -//SEG113 utoa16w +//SEG118 utoa16w // Hexadecimal utoa() for an unsigned int (16bits) // utoa16w(word zeropage(8) value, byte* zeropage($a) dst) utoa16w: { - .label value = 8 .label dst = $a - //SEG114 [52] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 + .label value = 8 + //SEG119 [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 - //SEG115 [53] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG120 [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG116 [54] call utoa16n - //SEG117 [72] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] - //SEG118 [72] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 + //SEG121 [59] call utoa16n + //SEG122 [77] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + //SEG123 [77] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 ldx #0 - //SEG119 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + //SEG124 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n - //SEG120 [55] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 - //SEG121 utoa16w::@1 - //SEG122 [56] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 - //SEG123 [57] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 + //SEG125 [60] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 + //SEG126 utoa16w::@1 + //SEG127 [61] (byte) utoa16w::started#1 ← (byte) utoa16n::return#0 + //SEG128 [62] (byte~) utoa16w::$4 ← > (word) utoa16w::value#5 -- vbuaa=_hi_vwuz1 lda value+1 - //SEG124 [58] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 + //SEG129 [63] (byte) utoa16n::nybble#1 ← (byte~) utoa16w::$4 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG125 [59] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 - //SEG126 [60] call utoa16n - //SEG127 [72] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] - //SEG128 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - //SEG129 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + //SEG130 [64] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 + //SEG131 [65] call utoa16n + //SEG132 [77] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + //SEG133 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + //SEG134 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n - //SEG130 [61] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 - //SEG131 utoa16w::@2 - //SEG132 [62] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 - //SEG133 [63] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 + //SEG135 [66] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 + //SEG136 utoa16w::@2 + //SEG137 [67] (byte) utoa16w::started#2 ← (byte) utoa16n::return#1 + //SEG138 [68] (byte~) utoa16w::$8 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 lda value - //SEG134 [64] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG139 [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$8 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG135 [65] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 - //SEG136 [66] call utoa16n - //SEG137 [72] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] - //SEG138 [72] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - //SEG139 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + //SEG140 [70] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 + //SEG141 [71] call utoa16n + //SEG142 [77] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + //SEG143 [77] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + //SEG144 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n - //SEG140 utoa16w::@3 - //SEG141 [67] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 + //SEG145 utoa16w::@3 + //SEG146 [72] (byte~) utoa16w::$12 ← < (word) utoa16w::value#5 -- vbuaa=_lo_vwuz1 lda value - //SEG142 [68] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 + //SEG147 [73] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$12 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG143 [69] call utoa16n - //SEG144 [72] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] - //SEG145 [72] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 + //SEG148 [74] call utoa16n + //SEG149 [77] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + //SEG150 [77] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 ldx #1 - //SEG146 [72] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + //SEG151 [77] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n - //SEG147 utoa16w::@4 - //SEG148 [70] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG152 utoa16w::@4 + //SEG153 [75] *((byte*) utoa16w::dst#5) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (dst),y - //SEG149 utoa16w::@return - //SEG150 [71] return + //SEG154 utoa16w::@return + //SEG155 [76] return rts } -//SEG151 utoa16n +//SEG156 utoa16n // Hexadecimal utoa() for a single nybble // utoa16n(byte register(A) nybble, byte register(X) started) utoa16n: { - //SEG152 [73] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 + //SEG157 [78] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG153 [75] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] - //SEG154 [75] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 + //SEG158 [80] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + //SEG159 [80] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 ldx #1 - //SEG155 [74] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] - //SEG156 utoa16n::@3 - //SEG157 [75] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] - //SEG158 [75] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy - //SEG159 utoa16n::@1 + //SEG160 [79] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + //SEG161 utoa16n::@3 + //SEG162 [80] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + //SEG163 [80] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + //SEG164 utoa16n::@1 b1: - //SEG160 [76] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 + //SEG165 [81] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn - //SEG161 utoa16n::@2 - //SEG162 [77] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + //SEG166 utoa16n::@2 + //SEG167 [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 sta (utoa16w.dst),y - //SEG163 [78] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 + //SEG168 [83] *(&(byte*) utoa16w::dst#5) ← ++ *(&(byte*) utoa16w::dst#5) -- _deref_pptc1=_inc__deref_pptc1 inc utoa16w.dst bne !+ inc utoa16w.dst+1 !: - //SEG164 utoa16n::@return + //SEG169 utoa16n::@return breturn: - //SEG165 [79] return + //SEG170 [84] return rts } -//SEG166 cls +//SEG171 cls cls: { .label screen = $400 .label sc = $c - //SEG167 [81] phi from cls to cls::@1 [phi:cls->cls::@1] - //SEG168 [81] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 + //SEG172 [86] phi from cls to cls::@1 [phi:cls->cls::@1] + //SEG173 [86] phi (byte*) cls::sc#2 = (const byte*) cls::screen#0 [phi:cls->cls::@1#0] -- pbuz1=pbuc1 lda #screen sta sc+1 - //SEG169 [81] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] - //SEG170 [81] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy - //SEG171 cls::@1 + //SEG174 [86] phi from cls::@1 to cls::@1 [phi:cls::@1->cls::@1] + //SEG175 [86] phi (byte*) cls::sc#2 = (byte*) cls::sc#1 [phi:cls::@1->cls::@1#0] -- register_copy + //SEG176 cls::@1 b1: - //SEG172 [82] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [87] *((byte*) cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG173 [83] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [88] (byte*) cls::sc#1 ← ++ (byte*) cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG174 [84] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG179 [89] if((byte*) cls::sc#1!=(const byte*) cls::screen#0+(word) $3e7+(byte) 1) goto cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>screen+$3e7+1 bne b1 lda sc cmp #$400 sta screen+1 txa sta textid - sta text - sta text+1 b1: jsr nexttext b2: diff --git a/src/test/ref/pointer-pointer-2.cfg b/src/test/ref/pointer-pointer-2.cfg index 27bc82018..b984181ba 100644 --- a/src/test/ref/pointer-pointer-2.cfg +++ b/src/test/ref/pointer-pointer-2.cfg @@ -8,13 +8,13 @@ @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] phi() + [4] (byte*) main::text#0 ← (byte*) 0 to:main::@1 main::@1: scope:[main] from main main::@4 [5] (byte) main::i#5 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [5] (byte*) main::screen#4 ← phi( main/(byte*) 1024 main::@4/(byte*) main::screen#2 ) [5] (byte) textid#11 ← phi( main/(byte) 0 main::@4/(byte) textid#13 ) - [5] (byte*) main::text#2 ← phi( main/(byte*) 0 main::@4/(byte*) main::text#3 ) + [5] (byte*) main::text#2 ← phi( main/(byte*) main::text#0 main::@4/(byte*) main::text#3 ) [6] call nexttext to:main::@2 main::@2: scope:[main] from main::@1 main::@3 diff --git a/src/test/ref/pointer-pointer-2.log b/src/test/ref/pointer-pointer-2.log index 1edebd6ef..7eb4e193b 100644 --- a/src/test/ref/pointer-pointer-2.log +++ b/src/test/ref/pointer-pointer-2.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) main::$0 ← & (byte*) main::text Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@6 @@ -231,7 +232,6 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [5] (byte**) nexttext::textp#0 ← & (byte*) main::text#2 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) main::screen#0 = (byte*) 1024 -Constant (const byte*) main::text#0 = (byte*) 0 Constant (const byte) main::i#0 = 0 Constant (const byte**) nexttext::textp#0 = &main::text#2 Constant (const byte[]) text1#0 = $0 @@ -247,12 +247,10 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $15 Successful SSA optimization PassNFinalizeNumberTypeConversions Inlining constant with var siblings (const byte*) main::screen#0 -Inlining constant with var siblings (const byte*) main::text#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) textid#15 Constant inlined main::screen#0 = (byte*) 1024 Constant inlined main::i#0 = (byte) 0 -Constant inlined main::text#0 = (byte*) 0 Constant inlined textid#15 = (byte) 0 Constant inlined $0 = (const byte[]) text1#0 Constant inlined $1 = (const byte[]) text2#0 @@ -263,20 +261,20 @@ Adding NOP phi() at start of @1 Adding NOP phi() at start of @2 Adding NOP phi() at start of @3 Adding NOP phi() at start of @end -Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:3 -Calls in [main] to nexttext:8 +Calls in [main] to nexttext:9 Created 6 initial phi equivalence classes -Coalesced [9] main::text#9 ← main::text#2 -Coalesced [10] main::screen#9 ← main::screen#4 -Coalesced (already) [16] main::text#7 ← main::text#3 -Coalesced [17] textid#19 ← textid#13 -Coalesced (already) [18] main::screen#7 ← main::screen#2 -Coalesced [19] main::i#7 ← main::i#1 -Coalesced [23] main::text#8 ← main::text#1 -Coalesced [24] main::screen#8 ← main::screen#1 +Coalesced [7] main::text#7 ← main::text#0 +Coalesced [10] main::text#10 ← main::text#2 +Coalesced [11] main::screen#9 ← main::screen#4 +Coalesced (already) [17] main::text#8 ← main::text#3 +Coalesced [18] textid#19 ← textid#13 +Coalesced (already) [19] main::screen#7 ← main::screen#2 +Coalesced [20] main::i#7 ← main::i#1 +Coalesced [24] main::text#9 ← main::text#1 +Coalesced [25] main::screen#8 ← main::screen#1 Coalesced down to 4 phi equivalence classes Culled Empty Block (label) @1 Culled Empty Block (label) @3 @@ -287,7 +285,6 @@ Renumbering block nexttext::@3 to nexttext::@2 Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end -Adding NOP phi() at start of main FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -300,13 +297,13 @@ FINAL CONTROL FLOW GRAPH @end: scope:[] from @1 [3] phi() main: scope:[main] from @1 - [4] phi() + [4] (byte*) main::text#0 ← (byte*) 0 to:main::@1 main::@1: scope:[main] from main main::@4 [5] (byte) main::i#5 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [5] (byte*) main::screen#4 ← phi( main/(byte*) 1024 main::@4/(byte*) main::screen#2 ) [5] (byte) textid#11 ← phi( main/(byte) 0 main::@4/(byte) textid#13 ) - [5] (byte*) main::text#2 ← phi( main/(byte*) 0 main::@4/(byte*) main::text#3 ) + [5] (byte*) main::text#2 ← phi( main/(byte*) main::text#0 main::@4/(byte*) main::text#3 ) [6] call nexttext to:main::@2 main::@2: scope:[main] from main::@1 main::@3 @@ -352,8 +349,9 @@ VARIABLE REGISTER WEIGHTS (byte*) main::screen#2 65.0 (byte*) main::screen#4 11.0 (byte*) main::text +(byte*) main::text#0 4.0 (byte*) main::text#1 202.0 -(byte*) main::text#2 11.0 +(byte*) main::text#2 12.0 (byte*) main::text#3 70.99999999999999 (void()) nexttext((byte**) nexttext::textp) (byte~) nexttext::$0 2.0 @@ -365,18 +363,18 @@ VARIABLE REGISTER WEIGHTS (byte) textid#13 1.0 Initial phi equivalence classes -[ main::text#2 main::text#3 main::text#1 ] +[ main::text#2 main::text#0 main::text#3 main::text#1 ] [ textid#11 textid#13 ] [ main::screen#4 main::screen#2 main::screen#1 ] [ main::i#5 main::i#1 ] Added variable nexttext::$0 to zero page equivalence class [ nexttext::$0 ] Complete equivalence classes -[ main::text#2 main::text#3 main::text#1 ] +[ main::text#2 main::text#0 main::text#3 main::text#1 ] [ textid#11 textid#13 ] [ main::screen#4 main::screen#2 main::screen#1 ] [ main::i#5 main::i#1 ] [ nexttext::$0 ] -Allocated zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] +Allocated zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] Allocated zp ZP_BYTE:4 [ textid#11 textid#13 ] Allocated zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] Allocated zp ZP_BYTE:7 [ main::i#5 main::i#1 ] @@ -399,19 +397,22 @@ b1_from_bbegin: //SEG5 @1 b1: //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG8 @end bend: -//SEG10 main +//SEG9 main main: { - .label screen = 5 .label text = 2 + .label screen = 5 .label i = 7 + //SEG10 [4] (byte*) main::text#0 ← (byte*) 0 -- pbuz1=pbuc1 + lda #<0 + sta text + lda #>0 + sta text+1 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG12 [5] phi (byte) main::i#5 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 @@ -425,11 +426,7 @@ main: { //SEG14 [5] phi (byte) textid#11 = (byte) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #0 sta textid - //SEG15 [5] phi (byte*) main::text#2 = (byte*) 0 [phi:main->main::@1#3] -- pbuz1=pbuc1 - lda #<0 - sta text - lda #>0 - sta text+1 + //SEG15 [5] phi (byte*) main::text#2 = (byte*) main::text#0 [phi:main->main::@1#3] -- register_copy jmp b1 //SEG16 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: @@ -529,6 +526,7 @@ nexttext: { text2: .text "rex @" REGISTER UPLIFT POTENTIAL REGISTERS +Statement [4] (byte*) main::text#0 ← (byte*) 0 [ main::text#0 ] ( main:2 [ main::text#0 ] ) always clobbers reg byte a Statement [8] if(*((byte*) main::text#3)!=(byte) '@') goto main::@3 [ main::i#5 main::text#3 textid#13 main::screen#2 ] ( main:2 [ main::i#5 main::text#3 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::i#5 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::i#5 main::i#1 ] @@ -538,27 +536,28 @@ Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text#3) [ main::i#5 Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#11 nexttext::$0 ] ) always clobbers reg byte a Statement [18] *((const byte**) nexttext::textp#0) ← (const byte[]) text2#0 [ textid#13 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a Statement [20] *((const byte**) nexttext::textp#0) ← (const byte[]) text1#0 [ textid#13 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a +Statement [4] (byte*) main::text#0 ← (byte*) 0 [ main::text#0 ] ( main:2 [ main::text#0 ] ) always clobbers reg byte a Statement [8] if(*((byte*) main::text#3)!=(byte) '@') goto main::@3 [ main::i#5 main::text#3 textid#13 main::screen#2 ] ( main:2 [ main::i#5 main::text#3 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text#3) [ main::i#5 main::text#3 textid#13 main::screen#2 ] ( main:2 [ main::i#5 main::text#3 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#11 nexttext::$0 ] ) always clobbers reg byte a Statement [18] *((const byte**) nexttext::textp#0) ← (const byte[]) text2#0 [ textid#13 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a Statement [20] *((const byte**) nexttext::textp#0) ← (const byte[]) text1#0 [ textid#13 ] ( main:2::nexttext:6 [ main::text#2 main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a -Potential registers zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] : zp ZP_WORD:2 , +Potential registers zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_BYTE:4 [ textid#11 textid#13 ] : zp ZP_BYTE:4 , reg byte x , Potential registers zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] : zp ZP_WORD:5 , Potential registers zp ZP_BYTE:7 [ main::i#5 main::i#1 ] : zp ZP_BYTE:7 , reg byte x , Potential registers zp ZP_BYTE:8 [ nexttext::$0 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 284: zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] 177: zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] 19.64: zp ZP_BYTE:7 [ main::i#5 main::i#1 ] +Uplift Scope [main] 289: zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] 177: zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] 19.64: zp ZP_BYTE:7 [ main::i#5 main::i#1 ] Uplift Scope [] 8.5: zp ZP_BYTE:4 [ textid#11 textid#13 ] Uplift Scope [nexttext] 2: zp ZP_BYTE:8 [ nexttext::$0 ] -Uplifting [main] best 6712 combination zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] reg byte x [ main::i#5 main::i#1 ] -Uplifting [] best 6712 combination zp ZP_BYTE:4 [ textid#11 textid#13 ] -Uplifting [nexttext] best 6706 combination reg byte a [ nexttext::$0 ] +Uplifting [main] best 6622 combination zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] reg byte x [ main::i#5 main::i#1 ] +Uplifting [] best 6622 combination zp ZP_BYTE:4 [ textid#11 textid#13 ] +Uplifting [nexttext] best 6616 combination reg byte a [ nexttext::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ textid#11 textid#13 ] -Uplifting [] best 6706 combination zp ZP_BYTE:4 [ textid#11 textid#13 ] +Uplifting [] best 6616 combination zp ZP_BYTE:4 [ textid#11 textid#13 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -577,18 +576,21 @@ b1_from_bbegin: //SEG5 @1 b1: //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG8 @end bend: -//SEG10 main +//SEG9 main main: { - .label screen = 5 .label text = 2 + .label screen = 5 + //SEG10 [4] (byte*) main::text#0 ← (byte*) 0 -- pbuz1=pbuc1 + lda #<0 + sta text + lda #>0 + sta text+1 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG12 [5] phi (byte) main::i#5 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -601,11 +603,7 @@ main: { //SEG14 [5] phi (byte) textid#11 = (byte) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #0 sta textid - //SEG15 [5] phi (byte*) main::text#2 = (byte*) 0 [phi:main->main::@1#3] -- pbuz1=pbuc1 - lda #<0 - sta text - lda #>0 - sta text+1 + //SEG15 [5] phi (byte*) main::text#2 = (byte*) main::text#0 [phi:main->main::@1#3] -- register_copy jmp b1 //SEG16 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: @@ -710,16 +708,14 @@ Removing instruction jmp breturn Removing instruction jmp b2 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction lda #0 with TXA -Removing instruction lda #<0 Removing instruction lda #>0 +Replacing instruction lda #0 with TXA Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b4 with b1 Replacing label b2_from_b3 with b2 Removing instruction b1_from_bbegin: Removing instruction b1: -Removing instruction main_from_b1: Removing instruction bend_from_b1: Removing instruction b1_from_b4: Removing instruction b2_from_b1: @@ -738,6 +734,7 @@ Replacing jump to rts with rts in jmp breturn Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction ldx #0 with TAX Removing instruction bbegin: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination @@ -760,8 +757,9 @@ FINAL SYMBOL TABLE (byte*) main::screen#2 screen zp ZP_WORD:5 65.0 (byte*) main::screen#4 screen zp ZP_WORD:5 11.0 (byte*) main::text +(byte*) main::text#0 text zp ZP_WORD:2 4.0 (byte*) main::text#1 text zp ZP_WORD:2 202.0 -(byte*) main::text#2 text zp ZP_WORD:2 11.0 +(byte*) main::text#2 text zp ZP_WORD:2 12.0 (byte*) main::text#3 text zp ZP_WORD:2 70.99999999999999 (void()) nexttext((byte**) nexttext::textp) (byte~) nexttext::$0 reg byte a 2.0 @@ -778,7 +776,7 @@ FINAL SYMBOL TABLE (byte) textid#11 textid zp ZP_BYTE:4 7.5 (byte) textid#13 textid zp ZP_BYTE:4 1.0 -zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] +zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] zp ZP_BYTE:4 [ textid#11 textid#13 ] zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] reg byte x [ main::i#5 main::i#1 ] @@ -786,7 +784,7 @@ reg byte a [ nexttext::$0 ] FINAL ASSEMBLER -Score: 5761 +Score: 5709 //SEG0 File Comments // Tests pointer to pointer in a more complex setup @@ -800,16 +798,19 @@ Score: 5761 //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] //SEG5 @1 //SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -//SEG9 @end -//SEG10 main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - .label screen = 5 .label text = 2 + .label screen = 5 + //SEG10 [4] (byte*) main::text#0 ← (byte*) 0 -- pbuz1=pbuc1 + lda #<0 + sta text + sta text+1 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] //SEG12 [5] phi (byte) main::i#5 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + tax //SEG13 [5] phi (byte*) main::screen#4 = (byte*) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta screen @@ -818,9 +819,7 @@ main: { //SEG14 [5] phi (byte) textid#11 = (byte) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 txa sta textid - //SEG15 [5] phi (byte*) main::text#2 = (byte*) 0 [phi:main->main::@1#3] -- pbuz1=pbuc1 - sta text - sta text+1 + //SEG15 [5] phi (byte*) main::text#2 = (byte*) main::text#0 [phi:main->main::@1#3] -- register_copy //SEG16 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] //SEG17 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG18 [5] phi (byte*) main::screen#4 = (byte*) main::screen#2 [phi:main::@4->main::@1#1] -- register_copy diff --git a/src/test/ref/pointer-pointer-2.sym b/src/test/ref/pointer-pointer-2.sym index d52c58270..babe525fa 100644 --- a/src/test/ref/pointer-pointer-2.sym +++ b/src/test/ref/pointer-pointer-2.sym @@ -15,8 +15,9 @@ (byte*) main::screen#2 screen zp ZP_WORD:5 65.0 (byte*) main::screen#4 screen zp ZP_WORD:5 11.0 (byte*) main::text +(byte*) main::text#0 text zp ZP_WORD:2 4.0 (byte*) main::text#1 text zp ZP_WORD:2 202.0 -(byte*) main::text#2 text zp ZP_WORD:2 11.0 +(byte*) main::text#2 text zp ZP_WORD:2 12.0 (byte*) main::text#3 text zp ZP_WORD:2 70.99999999999999 (void()) nexttext((byte**) nexttext::textp) (byte~) nexttext::$0 reg byte a 2.0 @@ -33,7 +34,7 @@ (byte) textid#11 textid zp ZP_BYTE:4 7.5 (byte) textid#13 textid zp ZP_BYTE:4 1.0 -zp ZP_WORD:2 [ main::text#2 main::text#3 main::text#1 ] +zp ZP_WORD:2 [ main::text#2 main::text#0 main::text#3 main::text#1 ] zp ZP_BYTE:4 [ textid#11 textid#13 ] zp ZP_WORD:5 [ main::screen#4 main::screen#2 main::screen#1 ] reg byte x [ main::i#5 main::i#1 ] diff --git a/src/test/ref/pointer-pointer-3.log b/src/test/ref/pointer-pointer-3.log index bd9496a89..3d736ec3f 100644 --- a/src/test/ref/pointer-pointer-3.log +++ b/src/test/ref/pointer-pointer-3.log @@ -1,3 +1,5 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) main::$0 ← & (byte*) screen +Setting inferred volatile on symbol affected by address-of (byte**~) main::$2 ← & (byte*) screen Adding pointer type conversion cast (byte*) screen in (byte*) screen ← (number) $400 Adding pointer type conversion cast (byte*) screen1 in (byte*) screen1 ← (number) $400 Adding pointer type conversion cast (byte*) screen2 in (byte*) screen2 ← (number~) $0 @@ -207,7 +209,6 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ setscreen::val#2 ] -Added variable screen#0 to zero page equivalence class [ screen#0 ] Complete equivalence classes [ setscreen::val#2 ] [ screen#0 ] diff --git a/src/test/ref/ptrptr-optimize-0.log b/src/test/ref/ptrptr-optimize-0.log index 2dba9ee16..79b08e4d3 100644 --- a/src/test/ref/ptrptr-optimize-0.log +++ b/src/test/ref/ptrptr-optimize-0.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) main::$0 ← & (byte*) main::screen Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 CONTROL FLOW GRAPH SSA @@ -86,7 +87,6 @@ VARIABLE REGISTER WEIGHTS (byte*) main::screen#0 20.0 Initial phi equivalence classes -Added variable main::screen#0 to zero page equivalence class [ main::screen#0 ] Complete equivalence classes [ main::screen#0 ] Allocated zp ZP_WORD:2 [ main::screen#0 ] diff --git a/src/test/ref/ptrptr-optimize-1.log b/src/test/ref/ptrptr-optimize-1.log index 0da7c6db4..dd985e946 100644 --- a/src/test/ref/ptrptr-optimize-1.log +++ b/src/test/ref/ptrptr-optimize-1.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) main::$0 ← & (byte*) main::screen Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 Culled Empty Block (label) @1 @@ -154,7 +155,6 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ sub::ch#2 ] -Added variable main::screen#0 to zero page equivalence class [ main::screen#0 ] Complete equivalence classes [ sub::ch#2 ] [ main::screen#0 ] diff --git a/src/test/ref/ptrptr-optimize-2.log b/src/test/ref/ptrptr-optimize-2.log index 6b4dc23da..6c5305ff0 100644 --- a/src/test/ref/ptrptr-optimize-2.log +++ b/src/test/ref/ptrptr-optimize-2.log @@ -1,3 +1,5 @@ +Setting inferred volatile on symbol affected by address-of (byte**~) main::$0 ← & (byte*) main::screen +Setting inferred volatile on symbol affected by address-of (byte**~) main::$2 ← & (byte*) main::screen Adding pointer type conversion cast (byte*) main::screen in (byte*) main::screen ← (number) $400 Culled Empty Block (label) @1 @@ -153,7 +155,6 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ sub::ch#2 ] -Added variable main::screen#0 to zero page equivalence class [ main::screen#0 ] Complete equivalence classes [ sub::ch#2 ] [ main::screen#0 ] diff --git a/src/test/ref/sizeof-expr.log b/src/test/ref/sizeof-expr.log index c68c0cd6d..3d09655a8 100644 --- a/src/test/ref/sizeof-expr.log +++ b/src/test/ref/sizeof-expr.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (word*~) main::$0 ← & (word) main::w Resolving sizeof() (byte~) main::$3 ← sizeof (byte) main::idx Resolving sizeof() (byte~) main::$5 ← sizeof (byte) main::b Resolving sizeof() (byte~) main::$8 ← sizeof (number~) main::$7 diff --git a/src/test/ref/struct-ptr-12-ref.log b/src/test/ref/struct-ptr-12-ref.log index 0bde36aef..f2145e275 100644 --- a/src/test/ref/struct-ptr-12-ref.log +++ b/src/test/ref/struct-ptr-12-ref.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (word*~) main::$0 ← & (word) main::p Identified literal word (word) { 2, 3 } in (word) main::p ← { (number) 2, (number) 3 } Adding pointer type conversion cast (byte*) main::SCREEN in (byte*) main::SCREEN ← (number) $400 @@ -57,10 +58,11 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word) main::p#0 = (word~) main::$3 +Alias candidate removed (volatile)(word) main::p#0 = (word~) main::$3 Alias (word*) main::q#0 = (word*~) main::$0 Successful SSA optimization Pass2AliasElimination -Constant right-side identified [0] (word) main::p#0 ← (byte) 2 w= (byte) 3 +Alias candidate removed (volatile)(word) main::p#0 = (word~) main::$3 +Constant right-side identified [0] (word~) main::$3 ← (byte) 2 w= (byte) 3 Constant right-side identified [2] (word*) main::q#0 ← & (word) main::p#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word*) main::q#0 = &main::p#0 @@ -68,11 +70,11 @@ Constant (const byte*) main::SCREEN#0 = (byte*) 1024 Successful SSA optimization Pass2ConstantIdentification Simplifying expression containing zero main::SCREEN#0 in [6] *((const byte*) main::SCREEN#0 + (byte) 0) ← (byte~) main::$1 Successful SSA optimization PassNSimplifyExpressionWithZero -Adding number conversion cast (unumber) 2*$100+3 in (word) main::p#0 ← (byte) 2*(number) $100+(byte) 3 -Adding number conversion cast (unumber) 2*$100 in (word) main::p#0 ← ((unumber)) (byte) 2*(number) $100+(byte) 3 -Adding number conversion cast (unumber) $100 in (word) main::p#0 ← ((unumber)) (unumber)(byte) 2*(number) $100+(byte) 3 +Adding number conversion cast (unumber) 2*$100+3 in (word~) main::$3 ← (byte) 2*(number) $100+(byte) 3 +Adding number conversion cast (unumber) 2*$100 in (word~) main::$3 ← ((unumber)) (byte) 2*(number) $100+(byte) 3 +Adding number conversion cast (unumber) $100 in (word~) main::$3 ← ((unumber)) (unumber)(byte) 2*(number) $100+(byte) 3 Successful SSA optimization PassNAddNumberTypeConversions -Inlining cast (word) main::p#0 ← (unumber)(unumber)(byte) 2*(unumber)(number) $100+(byte) 3 +Inlining cast (word~) main::$3 ← (unumber)(unumber)(byte) 2*(unumber)(number) $100+(byte) 3 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast (unumber)(byte) 2*(unumber)(number) $100+(byte) 3 Simplifying constant integer cast (byte) 2*(unumber)(number) $100 @@ -80,6 +82,11 @@ Simplifying constant integer cast $100 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $100 Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias candidate removed (volatile)(word) main::p#0 = (word~) main::$3 +Constant (const word) main::$3 = 2*$100+3 +Successful SSA optimization Pass2ConstantIdentification +Constant inlined main::$3 = (byte) 2*(word) $100+(byte) 3 +Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in *(main::SCREEN#0+1) Successful SSA optimization Pass2ConstantAdditionElimination Adding NOP phi() at start of @begin @@ -128,7 +135,6 @@ VARIABLE REGISTER WEIGHTS (word*) main::q Initial phi equivalence classes -Added variable main::p#0 to zero page equivalence class [ main::p#0 ] Added variable main::$1 to zero page equivalence class [ main::$1 ] Added variable main::$2 to zero page equivalence class [ main::$2 ] Complete equivalence classes diff --git a/src/test/ref/struct-ptr-12.log b/src/test/ref/struct-ptr-12.log index be7c9b001..e6756bb40 100644 --- a/src/test/ref/struct-ptr-12.log +++ b/src/test/ref/struct-ptr-12.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (struct Point*~) main::$0 ← & (struct Point) main::p Created struct value member variable (byte) main::p_x Created struct value member variable (byte) main::p_y Converted struct value to member variables (struct Point) main::p diff --git a/src/test/ref/struct-ptr-14.log b/src/test/ref/struct-ptr-14.log index 0c4f159e9..54c503c28 100644 --- a/src/test/ref/struct-ptr-14.log +++ b/src/test/ref/struct-ptr-14.log @@ -1,3 +1,4 @@ +Setting inferred volatile on symbol affected by address-of (struct Point*~) main::$0 ← & (struct Point) main::p Created struct value member variable (byte) main::p_x Created struct value member variable (byte) main::p_y Converted struct value to member variables (struct Point) main::p