Beispiel #1
0
def easy1(challenge, student, code, completed):
    a = Assembler()
    rom, errors = a.assemble( """%s
                              .org $C000
                              .define PLAYER_X=$200
                              .define PLAYER_Y=$201
                              %s
                              forever: jmp forever
                              .org $fffa
                              .dw $C000
                              .dw $C000
                              .dw $C000
                              """%(memmap, code) )
    if errors: return None
    
    counts = []
    for test in [[0],[1],[2],[3],[4],[5],[6],[7],[4,5],[4,6],[4,7],[5,7],[4,5,6,7]]:
        e = Emulator( rom[0x10:0x4010], rom[0x4010:] )
        x = 74
        y = 32
        e.write(x,0x200)
        e.write(y,0x201)
        for t in test:
            e.controller(1, t)
        if 4 in test: y-=1
        if 5 in test: y+=1
        if 6 in test: x-=1
        if 7 in test: x+=1
        counts.append( run( e, 0x100 ) )
        if e.read(0x200) != x or e.read(0x201) != y:
            return None
    return rom_size(rom), sum(counts)/len(counts)
Beispiel #2
0
def barcamp3(challenge, student, code, completed):
    a = Assembler()
    
    preamble = ".org $C000\n.define PADDLE_1Y=$204\n"
    postamble = "\nforever:\n jmp forever\n.org $fffa\n.dw $C000\n.dw $C000\n.dw $C000"
    
    rom, errors = a.assemble( preamble+code + postamble )
    if errors: None
    for test in [[0],[4],[5],[4,3]]:
        e = Emulator( rom[0x10:0x4010], rom[0x4010:] )
        for t in test: e.controller(1,t)
        for i in range(0x100):
            e.step()
            if e.last_op == 0x60: break
        if 4 in test and e.read(0x204) != 1: return None
        if 5 in test and e.read(0x204) != 0xff: return None
    return rom_size(rom), 100
Beispiel #3
0
def barcamp3(challenge, student, code, completed):
    a = Assembler()

    preamble = ".org $C000\n.define PADDLE_1Y=$204\n"
    postamble = "\nforever:\n jmp forever\n.org $fffa\n.dw $C000\n.dw $C000\n.dw $C000"

    rom, errors = a.assemble(preamble + code + postamble)
    if errors: None
    for test in [[0], [4], [5], [4, 3]]:
        e = Emulator(rom[0x10:0x4010], rom[0x4010:])
        for t in test:
            e.controller(1, t)
        for i in range(0x100):
            e.step()
            if e.last_op == 0x60: break
        if 4 in test and e.read(0x204) != 1: return None
        if 5 in test and e.read(0x204) != 0xff: return None
    return rom_size(rom), 100