from gbso.cpu.insn import * from gbso.cpu.regs import R8, R16 from gbso.optimize import ( DEFAULT_PROB_INSN, DEFAULT_PROB_INSN_UNUSED, DEFAULT_PROB_OPCODE, DEFAULT_PROB_OPERAND, DEFAULT_PROB_SWAP, optimize, ) from gbso.program.program import Program from gbso.program.mutate import mutate_program rLCDC = 0xFF40 rIE = 0xFFFF IEF_VBLANK = 1 << 0 prgm = Program( insns=[ LD_R_N8(R8.A, 12), LD_RR_NN(R16.HL, rLCDC), RES_N_HL(7), RES_N_HL(2), LD_RR_NN(R16.HL, rIE), LD_HL_N(IEF_VBLANK), ], ) optimized_prgm = optimize(prgm) optimized_prgm.display() for _ in range(10): prgm = mutate_program( prgm, prob_opcode=DEFAULT_PROB_OPCODE, prob_operand=DEFAULT_PROB_OPERAND, prob_swap=DEFAULT_PROB_SWAP, prob_insn=DEFAULT_PROB_INSN, prob_insn_unused=DEFAULT_PROB_INSN_UNUSED, ) prgm.display()