Page 1 of 4 123 ... LastLast
Results 1 to 10 of 32

Thread: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

  1. #1
    Wiremode Helper Techni's Avatar
    Join Date
    Jul 2008
    Posts
    968
    Blog Entries
    1

    Default Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    DUPE: Attachment 8267

    After hitting a roadblock on my GB emulator I decided to start a bit lower, a Chip 8 Emulator coded entirely in E2, runs 100% without unlimited 1. Originally, like the GB emulator this was merely meant to be a proof of concept but after writing it, debugging it and optimising it I've actually got it to more or less 100% speed of a real Chip 8, and a lot of games are not only fully playable but pretty damn fun.

    Chip 8 is essentially a virtual machine developed for a few computers back in the 1970's. Here are a few specifications:
    4KB of Addressable memory, 0x0 to 0x1FF are reserved but can be used for fonts.
    32x64 monocolour display
    16 8bit registers
    2 12bit registers
    a 12bit wide stack
    35 16 bit instructions

    More info: CHIP-8 - Wikipedia, the free encyclopedia

    Input is realised with the numpad currently, the Chip-8 has 16 input keys and each game uses them different, I'll end up adding customised controls for each game but not now. The flickering is more-or-less inherent to Chip 8 and the digital screen just makes it worse but playing with the timers might calm it down, I'll have to see.

    Sound is fully emulated
    Memory and Stack are fully emulated
    Video is fully emulated
    All registers and all but one opcode are fully emulated
    Input is fully emulated

    You can switch between games by typing !load gamename. Here's a list of game names and any relevent information. Likewise there are several demos for testing the Chip 8 emulator and displaying its capabilities.

    Arcade Games:
    Pong #Works perfectly 2 Player
    Pong2 #Works perfectly 2 player
    Pacman #Wierd ass controls but works perfectly
    Astrododge #Works perfectly
    Tetris #Works perfectly
    Space invaders# Works perfectly
    Blitz # Works perfectly
    Worm #Works perfectly
    Vbrix #Works perfectly
    Tank #Works perfectly

    SYZYGY #Works perfectly but really boring play Worm instead
    brix #Works but meh
    WIPEOFF #Works but I don't understand the point, play brix or vbrix
    Missile #Works but boring
    UFO #Works but no idea what you're supposed to do
    VERS #2 player, works fine, but lame gameplay

    Demos/Test roms:
    Pic
    IBM
    zero
    sirpinski
    maze
    test

    Puzzle games:
    Rush Hour
    Hidden
    TicTac
    puzzle15
    puzzle
    connect4
    guess
    KALEID
    Merlin

    All Roms are contained within the E2 and are in the public domain, there are no legal issues.

    Video:




    Pictures:

















    E2 Code, to use wire the Screen to a digital screen and the Pad to a wired numpad.

    Code:
    @name Chip-8 Emultator (Techni)
    @inputs [Screen Pad]:wirelink
    @persist PC J [V M Stack Input Games]:table Delay Sound
    @persist Colour [Cart Mode LastSaid]:string K K2 SoundPlay Clock Owner:entity SaveX
    
    interval(16)
    
    Input[0,number] = Pad["",number]
    Input[1,number] = Pad["7",number]
    Input[2,number] = Pad["8",number]
    Input[3,number] = Pad["9",number]
    Input[4,number] = Pad["4",number]
    Input[5,number] = Pad["5",number]
    Input[6,number] = Pad["6",number]
    Input[7,number] = Pad["1",number]
    Input[8,number] = Pad["2",number]
    Input[9,number] = Pad["3",number]
    Input[0xA,number] = Pad["0",number]
    Input[0xB,number] = Pad["enter",number]
    Input[0xC,number] = Pad["/",number]
    Input[0xD,number] = Pad["*",number]
    Input[0xE,number] = Pad["-",number]
    Input[0xF,number] = Pad["+",number]
    
    if (Sound & !SoundPlay) {
        soundPlay(1,10,"synth/sine_440.wav") 
        SoundPlay = 1
    }elseif (!Sound & SoundPlay) {
        soundStop(1)
        SoundPlay = 0
    }
    
    Sound = clamp(Sound-1,0,60)
    Delay = clamp(Delay-1,0,60)
    
    if (Mode == "proc") {
    
    Clock = 14
    while (perf() & Clock) {
    Clock--
        
        Op = bShl(M[PC,number],8) + M[(PC+1)%0x1000,number]
        PC = (PC+2)%0x1000
    
        I = bShr(bAnd(Op,0xF000),12)
        X = bShr(bAnd(Op,0x0F00),8)
        Y = bShr(bAnd(Op,0x00F0),4)
        N = bAnd(Op,0x000F)
        NN = bAnd(Op,0x00FF)
        NNN = bAnd(Op,0x0FFF)
        
        if (!I) {
            if (Op == 0x00E0) {Screen[1048574] = 1}
            elseif (Op == 0x00EE) {PC = Stack:popNumber()}
        }
        
        elseif (I == 1) {PC = NNN}
        elseif (I == 2) {Stack:pushNumber(PC),PC=NNN}
        elseif (I == 3) {if (V[X,number] == NN) {PC = (PC+2)%0x1000}}
        elseif (I == 4) {if (V[X,number] != NN) {PC = (PC+2)%0x1000}}
        elseif (I == 5 & !N) {if(V[X,number] == V[Y,number]) {PC = (PC+2)%0x1000}}
        elseif (I == 6) {V[X,number] = NN}
        elseif (I == 7) {V[X,number] = (V[X,number] + NN)%0x100}
        
        elseif (I == 8) {
            if (N == 0) { V[X,number] = V[Y,number]}
            elseif (N == 1) { V[X,number] = bOr(V[Y,number],V[X,number])}
            elseif (N == 2) { V[X,number] = bAnd(V[Y,number],V[X,number])}
            elseif (N == 3) { V[X,number] = bXor(V[Y,number],V[X,number])}
            elseif (N == 4) {
                Temp = V[X,number] + V[Y,number]
                V[0xF,number] = (Temp > 0xFF ? 1 : 0)
                V[X,number] = Temp%0x100
            }
            elseif (N == 5) {
                Temp = V[X,number] - V[Y,number]
                V[0xF,number] = (Temp < 0 ? 0 : 1)
                V[X,number] = Temp%0x100
                }
                elseif (N == 6) {
                    V[0xF,number] = bAnd(V[X,number],1)
                    V[X,number] = bShr(V[X,number],1)
                }
                elseif (N == 7) {
                    Temp = V[Y,number] - V[X,number]
                    V[0xF,number] = (Temp < 0 ? 0 : 1)
                    V[X,number] = Temp%0x100
            }
            elseif (N == 0xE) {
                V[0xF,number] = (bAnd(V[X,number],0x80) == 0x80 ? 1 : 0)
                V[X,number] = bShl(V[X,number],1)%0x100
            }
        }
        
        elseif (I == 9 & !N) {if (V[X,number] != V[Y,number]) {PC = (PC+2)%0x1000}}
        elseif (I == 0xA) {J = NNN}
        elseif (I == 0xB) {PC = (NNN+V[0x0,number])%0x1000}
        elseif (I == 0xC) {V[X,number] = bAnd(randint(0,0xFF),NN)}
        
        elseif (I == 0xD) {
            V[0xF,number] = 0x00
            XCo = V[X,number]
            YCo = V[Y,number]
            for(K = 0,N-1) {
                Byte = M[J+K,number]
                YCo2 = YCo+K
                for (K2 = 1,8) {
                    if (bAnd(Byte,bShl(1,abs(K2-8)))) {
                        XCo2 = XCo+K2
                        Coords = XCo+K2-1 + YCo2*64
                        if (Screen[Coords]){
                            Screen[Coords] = 0
                            V[0xF,number] = 1
                        }
                        else{
                            Screen[Coords] = Colour
                        }
                    }
                }
            }
        }
        
        elseif( I == 0xE & NN == 0x9E) {if (Input[V[X,number],number]) {PC = (PC+2)%0x1000}}
        elseif (I == 0xE & NN == 0xA1) {if (!Input[V[X,number],number]) {PC = (PC+2)%0x1000}}
    
        elseif (I == 0xF) {
            if (NN == 0x07) {V[X,number] = Delay}
            elseif (NN == 0x0A) {SaveX = X,Mode = "FX0A",break}
            elseif (NN == 0x15) {Delay = V[X,number]}
            elseif (NN == 0x18) {Sound = V[X,number]}
            elseif (NN == 0x1E) {J = J + V[X,number]}
            elseif (NN == 0x29) {J = 1 + 5*V[X,number]}
            elseif (NN == 0x33) {
                Temp = V[X,number]
                M[J,number] = int(Temp/100)
                M[J+1,number] = int((Temp/10)%10)
                M[J+2,number] = int(Temp%10)
            }
            elseif (NN == 0x55) {
                for (K = 0,X) {
                    M[J+K,number] = V[K,number]
                }
                J = J + X
            }
            elseif (NN == 0x65) {
                for (K = 0,X) {
                    V[K,number] = M[J+K,number]
                }
                J = J + X
            }
        }
    }
    }
    
    elseif (Mode == "FX0A") {
        for (K = 0,0xF) {
            if (Input[K,number] == 1) {
                Mode = "proc"
                V[SaveX,number] = K
                break
            }
        }
    }
    
    elseif (Mode == "load") {
        for (O = 1,70) {
            M[K,number] = (Games[Cart,string]:index(K2)+Games[Cart,string]:index(K2+1)):toNumber(16)
            K++
            K2+=2
            if (K > 0xFFF) {Mode = "proc",break}
        }
    }
        
        
    
    elseif (Mode == "reset") {
        
        Screen[1048574] = 1
        
        M = table(0xF0,0x90,0x90,0x90,0xF0,
                  0x20,0x60,0x20,0x20,0x70,
                  0xF0,0x10,0xF0,0x80,0xF0,
                  0xF0,0x10,0xF0,0x10,0xF0,
                  0x90,0x90,0xF0,0x10,0x10,
                  0xF0,0x80,0xF0,0x10,0xF0,
                  0xF0,0x80,0xF0,0x90,0xF0,
                  0xF0,0x10,0x20,0x40,0x40,
                  0xF0,0x90,0xF0,0x90,0xF0,
                  0xF0,0x90,0xF0,0x10,0xF0,
                  0xF0,0x90,0xF0,0x90,0x90,
                  0xE0,0x90,0xE0,0x90,0xE0,
                  0xF0,0x80,0x80,0x80,0xF0,
                  0xE0,0x90,0x90,0x90,0xE0,
                  0xF0,0x80,0xF0,0x80,0xF0,
                  0xF0,0x80,0xF0,0x80,0x80)
                
        Stack = table()
        
        Mode = "load"
    
        K = 0x200
        K2 = 1
        
        PC = 0x200
        J = 0x000
    }
    
    elseif (first()) {
        Owner = entity():owner()
        Mode = "reset"
        
        Games["PONG",string] = "6A026B0C6C3F6D0CA2EADAB6DCD66E0022D4660368026060F015F0073000121AC717770869FFA2F0D671A2EADAB6DCD66001E0A17BFE6004E0A17B02601F8B02DAB6600CE0A17DFE600DE0A17D02601F8D02DCD6A2F0D67186848794603F8602611F871246021278463F1282471F69FF47006901D671122A68026301807080B5128A68FE630A807080D53F0112A2610280153F0112BA80153F0112C880153F0112C26020F01822D48E3422D4663E3301660368FE33016802121679FF49FE69FF12C87901490269016004F0187601464076FE126CA2F2FE33F265F12964146500D4557415F229D45500EE808080808080800000000000"
        Games["PACMAN",string] = "121A322E303020432E20456765626572672031382F382D27393180038113A8C8F1556005A8CCF05587738663277200E027946E4087E26E2787E1681A690C6A386B006C026D1A2750A8EDDAB4DCD423D03E00127CA8CCF0658500C4FF845224F6C4FF8452261E6001E0A127D636F7124E8E60287A6E64287A27D6122AF007400013108080800681A0810680154000129A4001129A40FF129A12C88090800681B081068015400012B2400112B240FF12B212C8A8EDDAB46A386B00DAB46EF387E26E0487E16E32287A8080800681C081068015400012E0400112E040FF12E012548090800681D081068015400012F8400112F840FF12F81254A8EDDCD46C026D1ADCD46ECF87E26E2087E16E19287A1254603F28A82750A8EDDAB4DCD46E4087E3807080E2300012328E60287A288A00E06611670AA8CA27E666116710A8C827E6640065086600670FAB19D469AB22D569600328A83E0013C6AB19D469AB22D5697402750234301348AB19D469AB22D569600328A83E0013C6AB19D469AB22D569760236161368AB19D469AB22D569600328A83E0013C6AB19D469AB22D56974FE75FE34001386AB19D469AB22D569600328A83E0013C6AB19D469AB22D56976FE360013A61348AB22D569AB2BD569121A83706E0383E2848085906E06EEA114326E03EEA1144A6E08EEA114626E07EEA1147A43037502430075FE43027402430174FE8040815027BA82006E0880E2300014926E07802082E24205149A420614B2420714EC27506EFC87E2873188408950175080408150710227BA82006E0880E2300013F263037502140E8040815071FE27BA82006E0880E2300013F2630075FE140E80408150700227BA82006E0880E2300013F263027402140E8040815070FE27BA82006E0880E2300013F2630174FE140E2750D8948EF000EE6EF080E28031F055A8F1D45476016105F0074000F11814246EF080E28031F055A8F5D454760480A081B027BA6EF080E2300014D26E0C87E380C081D027BA6EF080E2300014E46E3087E360FFF018F01514244301643A430264001424827083706E0C82E280A081B027BAA8ED6EF080E230001524DAB4420C7B0242007BFE42087A0242047AFEDAB400EE6E80F107310015D4340015D48100830E3F001556839083B54F00158C3300157487E3838083A54F0015BC330015A487E315D4838083A54F0015BC330015A487E3839083B54F00158C3300157487E315D463408132410015D4DAB47B02DAB46EF387E2620C872100EE63108132410015D4DAB47BFEDAB46EF387E26200872100EE63208132410015D4DAB47A02DAB46EF387E26208872100EE63808132410015D4DAB47AFEDAB46EF387E26204872100EEC1F08012300015E46E0C87E382E3150EDAB4800E4F0015F262047AFE1614800E4F0015FE620C7B021614800E4F00160A62087A021614800E4F0015DC62007BFEDAB46EF387E2872100EE827083706E3082E280C081D027BAA8ED6EF080E23000164CDCD442307D0242007DFE42207C0242107CFEDCD400EE6E80F10731001704340017048100830E4F00167E839083D54F0016B63300169C87E3838083C54F0016EA330016D087E31704838083C54F0016EA330016D087E3839083D54F0016B63300169C87E317046340813241001704DCD47D02DCD487E36ECF87E26230872100EE6310813241001704DCD47DFEDCD487E36ECF87E26200872100EE6320813241001704DCD47C02DCD487E36ECF87E26220872100EE6380813241001704DCD47CFEDCD487E36ECF87E26210872100EEC1F080123000171687E36E3087E382E31636DCD4800E4F00172462907CFE1746800E4F00173062307D021746800E4F00173C62A07C021746800E4F00170C62007DFEDCD46E4F87E2872100EE80706E0380E2800E818081946E0281E241007001800E800EA8CDF01ED8948EF000EE6E00A919FE1EFE1EFE1EFE1EF365AB34FE1EFE1EFE1EFE1EF3557E013E80177400EE822383336E0F8020813027BE80E2800EA8F9F01ED23272023240179A82237302432000EE179A7002710280068106810E810E810E810EAB34F11EF11EF01EF06500EEA8CCF0658006F0556001E0A117E000EEF1656E01844382008310651083554F0082E54F00180C652782554F00180C8020813084E417F0F429D675760684438200831065E883554F0082E54F001834650382554F0018348020813084E41818F429D6757606844382008310656483554F0082E54F0018548020813084E41840F429D6757606844382008310650A83554F00186E813084E41860F429D6757606F129D67500EEA8C8F16581E43F007001A8C8F15500EEA8C8F3658E008E254F0000EE3E0018A28E108E354F0000EEA8CAF15500EE8EE3620F63FF6110E2A118C48134310018B061108034300018B000EE6E0100EE0000000005005070200050702000603060006030600030603000306030002070500020705000207070000020000000000000000000000000000000800000000000C000000080800000C0808080C00080000C08080808080808080808080808080D0C08080808080808080808080808080D0A6505050505E50505E505050505C50A0A6505050505E50505E505050505C50A0A050C08080F050C0D050808080D050E0F050C08080F050C0D050808080D050A0A050A650605950A0A350505C50A350505950A650505950A0A350506C50A050A0A050F0508080808080C080F0508080808080F0508080C080808080F050F050A0A7505B505050505C50A6505B505E50505E505B505C50A6505050505B505D50A0A050C080808080D050F050C080F05080F0508080D050F050C080808080D050A0F050F650505C50A35E5950A6505B00505B505C50A35E5950A650505C50F050F077405D5080F050E0F05080F050C080808080D05080F05080F05080F7505D4070A050A350505F50505B50505D508080D0C080F750505B50505F50505950A050A0A050808080D050C0808080D3505C50A0A6505950C0808080D050C08080F050A0A750506C50A050808080808080F05080F050808080808080F050A650605D50A0A050C0D050A3505050505E50505F50505F50505E505050505950A050C0D050A0A05080F0508080808080F050C0D05080F050C0D0508080808080F05080F050A0A350505B5050505050505950A0A350505950A0A35050505050505B50505950A0808080808080808080808080F08080808080F0808080808080808080808080F3C429999423C01100F7884323284780010E078FCFEFE84780010E0"
        Games["TANK",string] = "123076FB602080654F006600138400FF00000001000C0A0019020406080202032C000F0002052E0800000205000000006E006DA06A0869066804670266196410630C62006106A212FA5523D46040F015F0073000125023D4230A2362A212F56522AE22C622EC3F0123143F0122EC3F0122EC3F01227C4F0113661262A212F565460035001288138CE7A16209E8A16204E9A16206EAA16201420000EE22AE8120239A23AC6C0162006F00A212F555A3FF41016000410460134106600D41096006F01ED34700EE6005E09E00EE450F00EE650F76FFA212F55574037303239A239A239AA223F555A419D34100EEA223F565450000EEA419D341239A6C0223BE4BBB130AD341A223F55500EE65006000A217F0551304A21DF565350F1344A41AD34532001332C103A219F11EF0658100C20F7201239AA41A6C0372FF6F00D345A21DF55500EEC407A41FF41EF0658300A427F41EF0658400A41AD3456020F018650F133E6500133E4C0112024C021382A223F56545001202A419D3416F00D3413F0112027E0A6040F01800E0124A00E023D46060F01813946E001384410174FF410473FF410673014109740100EE4400740143007301433873FF441874FF00EE6B00440013CE430013CE433F13CE441F6BBB6F0000EE63086408A229FE33F26523EC6328A229F633F26523F200EEF029D3457306F129D3457306F229D34500EE0110547C6C7C7C447C7C6C7C541000FC786E78FC003F1E761E3F0080A870F870A80B1B283830201000000000081B1B1B1804"
        Games["TRIP8",string] = "12145245564956414C53545544494F533230303800E06D20FD1523BE23C66D40FD1523BE23C66D20FD1523BEA48324486D80FD1523BEA4832448A58324486D006B0022C64B0022E44B0123864B0222EC4B0323864B0422F44B0523866001F01523BE7D01603F8CD08C024C00227012444B0022904B0122CC4B0222A24B0322D44B0422B44B0522DC7B014B066B0000EE2308C90389948994899489948994236600EE22FCC90389948994899489948994236600EE2318C90389948994899489948994236600EE6E00230800EE23666E0022FC00EE23666E00231800EE23666E00230800EE23087E03230800EE22FC7E0222FC00EE23187E02231800EE6C00233A233A233A233A00EE6C0023242324232423242324232400EE6C00235023502350235000EEA683FE1EFE1EFE1EFE1EFC1EF165A47CD0147C0200EEA983FE1EFE1EFE1EFE1EFC1EF165A47CD0147C0200EEAB83FE1EFE1EFE1EFE1EFC1EF165A47CD0147C0200EE6C00601F8AD08AC48A028A94AD83FA1EFA1EF165A480D0137C013C08136800EE601F8AD08A028A94AD83FA1EFA1EF165A480D013601F8AD07A088A028A94AD83FA1EFA1EF165A480D01300EEA683FD1EF0653000F01800EEF007300013BE00EE6D04610C601C6212A41EF21ED016FD1523BE6014620CA41EF21ED01660246218A41EF21ED016FD1523BE600C6206A41EF21ED016602C621EA41EF21ED016FD1523BEA41E6004D01660346224A41EF21ED016FD1523BE00EE00000C1111100000955595CD00005355553340404442414600406A4A4A46002069AAAA69000020908830640165076200630060008130D0117108F41ED0117108F41ED0117108F41ED011F41E7008304014527303835272013208145000EE60B0F06040A0400000000000000000000006000000C6000000DB000000300000000000000000000000000000000000005F060000FEC60000D3FB0000F0F000000000000000000000000000000000000006000000F6000000FBE00000F0000000000000000000000000000000000000000606000000C6000000DB000000300000000000000000000000000000000000000606000000C6000003F1000030E000000000000000000000000000000000000006000000C6000000D9000000E0000000000000000000000000000000000000002F060000FFC6000069DB0000E0300000000000000000000000000000000000000600000076000000F3E00000300000000000000000000000000000000000000000000000000000000000001F070F00FFFEFC7E00003E7C00000000000000000000000000000000000000002F1B0700FFF0FB1F0000FEB00000000000000000000000000000000000000000170F0000FFF87E0F000C143800000000000000000000000000000000000000002F0B0F00FEE0FC3F00007EFC0000000000000000000000000000000000000000171F0300FFF0FF1F8000FE0000000000000000000000000000000000000000000B0F0000FEF87E0F001C3E00000000000000000000000000000000000000000017170F00FEC0F83F0000FEFC00000000000000000000000000000000000000002B1F0000FFE07F1F80041C3C04051B051B170417070817081C08151A060300141B0A16161A0A0E1A080200101E0C1517180B08190B01000D200F1319150A031520120E01101A010B140800111F140D1B120104091506000D1D160A1B15030608180501091C160619170507081B0504051B17041717080808041409021A181E070513080705120E0119191F0A0212080608121402181A200C001009050A121904151B000E1F0E0B030C141D08000B0E01111B1D110B171F0D000812010D1A1B1208181E12020717020A1719131B171B0504170405170817141D0A0604151A01151B090B051B0E08030E1B00111E0C100417120A02081A1F0F000D160410140D021E1403161B060209091310011A181F0A01120706040F1402131B200E010E0D05020A18030B1B1F13040A1205041704051B171B050814080815191E080011090214171B0C0E171F0B000B0F01101A1C1009131F0E020615020A1A1A15080E1F0F080205181A0517190A091E1200140E01111B1C090F051D14000E0C1B13021D0E15041C15000A071A16051B111B05040504171B171808080803140A0219191F080412090605121102171A200C01100A0507111703141B000D200F0C030A121C07000A111B0F021E110B141F0B000812010D1B1B130A161F0F020615010A19191407171E1303061903081718141B0504051B170417170808081B08161A050401151A0917151A0A111B060300121D0A1716170A0B1A070200101F0C1617150A06180A01200E000E14191308021420110E01111B020B1405000F1F140D1B1202040A1704010A1D15081A150506091B171B050417040518081814021219180A021E0704131417040E17191101200B01100F18080A151A1702200F000D09180F08121A01081C0604161D1316090F1B050400121E0A18161B0D0B1A0C01000E1E0E12171D120719140100091B120D17041704051B171B05081408080A0301141F0B161A0B050410110500112011101B0F02030C1609000E1D160A1A15020507170E000D171A1A04051708031513010A1F080E01111B031310170208200E13010C1A020E0A1803071F1218020917040B04051B051B1704171C08151A060300141A0A0E1A08020010180B08190B01000D150A03150E01010B14080011120114121506000D1314150318050109111517051B0504051015170809021E070E1508070E011F0A0C15080614020B14200C090519040A141F0E0B031D0808130E011D111F0D120107111B121E121702061019131B171B05060E17081D0A151A070C1B091B0E0E1B080A1E0C1712081A1F0F0B0810141E1403160F0709131A1801121208040F131B1509010E020A0B1B180B040A04170405190E08140011090218100612000B0F0116130510020614141502050E111408021A05050D0E130E011C09060C0D1113021D0E060A0E0F16051B110709100E180808080814120E041209061316140E01100A050F161610000D0C030A151612000A0F0207130008151312010510020615011315050E030619031115050B1B0504050F1517081B0805040E151A091A0A06030C141D0A170A07021F0C0B14150A0A01200E0A13130820110E01091214051F140811120217041D15071015051B171B05060E180819181E07070C14171719200B080A0F18151A0B08200F0918121A0E0704161D130F1B1207001218160B1A000E1609121707190009180B0D1704170405190E08140A03011418100B051105001116120F021609000E15021313170E000D1A0408031513010A1F080E0110170208200E13010A1803071F121802100E0607190719150D0E1B09161709050B0E1C0C12180D041C0E090C0E1911041B0E090A0B1814051A0E07160A0914121A0E05140C0713141A0E04110E0711151B0E040E10151007060C1C0F0E1511070A0A1D100C1513080E0A1C120B141408120B0A141A140508150E07060813171615110A040711170B13150D040610180C10171005060E190E11070B171810070C110906161712080A100A031314141A0A0E0B11151D0D030F0D0A1D100D1512080C081A14091315090D0615170711180B10171005190E060E0A1513051810070C061017051613090A050C1A0714140C09080711141C0A05110C040E131D0D040F0D1111031D10030D0E0F16041B130409100E190706070615120E041309051617140E03100D041218030E161011030E18040E161214040B17050E180615130B0A050E1A0813150C08050E1B0B11150E071B0E040E0F150F071910030D11070E151512020C13070C141112030A14080B140D11150805081A140A0E1816170908060A0B1518180B08110C071218190C071010171005060E190E0E151405070C18100E131906080A17120F121C090B08051211110E07020F1C0D1212020C12070D141314050816090A1312160A05180B07110F171005190E060E15070C17070C1810190C0817090916121A1005150B08131317150E0803121A0B13181109020F1B0D120B0E19020C1C0F110D091804091B1310100C140717041A031C031D051D081B0C191016141317101A0D1B0A1B0819061705130610070D080A0B070E0610061208150A170D181019131916181817191410190F170D170A19061A0616091309110710030E030B080B0B0B0C0A0C060E0210041108120A140919071B09190D170F17101A121D151A16151514161318121D10190E170D170B17081705190219031708140B120E1110101110140E190B1C091C091909170A160A1409130711040F020B0309060909090A090B080B070B070B1019131815171616181518151814151210100B0E090C080C090B0A0A0B090D08100614041A031D041C08190B150D120F10100D110A1306160319031C071C0C1A"
        Games["ASTRODODGE",string] = "12145245564956414C53545544494F533230303800E06D20FD15249B24A36D40FD15249B24A36D20FD15249B00E0A41B256324FB6D046C006005E09E12401254FD15249B7C014C0024FB4C0424FB4C086C0012386D02FD18A41B256300E06810691422E8228C258D632C64002655632C640626656D006E0822B622EE7D084D806D007E084E806E001278122C6C00A366FC1EF165C103A366FC1EF155A39BD0187C033C09128E00EE25952320C00F80048004610000EE6C006500A366FC1EF265A39BFD1ED01881248310641E83454F0122A8A39BFE1ED018A366FC1EF15575187C033C0912BA00EEA393D89800EE22E86004E09E12FA380078FE6006E09E1304383878026002E09E130E391079FF6008E09E13183918790122E84F01132E00EE632C640025B7632C640625F300EE6D01FD186D04FD15249B6D01FD186D04FD15249B6D01FD186D04FD15249B6D01FD1800E06000610425316316641626556005E09E135E122C000101180202300303400401400502400703000101000101000101000101000101000101000101000101000101181834247EFFE799004038142A753A14000028703E072A000040085C7A750A04005028543E752E012070787C3C756A54006478787E7DE85008442A503A5DE84008540A112A5C684000042A572A16285000002A136A560800000008712A52300000040A143A60680000040A1C3E70685020502E5F2E5C2850205C3A573E5E2850005838772E7F3E54787EF7F1BE9E3866F8CD739BE336CFDE7866F71DBE9B3A36F9CD73B3E36CCFD8CD33837833D9669CCDF89BE336876C3CFD7EF779BF9F7C66FCCDFB9BF736EFDEFD66F71DBF9B7C36FCCDFBB3F7ECEFD8CD00C30033006600CD009B0036000C0085660019019B466605CD889B146C20D8CD33837C33D96EBECDFDDBF376CF6CBCF0073000149B00EE6D04610C601C6212A70FF21ED016FD15249B6014620CA70FF21ED01660246218A70FF21ED016FD15249B600C6206A70FF21ED016602C621EA70FF21ED016FD15249BA70F6004D01660346224A70FF21ED016FD15249B00EE620660006117A67FD0167008F21ED0167008F21ED0167008F21ED0167008F21ED0167008F21ED0167008F21ED0167008F21ED01600EE620CA6AFD01C7008F21ED01C7008F21ED01C7008F21ED01C7008F21ED01C7008F21ED01C7008F21ED01C7008F21ED01C00EE6401650762006300600081307103D0117108F41ED011F41E70083040156D7303835272013208156B00EE6000A675F05500EEA675F165820083107001850085154F018100A675F35500EEF129D345F029D34500EEA675F265A67CF233A679F033A67CF0658100A679F065501025AD7305A67DF0658100A67AF065501025AD7305A67EF0658100A67BF065501025AD00EEA676F265A67CF233A679F033A67CF0658100A679F065501025AD7305A67DF0658100A67AF065501025AD7305A67EF0658100A67BF065501025AD00EEA679F065F029D3457305A67AF065F029D3457305A67BF065F029D34573056200F229D34500EEA675F265A67CF233A679F033262F00EEA676F265A67CF233A679F033262F00EE00140000000000000000003C363C303000F3DBF3DBDB00E70CC701EF009E301C863C001E301C063C00F366676666009EDBDEDBDB007830303030010303030303030303030301E70D0D6F6D6D6D6D6D6D6DED3FB5B5B5B5B5B5B5B5B5B5B53EB0B0BCB0B0B0B0B0B0B0BE1C363636363636363636361CDBDBDBDBDBDBDBDBDBDB7B3BEF0D0DCF0D0D0D0D0D0D0DED00808000808080808080808000000C1111100000955595CD00005355553340404442414600406A4A4A46002069AAAA69000020908830"
        Games["WORM",string] = "125C576F726D20762E342C2062793A2052422C20436869702D382076657273696F6E2062793A204D617274696A6E2057656E74696E67202F205265766976616C2053747564696F7300524239320000001F0000137C0000060E01000400E0A24DFE65A3A5F055FC1E710131001264A38FDAB3A38ED421D4317402343A1274A39C6300D321D4217201321F1282A248F065A202F033A202F53323222374A39BD76176023621129C6306F315A3A5F81EF065840080A0A3A5F81EF055A4A5F81EF065810080B0A4A5F81EF055A3923400D413A386F91EF165A395DAB28A048B14A38FDAB33F00133CC00F40002370780198E068006306F31566FF6106E1A166006102E1A166026104E1A166046108E1A1660636FF8960F307330012F612A62322A202F5336300643CA202F265F029D4357306F129D4357306F229D43500EE2380A38FDAB3DAB33F0013526402F4187501231C12EC640AF418DAB38A058B15A395DAB2A248F065A248805580504F00F055136E7E0100EEA397CC3FCD1FDCD44F0000EEA397DCD41376040000FCFC000004C0E0E0E0E0A0E0004030587830F080808080808080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        Games["BLITZ",string] = "1217424C49545A2042792044617669642057494E544552A34160046109620E6704D01EF21E700C30401221F00A00E022D9F00A00E08E70A31E6B1FCC1F8CC4DCB23F011249DCB21239CA077A017BFEDCB27AFF3A00124D7EFF3E0012396B008C706D006E00A31BDDE33F0012C13B0012816005E09E12876B0188D0780289E07903A31ED89181F06005F015F0073000128B3B0112ABA31E3101D8917901392012AB6B0031007CFF4C0012BBA31BDDE37D023D4012B96D007E01126500E07702122DA31BDDE360146102620BA320D01BF21E7008302C12CD12D7600A610D6205A307D015F21E7008302A12E1807070FE8006A387F033F265602DF129610DD0157005F229D01500EE83828382FBE8088805E2BEA0B8203E80808080F880F8FCC0C0F981DBCBFB00FA8A9A99F8EF2AE82929006F682E4C8FBEA0B8B0BE00BE223E34B2D8D800C3C300D8D800C3C300D8D8C0C000C0C000C0C000C0C000DBDBDBDB00181800181800181800DBDBDBDB001818001818001818001818DBDB00030300181800C0C000DBDB"
        Games["SYZYGY",string] = "12128D8D20A93139393020525454208E8E0024B624DA600FE0A11224600EE0A11228121624DA122C00E0122CC11F7110C20F7208C303853086108720883048007701480177FF48027601480376FFA54CD121D67164F069F1A800F41E8030F0557401A800F41E6001F05525226A007A00F0073000129C3D0012946000F029DBC53F01128CDBC52522F015129CFE156D016E00129C80E0F029DBC525226003E0A163006006E0A163016007E0A163026008E0A16303430072FF43017201430271FF43037101A54CD1213F0113243D011388603F8102601F820280B080173F01138880B0700380153F01138880C080273F01138880C0700480253F0113886004F018CE077E028AE4A54CD1216000F029DBC580E0F029DBC56030F015F0073000131AA54CD1219350133E7401A800F41E8030F0557401A800F41E6000F0558530A800F41EF0657001F0554A001358600C70FF3000134E7AFF1270A54CD671480077FF48017701480276FF48037601A800F91EF06570FFF055300012707901A800F91EF065880079011270600DF018600BE09E138E6B016C006D007B013B0A13AA6B007C013C0A13AA6C007D01A54CD671480077FF48017701480276FF48037601A800F91EF06570FFF05530001398994013DE7901A800F91EF06588007901139800E066116709682F6917A552D67ED87E77FFA54ED671D6917608D671D6917608D671D6917608A550D671D691A59E66136711249AA5AEF36593D01424803080D53F01143A144492C01432802080C53F01143A1444801080B53F001444A5AE83D082C081B0F355A5AEF365661377F98D308C208B10A5A4249AC13FC21F600D80153F00147C603080173F00147C600380253F00147C601880273F00147C1482C30FF329D125600FE0A11490600EE0A11496145600E024B6122C00E0122CD675A5AA7602D674FD29760AD675FC297605D675FB297605D67500EEA54E61006200661FD121D1617108314014BEA5526201653FD12FD52F720FD12FD52F00EE610C6207A562D12AA56C7106D12AA5767106D12AA56C7106D12AA5807106D12AA56C7106D12A610E6218A58AD123A58E710872FFD124710972FEA592D12671067201A598D12500EE6DC5CB3F8EB08ED44F0115247B016DE6CC1F8EC08ED44F0115327C016D00CE3F7E40FE15CE3F7E4000EE8000FF00FE00808080808080808080808080808080801F1010101F010101011F111111111F04040404041F01020204040808101F1F11101010131111111F05050200715151750C121E141209143E15152A007744241477005752725257000001000100000000"
        Games["VBRIX",string] = "00E023B66007E09E1204680067032346224A22C02366238A23ACF00A225A225A22D022883A00121C6C0123AC77FF23AC6078F015F007300012343700121C23AC6007E09E1242120A00FD69106002A254D09500EE8080808080006001E0A112686004E0A1127200EE809070FF400000EE127C80907001401B00EE127C6102A254D195D105890000EE80A070FE300000EE80B080954F0000EE8100620581253F0000EEA2BAF01EF0658D004B016D014B1E6DFF6C01600AF01800EEFFFF00010100CB207B016A046C016D01A364DAB100EE80A081B08AC48BD4A3644B016D014B1E6DFF4A3E6CFF4A006C01D011DAB14F0000EE80A0612180154F0000EE80A081B070DE71FF62FF63FF6403720180453F00130A730181453F00131280208130802480248134813470227101A386D0137EFF60008C076002F018238A7801238A3E0000EE236600EE00E060006100621FA364D011D0217001303F1350D01171013120135A00EE80006101630AA38660226207D013700372FF32001370710373FF3300136C6E4600EEE0A0E000A3A6F833F26563036402F029D3457305F129D3457305F229D34500EE00000000000060146102F729D01500EE600A610C62096305A3CED015F31E700572FF320013C000EE9090909060E090E090E0E090E09090202020202090906090900000600000F090F08080F080F010F0E090E09090"
        Games["WIPEOFF",string] = "A2CC6A0761006B086000D01170087BFF3B00120A71047AFF3A00120666006710A2CD6020611ED011631D623F820277FF470012AAFF0AA2CBD23165FFC401340164FFA2CD6C006E04EEA16CFF6E06EEA16C01D01180C4D0114F01129842006401423F64FF43006501431F12A4A2CBD23182448354D2313F011242431E12986A02FA187601467012AAD231C401340164FFC501350165FF12426A03FA18A2CBD23173FF1236A2CBD2311228A2CDD011A2F0F633F2656318641BF029D3457305F129D3457305F229D34512C8018044FF"
        Games["PONG2",string] = "22F66B0C6C3F6D0CA2EADAB6DCD66E0022D4660368026060F015F0073000121AC717770869FFA2F0D671A2EADAB6DCD66001E0A17BFE6004E0A17B02601F8B02DAB6600CE0A17DFE600DE0A17D02601F8D02DCD6A2F0D67186848794603F8602611F871246001278463F1282471F69FF47006901D671122A68026301807080B5128A68FE630A807080D53F0112A2610280153F0112BA80153F0112C880153F0112C26020F01822D48E3422D4663E3301660368FE33016802121679FF49FE69FF12C87901490269016004F0187601464076FE126CA2F2FE33F265F12964146500D4557415F229D45500EE8080808080808000000000006B206C00A2EADBC17C013C2012FC6A0000EE"
        Games["TEST",string] = "12122054726F6E697820286329203230313000E03F0013E23E0013E23D0013E23C0013E23B0013E23A0013E2390013E2380013E2370013E2360013E2350013E2340013E2330013E2320013E2310013E2300013E260006101620263036404650566066707680869096A0A6B0B6C0C6D0D6E0E6F0FA478FF653F0013F83E0013F83D0013F83C0013F83B0013F83A0013F8390013F8380013F8370013F8360013F8350013F8340013F8330013F8320013F8310013F8300013F86000F029F06540001402A4526E7BFE33F265300113C6310213C6320313C66E026F0060FE610180143F00140C6E0330FF140C6E0480143F01140C6E053000140C60016E066F0080153F01140C6E073000140C6E0880153F00140C6E0930FF140C60016E0A6F0080173F01140C6E0B3000140C6E0C6001610080173F00140C6E0D30FF140C60FF6E0E6F0080063F01140C6E0F307F140C60406E1080063F00140C6E113020140C6E126F01800E3F00140C6E133040140C60FA6E14800E3F01140C6E1530F4140C617B6E168013308F140CA488F765F775A478F765F7856E173707140C3606140C3505140C3404140C3303140C3202140C3101140C3000140C6E18AFFE60026F00F01E3F01140C14902412700A620BF229D0157005620CF229D0157201F2297005D01514502412700AA464D0157006A469D0157006A464D01514502412700AA45AD01514502412700AA455D015145024122432145060006100A45FD0157005A46ED0157006D015A45A7006D015A46E7005D01500EE8400740A8510A452FE33F265F029D4557406F129D4557406F229D45500EE14500000001030101010F0909090F0F080F080F0F8202020F888C8A89888E090E0908890A0C0A09000000000000000000000000000000000000102030405060760006100F029D0157005A473D0151450"
        Games["MISSILE",string] = "12194D495353494C452062792044617669642057494E5445526C0C600061006508660A67006E01A2ADD0147008304012296000611CA2B0D014A2B0D0143E011249700440386E00124F70FC40006E01D014FC15FB073B0012536208E29E12953C007CFE631B8200A2B0D2316400D23173FFD2313F0064013303126DD23134011291770575FF82006300A2ADD2344500129776FF36001239A2B4F733F265631B640DF129D3457305F229D34512AB10383810387CFE"
        Games["TETRIS",string] = "A2B423E622B67001D0113025120671FFD011601AD01160253100120EC4704470121CC303601E6103225CF515D0143F01123CD01471FFD0142340121CE7A12272E8A12284E9A12296E29E12506600F615F6073600123CD0147101122AA2C4F41E660043016604430266084303660CF61E00EED01470FF23343F0100EED0147001233400EED014700123343F0100EED01470FF233400EED014730143046300225C23343F0100EED01473FF43FF6303225C233400EE8000670568066904611F6510620700EE40E0000040C0400000E04000406040004040600020E00000C040400000E080004040C00000E020006040400080E0000040C08000C060000040C08000C060000080C040000060C00080C040000060C000C0C00000C0C00000C0C00000C0C000004040404000F000004040404000F00000D014663576FF3600133800EEA2B48C103C1E7C013C1E7C013C1E7C01235E4B0A237291C000EE71011350601B6B00D0113F007B01D01170013025136200EE601BD0117001302513748E108DE07EFF601B6B00D0E13F001390D0E11394D0D17B017001302513864B0013A67DFF7EFF3D01138223C03F0123C07A0123C080A06D0780D2400475FE4502650400EEA700F255A804FA33F265F0296D326E00DDE57D05F129DDE57D05F229DDE5A700F265A2B400EE6A00601900EE3723"
        Games["SPACE INVADERS",string] = "1225535041434520494E5641444552532076302E392042792044617669642057494E544552600061006208A3D3D0187108F21E3120122D700861003040122D69056C156E002387600AF015F0073000124B23877E0112456600681C69006A046B0A6C046D3C6E0F00E0236B2347FD156004E09E127D236B380078FF236B6006E09E128B236B38397801236B3600129F6005E09E12E96601651B8480A3CFD451A3CFD45175FF35FF12AD660012E9D4513F0112E9D45166008340730383B562F883226208330012C923738206430812D3331012D523738206331812DD23738206432012E7332812E923733E0013077906491869006A046B0A6C047DF46E0F00E02347236BFD15126FF7073700126FFD1523478BA43B12131B7C026AFC3B0213237C026A0423473C18126F00E0A4D360146108620FD01F7008F21E302C1333F00A00E0A6F4FE651225A3B7F91E6108235F8106235F8106235F8106235F7BD000EE80E080123000DBC67B0C00EEA3CF601CD80400EE23478E2323476005F018F015F0073000137F00EE6A008DE06B04E9A11257A602FD1EF06530FF13A56A006B046D016E01138DA500F01EDBC67B087D017A013A07138D00EE3C7EFFFF99997EFFFF2424E77EFF3C3C7EDB81423C7EFFDB10387CFE00007F003F007F0000000101010303030300003F20202020202020203F0808FF0000FE00FC00FE0000007E4242626262620000FF0000000000000000FF0000FF007D00417D057D7D0000C2C2C6446C28380000FF0000000000000000FF0000FF00F71014F7F7040400007C44FEC2C2C2C20000FF0000000000000000FF0000FF00EF2028E8E82F2F0000F985C5C5C5C5F90000FF0000000000000000FF0000FF00BE00203020BEBE0000F704E7858584F40000FF0000000000000000FF0000FF00007F003F007F000000EF28EF00E0606F0000FF0000000000000000FF0000FF0000FE00FC00FE000000C000C0C0C0C0C00000FC0404040404040404FC1010FFF981B98B9A9AFA00FA8A9A9A9B99F8E62525F434343400171434373626C7DF50505CD8D8DF00DF111F121B19D97C44FE868686FC84FE8282FEFE80C0C0C0FEFC82C2C2C2FCFE80F8C0C0FEFE80F0C0C0C0FE80BE8686FE8686FE8686861010101010101818184848789C90B0C0B09C8080C0C0C0FEEE9292868686FE82868686867C828686867CFE82FEC0C0C07C82C2CAC47AFE86FE909C84FEC0FE0202FEFE10303030308282C2C2C2FE828282EE38108686969292EE8244383844828282FE303030FE021EF080FE0000000006060000006060C00000000000001818181800187CC60C1800180000FEFE0000FE82868686FE080808181818FE02FEC0C0FEFE021E0606FE84C4C4FE0404FE80FE0606FEC0C0C0FE82FEFE02020606067C44FE8686FEFE82FE06060644FE4444FE44A8A8A8A8A8A8A86C5A000C18A8304E7E001218666CA85A665424660048481812A80690A812007E3012A884304E721866A8A8A8A8A8A8905478A848786C72A812186C72665490A8722A18A8304E7E001218666CA87254A85A66187E184E72A8722A183066A8304E7E006C30544E9CA8A8A8A8A8A8A848547E18A890547866A86C2A305AA88430722AA8D8A8004E12A8E4A2A8004E12A86C2A545472A88430722AA8DE9CA8722A18A80C54485A78721866A8721842426CA8722A0072A8722A18A8304E7E001218666CA8304E0C6618006C18A8722A183066A81E54660C189CA824545412A842780C3CA8AEA8A8A8A8A8A8A8FF000000000000000000000000000000"
        Games["HIDDEN",string] = "121D48494444454E2120312E302042792044617669642057494E544552A43F60006140F155A43F6000F05500E0A47E600C6108620FD01F7008F21E30341235F00A00E0A4C96013610D6204D0147008F21E302B124BA41FFF65A42FFF5563406608C10FC20FA42FF11EF0658400A42FF21EF06585008040F055A42FF11E8050F05573FF3300126100E060006100A477D01770083020128F600071083120128F6C006D006E00A43FF0657001F05523B96A10235D23CD8A9087D088E0235D23CD23B9A42FF91EF0658100A42FFA1EF0655010132B23DF6020240123DF6000A42FF91EF055A42FFA1EF05576FF360012A5A43FF165820080153F00130180208120F15500E0A51960106107620ED01F7008F21E3030130BA43FF165841083006609240B660F8340240BF00A122523DB6080240123DBA42FFA1EF06570FF23F3A441F01ED787A477D787A42FF91EF06570FF23F3A441F01EDDE7A477DDE712A5A471DDE7FB0ADDE73B0413714D00135D7DF87CFF3B06137D4D18135D7D087C013B0213894E00135D7EF87CFC3B0813954E18135D7E087C043B05135DA42FFC1EF0654000135D89C099A0135D70FFA477DDE7A44123F3F01EDDE700EEA4D56024610A620BD01B7008F21E303C13C100EE60346110A4F1D015A4F6D01500EEA4FB13E1A50A6024610D6205D0157008F21E303C13E700EE81008114800480048004801500EEF015F0073000140300EEA42FF333F2656523F129D5656528F229D56500EE01020304080706050506070804030201010203040807060505060708040302010000FEEEC682C6EEFEFEC6C6C6FEFEC6AA82AAC6FEC6828282C6FEBAD6EED6BAFEEEEE82EEEEFE82FE82FE82FEAAAAAAAAAAFEFEFEFEFEFEFEAAD6AAD6AAFE8B88F8888B0000000000F0484848F2EF848484EF0008080A008A8AAAAA523C9292923C00E2A3E3008BC8A89888FA83E282FA0028B89000EF888E888F2121A160210000000000BC223C28A4898AAB529751D151C00000156A8A8E8A6A00648A8E8A6A44AAAAAA4400CCAACAAAAC6E884C28CE00040C04040E0C1204081E639494946338A5B8A021E101C120C1898A522221CF282F28C80282020002FF808F908E819E8091919F919180FF003C4040403C007C1010107C00FF00008000800000008000800000FF01010101010101010101010101FF"
        Games["TICTAC",string] = "12185449435441432062792044617669642057494E5445526B006C0080B081C0A3E6F155A3C4FF65A3B4FF55A3E6F1658B008C1000E06E0160136103A39AD0117008302B123E601371083123123E60136103A39BD01F7008303312546013710FD01A7008303312602366F00A8100A3B4F01EF0654000128A227C126A6010F018F015F0073000128200EE60028E0380E0F055A3D4801070FF8004F01EF165A3AA3E03A3AFD01522C83A00121CA3B4610062006301F06530007101F31E7201321012B43110126A121C6A00A3B46001F01EF865690089042344891423448924234A690089342344894423448954234A690089642344897423448984234A690089642344893423448904234A690089742344894423448914234A690089842344895423448924234A690089842344894423448904234A690089642344894423448924234A00EE890E890E00EE49151354493F135A00EE23667B01135E23667C0123666A01F00A00EE6305640AA3AFD34563027406A3E6FB3323886332640AA3AAD345632F7406A3E6FC33F265F0292394F1292394F229D345730500EE7F8080808080808080808080808080801C2222221C2214081422010000000000000000000101010101010100000000000000000001010101010113051B052305130D1B0D230D13151B152315"
        Games["PUZZLE15",string] = "00E06C004C006E0FA2036020F05500E022BE2276228E225E22461210610062176304411000EEA2E8F11EF06540001234F029D235710172056403841234001222621773061222640384E2650385D2945000EE440300EE640184E422A61246640384E2650385D2945000EE440000EE64FF84E422A6125E640C84E2650C85D2945000EE440000EE64FC84E422A61276640C84E2650C85D2945000EE440C00EE640484E422A6128EA2E8F41EF065A2E8FE1EF0556000A2E8F41EF0558E4000EE3C0012D2221C22D8221CA2F8FD1EF0658D0000EE7CFFCD0F00EE7D01600F8D02ED9E12D8EDA112E200EE0102030405060708090A0B0C0D0E0F000D00010204050608090A0C0E03070B0F84E422A61276640C84E2650C85D2945000EE440C00EE640484E422A6128EA2E8F41EF065A2E8FE1EF0556000A2E8F41EF0558E4000EE3C0012D2221C22D8221CA2F8FD1EF0658D0000EE7CFFCD0F00EE7D01600F8D02ED9E12D8EDA112E200EE0102030405060708090A0B0C0D0E0F000D00010204050608"
        Games["MERLIN",string] = "1219204D45524C494E2042792044617669642057494E54455222F9A31D6010610022CBA331600B611B22CB640422DF6500622822C1C2038020A359F51EF05560176108630183223300700A630283223300710AA317D016621422C1D016620522C1750154501235650060176108A317F30A330412796300129733051283700A630112973307128D710A6302129733081269700A710A6303D016621422C1D016A359F51EF0657501503012B55540126922DF7401122D22F9A3456010610E22CB12BFF215F207320012C300EE83006205D015F21E700885307520505012CF00EEA359834073FDF333F265F129602B631BD0357005F229D03500EEA30F60176107D018700AD018710AD01870F6D01800EEFF818181818181FF7E7E7E7E7E7EDBAA8BCBCBEF088F0DECA0A0B030BE5F5151D9D983828382FBE8088805E2BEA0B8203E80808080F8F785B795F576545654563A2A2A2A39B6A5B6A535"
        Games["BRIX",string] = "6E0565006B066A00A30CDAB17A043A4012087B023B1212066C206D1FA310DCD122F660006100A312D0117008A30ED0116040F015F00730001234C60F671E680169FFA30ED671A310DCD16004E0A17CFE6006E0A17C02603F8C02DCD1A30ED67186848794603F8602611F8712471F12AC46006801463F68FF47006901D6713F0112AA471F12AA600580753F0012AA6001F018806061FC8012A30CD07160FE890322F6750122F6456012DE124669FF806080C53F0112CA610280153F0112E080153F0112EE80153F0112E86020F018A30E7EFF80E080046100D0113E00123012DE78FF48FE68FF12EE7801480268016004F01869FF1270A314F533F265F12963376400D3457305F229D34500EEE0008000FC00AA0000000000"
        Games["VERS",string] = "121A4A4D4E203139393120534F46545741524553208080FF00006300670000E0A21760006100D01171FFD01171017008304012267101A215D01270FFD01270017102311F12386008611062046437650F6602D011D4516801E8A162026802E8A162046807E8A16201680AE8A16203680BE8A16602680FE8A16604680CE8A16601680DE8A16603420171FF420270FF4203710142047001460175FF460274FF4603750146047401D0113F0012B4D4513F0012B81256770112BA730168007801380012BC00E060086104F329D0156034F729D01568007801380012D4430812E4470812E4121E12E4"
        Games["UFO",string] = "A2CD69386A08D9A3A2D06B006C03DBC3A2D6641D651FD4516700680F22A222AC48001222641E651CA2D3D4536E0066806D04EDA166FF6D05EDA166006D06EDA16601368022D8A2D0DBC3CD018BD4DBC33F001292A2CDD9A3CD013D006DFF79FED9A33F00128C4E00122EA2D3D4534500128675FF8464D4533F0112466D088D524D08128C129222AC78FF121E22A27705129622A2770F22A26D03FD18A2D3D4531286A2F8F733630022B600EEA2F8F833633222B600EE6D1BF265F029D3D57305F129D3D57305F229D3D500EE017CFE7C60F06040E0A0F8D46E016D10FD1800EE"
        Games["CONNECT4",string] = "121A434F4E4E454354342062792044617669642057494E544552A2BBF665A2B4F655690068016B006D0F6E1FA2A5600D61326200D02FD12F720F321E1234D021D1217201600AA29FD021D121A29FDDE1FC0ADDE14C05127E3C04126A7BFF7DFB3D0A127A6B066D2D127A3C0612987B017D053D32127A6B006D0FDDE11250A2B4FB1EF06540FC12988A0070FBF0558983A29E3900A2A1DDA4A29FDDE1125060F0F0609090608080808080808080808080808080801A1A1A1A1A1A1A1A1A1A1A1A1A1A"
        Games["PUZZLE",string] = "6A126B01611062006000A2B0D127F0293000DAB571087A0831301224611072086A127B08A300F01EF05570013010120A6A126B016C0062FFC0067002225272FF320012386E006E00F00A22527E017E01124884A085B086C0300212644501126475F876FC3008127045191270750876043006127C4412127C74F876FF30041288442A128874087601A300F61EF06581006000A300F61EF055A300FC1E8010F055F129D455DAB58A408B508C6000EEEE5EFEFEFEFEFEFEFEFE"
        Games["GUESS",string] = "6E0100E06D016A016B018CD08CE24C00122088D0223E3A4012206A017B063C3F7D013D3F120AF00A400589E48EE43E4012026A1C6B0D889000E0223E123CA294F833F2652254DAB57A0481202254DAB57A0500EE8310833483348314A262F31E00EEE0A0A0A0E04040404040E020E080E0E020E020E0A0A0E02020E080E020E0E080E0A0E0E020202020E0A0E0A0E0E0A0E020E0"
        Games["KALEID",string] = "60006380611F620F2232A200F31EF00AF0554000121C7301330012086380A200F31EF0654000121C73014300121C2232121E400272FF400471FF4006710140087201A2776AE08A126B1F81B23A0072016AF08A226B0F82B23A0071016B1F81B2D1218A106B1F8B25DAB16A3F8A15DAB18B20DAB100EE0180"
        Games["MAZE",string] = "A21EC2013201A21AD014700430401200600071043120120012188040201020408010"
        Games["SIRPINSKI",string] = "12054338506000850060018150A3E6F11EF055601F8A0060008B00A3C2F065A3C2DAB16001A3C3F055601FA406F0556001A3C4F055A3C3F06585006001810080508014A407F055A3C4F06585006001810080508015A3C5F055A3C4F0658500A3C5F065A3E6F01EF0658600A3C4F06587006001810080708014A3E6F01EF0658100806080138150A3C6F11EF055A3C5F0658500A3C5F065A3C6F01EF0658150A3E6F11EF055A3C4F065A3C6F01EF06585006001815050106F013F0012F9A3C4F0658500601F8100805080148A00A3C3F0658B00A3C2F065A3C2DAB1601F8500A3C4F0658100805080158A00A3C3F0658B00A3C2F065A3C2DAB1A3C4F0658500A407F0658100805082108105812090106F003F011321A3C4F0657001A3C4F0551247A3C3F0658500A406F0658100805082108105812090106F003F011349A3C3F0657001A3C3F055122F13498100A40862018E25FE1EF06500EE62016300830481253100135D803000EEA408FE1EF6556600820082153F0113958300830684106501823082453F01138F840E850E1381804586541371F565806000EE820080153F00139B802000EEA3BFF033F265F029D3457306F129D3457306F229D34500EE2863298000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        Games["ZERO",string] = "600A6505660A670F68146101620163016401600AA278D056700AA27ED066700AA284D076700AA28AD0866A03FA15600AA278D056451461FF450161018514D056700AA27ED066461462FF460162018624D066700AA284D076471463FF470163018734D076700AA28AD086481464FF480164018844D086122AFF030C30C0FFFFC0C0FCC0FFF0CCCCF0CCC33CC3C3C3C33C"
        Games["PIC",string] = "00E0A2486000611E6200D202D21272083240120A6000613E6202A24AD02ED12E720ED02ED12EA258600B6108D01F700AA267D01F700AA276D01F7003A285D01F700AA294D01F1246FFFFC0C0C0C0C0C0C0C0C0C0C0C0C0C0FF80808080808080808080808080FF81818181818181FF81818181818181808080808080808080808080808080FF818181818181FF80808080808080FF818181818181FF818181818181FFFF"
        Games["IBM",string] = "00E0A22A600C6108D01F7009A239D01FA2487008D01F7004A257D01F7008A266D01F7008A275D01F1228FF00FF003C003C003C003C00FF00FFFF00FF0038003F003F003800FF00FF8000E000E00080008000E000E00080F800FC003E003F003B003900F800F8030007000F00BF00FB00F300E30043E000E0008000800080008000E000E0"
        Games["RUSH HOUR",string] = "2D469010151D1ED05B6279206861705D9A00880084358800886A802784358027886A841922EA127A22BC23461238231622BC127A22EA23463BFF127A6600650726633E0A169B00E0686E2DBCA7EBF26541051274A802F11EF0654003127472F6502012747001A802F11EF0552DBC2D4650102EDE155122EA2316A7FEDBC5A7F0F665E5A113DCE2A17001E1A17002E3A17004E6A17008400012B8FA073A00127EF415E4A16502A7FEDBC585F1A40BF01EF065A2B7F0551230F015127E4B2300EE4C0100EE350312E624859A9000EE80A070FFA816DB01DB014F0100EE89B027637AFB276324297CFB00EE4B2300EE4C1A00EE3503131224859A9000EE7905A816DB91DB914F0100EE89B027637A05276324297C0500EE4B0500EE3503133C24C9996000EE809070FFA817D0C3D0C34F0100EE8AC0276379F3276324297BFB00EE4C0B134E00EE4B1E13404B2300EE3503137224C9996000EE7605A817D6C3D6C34F0100EE8AC0276379FD27632429462313767B0500EE7B0586B08B907BF3A816DBC1DBC14F001392A812DBC5DBC54F0113B04B05139A7BFB137E8B802D54680937006816470168102DBC6A0B88B066FF63008B60620BF218F21579F82763730123D4330B13B800EE6001F018682C2DBC6021F015F007300013D400EEE5A113DCA7FEDBC52D54681D2DBCF90A681D2DBC390A13F823C8169D2DBCF90A68252DBC390A140823C815592D54127A30362824303428782E3628762E3428000000363B142C31080000002C31A41CF465F5187D01A41BFD3341091445F129D3457101F129D34500EEF029D245F129D345A41CF165F029D245F129D3454D64145F00EEA425F3656D00770147646700A424F733F029D245F129D345A425F165F029D245F129D34500EE68018AC089C0A812DB95DB954F0114A57905DB95DB954F0114A57905780200EEA816DBA1DBA14F0114BF7AFBDBA1DBA14F0114BF7AFB780200EE809080A5400A780200EE68004C0B780489B086B0A81AD6C3D6C34F0114ED7605D6C3D6C34F0114ED7605780200EEA817D9C3D9C34F01150779FBD9C3D9C34F01150779FB780200EE80608095400A780200EE2D54F91868362DBC602D23D200E0A895FA65F315A896F21EF165A874F01E23D4D4A7F11ED9A7FA18740879F8720232081523600A23D2684D2DBC2D4650101F2C23D068612DBCF00A00E0600F23D2A891F165A70BF155A7F6F565A828D54675083540156DD40DD41C74083428157572066108A7994220A795D215A802F31E7301F065A7FB3000D214422015BB6107A802F31EF0657106411F157FA794D216400015A5A7FAD21570FF15A5683C2DBCA888FE65670A2635A78ED7B123D4F90AD7B149011511490A167F6006F015263D6600490515FF4908160D4909161D390715C5470A15C57CFF77FA66FF6574162F4B0A15C57DFF7BFA66FF65BA16314B1C15C5472215C57D017B0665461631472215C5371C16293B0A15C57C017706658C2663266315C580C081D0A7ECF155A41EF5654E001655A55AD05175FE80E0400A600FF029D155A7ECF165F129D455F029D35500EEA70BF165826081544F01167546FF70FF167946007001A70BF15500EE4F0116972D54F91868302DBC602D23D268302DBC2D5415C72D5423C87E0100E02D5468002DBC263D88E078FF800E88048852888EA20CF765A214F81EF36585108730A20CF755A7DFFC65A41CF155A425F155A8572751620FA8682751FC29D3557305334016DDA7ABD4CAD46AD45CDCCADC6ADC5CA828D7AFD78F7708372416F5A78DD46768FF3B0017156B08A8A0FC1EF0658D007C017BFF8DD64F00172378013803170548FF173B4A0B7804276388864F01173B79FD88864F01790579053923170369057A053A1F1703A7E3FD652DBC14086029D0247008404100EEF71E17532D1F1B24A20BF81EF165808080064F011785A75FF01EF065A79DF11ED9A5F01E7908D9A500EEA79DF11ED9AF00EED08080808080D020F8888888F8888C88F8D8D8D8D8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F8F8F8F888A8A88888A8A8A88888A8A888F888C8A89888C8A89888C8A89888F888A8A88888A8A888F80000000000012C23140A04100501000000000501000905080A01071402000000707070F8F8F87000000000F8D8D8D8D8D8D8D8D8F8000000000020000080000008FF8891A2FF80B380FFFF80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFC80FCFDFE8A1222FE029A02FEFE02FEFEEEE602E6EEC0404040C0C040C0C083E494E3338AAA1A083848383838383838F1AAAAA9945549888C5004D8FCE6E6E4F8ECE6E6E6FEE6E6E6E6E6E67CE6E07C06E67CE6E6E6E6E67CA8A00A010A00000A00100606003901E19F4700863800E3301F73604A0000A047BC010100CF0308ECC03800797B3C31C7100419F1AFA7610007D6862146600000E869DA88DAE5005658F1FB8331004DE13F38B02200DF0308ECC038008BE711E0600E00358C37798225010DD0D6463005004AFDFF071B9002B59FB00F0E08003BA8863C673B00ED093E388403002C3016340E0000E3341A0FB0E000ED792038001C00ECC627184DE600DCB3206C411C002C06D3086702004DE13FE3300B02E6C69ED80EC610EB111A8F30E0003778059B9E5300E73184AD6876006F872194070A0039ACC5F3097000FD0282D5630400F60282D56B7300E3301F738329017C8F11ECD026007F599EB8C114004DF1FFC1811501E3341A8FB0E000EC301A9F6C41009FB1F1C80DA6047AC02FF0011000ECF009469339000DA67F61C15600F71B434CD9080EE69E8DA09E2500EC62166C3DE20067DBC1B700EB00EA0F2C59070A00DE1A3662CD18705A627CC20F28006D0C69D380D601F682D2EFD08000EB076830C75A007303FA6DC1E628BBE76803E28600BFF5301A4C18070D3FFE09075604DFC6F0C80DA6044BEA632CD80A00D63016B47E84036BDE80A61F5002D373B40171E30056646D40D3E6006B81B5642DE0002BECF2B68C611CBF1B3CB1061C05B711BEC18476006A6C847F0BA2033BD817D66018075B1EE893358C035BF14A9FB1800356AC0FBE013900F3827D60672C012ED692B5BDD001B72DC858622D000A3F82ACC51C00DC33206D6CC4015658F1FE3C03024D50634F34130037CF9058CD04016F0D71BF0C031C3F42EFA60D4801DCF3C980DC3800EE4734FE891D0AF8C01F66010E00C71FFEB0622B00BBBD83250F7400BE46CF59832901C703876D872500E6B0F7C1790604AC6173EC8B11046D0C713B2FAC00DF199EE6C02E02ECB2FF0F3E000AF8620EAC1FE00056DCFFA1B015007F5ED0E881E000FC6105D3DED10166417F239E2500ED7920E0CE7600E96B6E3C525C00BF1B3DB1069C033F0B70D378A403D68671AC650C01BBE76803E2C601EB3786D83B3838BF833DF1044B044DE13FE3C08A0067DBC15A1EE800DDCF519AC6E900DCB3E4F900E10037BFC027C07100ACC1BBF90F2614D3C680760F5300CE6313ACB01500BD3D80E05B1000B5054FE3B01500BFA2A7713C0B0237BFC0070B5000B7FF05A2C18402ECC6272C63190733C1BE21B92101B75FF032805D04B31E5903CA8800560F2F286C0500B6436BC86F0B10376B081BA00000CF02B439DE1600D77F43606B40017E1A3DD106A4004D0F4FE3C00A003BD81718D176006F87A64D8005015B313EA6C0120067033E6687AD08761B43DE0EC610F9013EB0433B00198BE713E03800ECF2B30095150059431A331E29009ADF80660D261C56581F9C6709003716B47D03A20003EEBF8D004B00DF30A2693C520056AF7FC2C106045658B1FF8305017683F9180BD601DF92A7D180A600BFC29ED0784401B50168EFB005015BF10A32BFE000FC820956AF7100583F86BCC212012DF13EE6C08800EC60341A6FC201DCB38CB00571007603B47D8F111C6BF17C80601D004DF15E38C388003C80F007040700BD070480050000C73324EF01E000DF072634861C007390DB341E3900EB87218C8F6108B527F8606C4401BFF580360DB80EFE363CF20D080737DE607A62C105AEF0F06570018100AEF0F06500EE623B611AA7AB6002F015D21623D472FB32271D5AA862D21600EE82020203004084C4A4A0A064A0024300408282008085E590E084A0C0A4A44040A4A0408044A020C38380804383C08044A080648080659090648020C420A060E42080E01575907010F6A8AEA85050ADFAF81EF56578026AF86603F615ADFEF81E7801F065800E86F08006AD6EF01EF3654600860080A281A282A283A2A208F355A208D454460100EE8464840523D41DC62A1B4A3B122C0202822D1B0712322F912D1B323535A82D1B162B2B2C912A1B272F2C27208B2A1B4408122C8B301B35992D1B283532992C1B153B3299020132063535382F0115353B2743382FAC010A2C273B2B2B1232010E3B480116083F3F28AF0C1816272F3838013B01192FA00D034A2F2828014335072F91010A0807283532192F4301072F1D2C01382FAC0211163B38384A3527438D301B07B5181216283BA01418080728353299010A352712240D01073515032C061207192B088702112B35270100320612160001152001063B168200E068AA2DBC23D02DBC606E151B601323D22DBCA803F365800E800E8011833E833E8321610A620582038133A208F355632B61106200A208F21EF065F029601123D2D3157305720132041F0600EEA8286010D016700830301F2200EE23D0689C2DBC2DBC61112F1EF30A43051F4843081F54430A1F601F3841111F382F1E61112F1E1F3841171F382F1E61172F1E1F386001F0186205F2152F1E73FF23D433001F664111155900E06402650E688D2DC2AFF5F865AD02D131F00AA208F71E7701F055AD02D131F029D125F61847041FAC7105AD02D131E0A11FA61F882D54A208F3658143825352001FEE51301FEE8100823080068006833683368162826241001FD640001FEE42001FDE41001FEE43001FE642001FEEA803F35523C81559F4182DBC23D0151D2B0D110A05030098"
        Games["BOWLING",string] = "63146400255E600525B4630C25BC690689B53B004F00120CFB29D6458DB07D096314640C257A600525B4630C25BC690989B54F00122CFB29D3453B0012466B0A6307600125B480B0A6A6F0556E0063146418600525B4A64A25B6600E25B425B4600D25B4630C25BC690389B53B004F001266FB29D34560004B0260044B016008A4A9F05525DEA69460006100F05571013112128C6C0A7E0126086A00237663006410255E25C680C025B46302641B257A25C680E0259663306400A67CD3497308D349A696FC1EF0656401300112EA6339A66FD347A6A7F0656332640225B412F4633A6402FB29D34512D4400012E06331A675D34725DE9CD012FE7C01129800E063006400257A25C680E0300E131225B4131425966C0A6300740980C025B425C6A68AFC1EF0658500A690FC1EF065259825F49CD013447C01692489353F0113166325131A633764004E0E134AA6A6F0659E00135A2596F90A1294F90A6E0E6C0A26084000136E6A0040016A0123769CD012FE7C01136025DE00E0A68462006100D121710831401380721F421F137EA68561006201D12F6210D12FA6476127620ED124612D620A2590D1246133620625902590D12461396202259025902590D1246B00A6426101620E631A6401D125682269026501E5A114106502E5A114146503E5A114186505E5A1141C6507E5A114226508E5A114206509E5A1141ED12592301406824413CC340113C8630164FF13CC79FC142279FC142079FC141E79FE7809780925EE248EA690FC1EF0658800A696FC1EF06589003A001466490314583900145C26264B0A14842614A6A780B0F0557A013B0A13C0139A262679FF262679FF3E0E144214484901147A2626A6A7F06580B4400A148625DE1488262679FF3E0E146A147679017901261400E000EE63006F003F0014AED1255180149E839071038234413D00EED125600025E01492D12566276702642A84153F0014F8643084153F0014CE643684153F0014F6760C760642001514640584253F001522640D84253F00151E641584253F00151A641A84253F0015161514760C42001514640984253F001520641184253F00151C641984253F00151815EE770477047704770477047704A647D6743F001530D674A64214987B0125EAC0078004B53A1550154E154A15481550154E154A771077F81554770877FC7606641B84753F001522152CA64A25B6A64DD3457304600A25B4A652D3457304600E25B4A65A15B6600F25B4A65A25B6600A25B4A65FD3457306600E15B4D124720800EE6500A6A8F033F2658050300015AA310015AC15B025B4801025B4802015B4F029D345730500EEA664D347FB0AD34700EEA66BD344730200EEA656D342730300EEA65815D0604015E060A0F015F007300015E200EE600115F06008F01800EEA696FC1EF065400000EE400115CE400325D615D600E0FC29631E640D25B615F4A690FC1E8080F055A696FC1E8090F05500EE88B4606380853F0000EEA68AFC1EF0657001A68AFC1EF055789C00EEF8F8F8F8F8F09090F090F080808080E0A0A0E0404080C0C0F090F0A090D8A8888888F09010704000700080008000040C1C3C7CFCFCFCFCFCFCFCFF81818181818181FF80808080808080808080808080808000000000000000000000000000000000000000000000"
        Games["LANDER",string] = "12026330F315A41461056200256CA438610862122568A4566100621A25422542179800000000A4E161006200D1217201321F122C612E6200D1217201321F123815B6A4D161006200D125A570FA33F26563316406225800EEF029D3457305F129D3457305F229D34500EE0000A4D661186200D125A573FB33F26563316413225800EE0000A4CC61306200D125A576FC33F2656331641A225800EE00006AFA6BFAA570F26563316406225800EEA573F26563316413225800EEA576F2656331641A225800EE000000006602C70F6800770B6E026302E3A123D26304E3A1257C6306E3A1236E12E67C018EC07BFF4B00165E4B1A23947EFF780123EA3E0012EAC001300013087701130A77FF22A0224A22AC227423EA22B8228C12D000006302E3A113D200EE63006A966BFA6C04A34661306200252EA3556130620D252E224A2274228C12C80000EA8AEA8A8EE888E888EE0000000000EE88EE888EEE84E484E400000000007AFF3A0013D618540000F61877017AFF4A00185423EA6306E3A1136E00EE77FFC0F8FEFFE080A3846101620CD12600EE25BEA4E261006201D12FA4F1720FD12FA50061266201D12F720FD12FA51E610D6218D127A525611F6218D127A4DE6100621FD1217108313013C600EE0000F61813643C007CFF4BFA13E64B1A13E67B0178FF3E007EFFA4DBD7856F00A4E1898079058D70DD914F0116D4DD916F007D07DD914F0117F4DD91A4DBD785131C00008A8A8A8AEE8BCAAB9A8ABCB4BCA8AC47454745754564544C45EEA8AEA8EEF0D0F0A0B00097A4C7A4975154712521C341D901C1AB2B3B2A2AD555D594DDDC08C848C897A4C7A49751557124204342EB42438302BB8083BB12939292BD959D95BD4544444475EE284E88EEEF8D8F8AEB7754775157555575505500EE8A8E8AEAEEA4E48484EAABEAAAAA2020A06020EEA8EEA2AEEF4D4F4A4B74565554745D555DD5555C484848C806EEA4E4848E8E8A8A8AEEE04040404000EE88EE828EE888E8888EEE84E48484183CA5FFBD008040404040404060606060606060707060606060606070706040400000000003010F0F0101010100000000000000070F0F0F0F0F0F0F0F0F0F8F8F8F8F28F8FC7C787C7C10303078F8F0F8000063006405D1257301F41E71083303153200EE000063006405D1257301F41E71083304154600EE000063006405D1257301F41E71083305155A00EE252E152E252E154201040900040700020100B3BFF61877FF7AFF4A00185423EA6304E3A1157C00EE5848A59E61266214159AD12600EE030FFF7F0701FF00A5A46109620FD121610B6210D12117722592238A25A613262592238A25A600EE474780FFA8ABA8AE88FFF080A080A0A0F00022A0224A22AC227422B8228CA76CD7864701163A4702163A4703163A4704163A4705163A4706163A4724161247251612472616126DFF163A00006E007702A5C8D78178FF7E013E0D1618A5C977F47801D7877708A5D0D78717FCF888A888A8A8F8006E007702A5C8D78178FF7E013E0D1640A5C977017801D7877708A632D7873DFF17FC18166F00660586C53F01168015D80000000000000000BDFFA53C18381078D8D878103800A677770278FDD78826A8168CA677D788A67277FE7804D785A47E610C6200252E6D02FD18169825C422A0224A22AC227422B8228C00EE414AAE5DBBBDBEB0B2B44C40484D47414342B56A292CE3C4DF2F1F2F882027486E0226DC1740A4DBD786A6C8D78678FFFE18A47E610C6200252E7D013D0A16DE6D0000EEA6D27702780D8570868080708980D781D781273A78FF700175FF76FE79FED782D782D092D092D562D5627D01273AA47E610C6200252EA6D23D05170E173817566E02FE1800EE780A26E016FA17426D00F81826A88A708B807B0500EEA47E610C6200252EA76A1762DAB26E02FE181756C0C0183CA5FFBD24611F6217D12100EEEEAAAEA8E8EB4A4A4A4BA2B2AAA6A230901390387010764070E020E020E01892610962082568F00A400117B0400217CE400317D817A018A0600BF0556096A327F055A32960FAF055A2CD6000F05517EA17EC0000A5AF600EF055A66118AA18B26064F055A3296020F055A2CD601AF055F307330017EA00E0122627487A0716D6BFBB6F00603180A53F0018324C0018424C0118424C021842183600006F00604F80A53F00183218060000A4A26103620025566E02FE1800EE282418322824A4BC610B6206252E18362824A48E61086206254218426AA1A4DBD785A677770278FDD78826A8A677D78877FE7803A672D785D785A34661306200252E6E02FE187BFF7C0178014B1B23943B00186626A827487A036E0226E01740A673611B620FD121A77A179A0000A6616005F055A5AF17B26003F05560C817B8A6616003F055A32717DA76F6327F00101800FF7EC7FD805035C9A42E6780008010006FFF7F733800C917B727A33F000094C8FFEFFFEDC890FEFCFF27293090588C12FF7F7F7791801FE962D73B2B"
        Games["SPACE FLIGHT",string] = "00E0A40863006400651FD341D351730843401216120A63006401653FA409D34AD54A740A441F122A121EA41363116406D347A41A7308D347A4217308D347A4287308D347A42F630E6414D347A4367308D347A43D7308D347A4447308D347A44B7308D347600FE0A1126C126669036A046B016C006D0F4B0B6B0A2284600EE0A1130E127E00E0A40863006400651FD341D35173084340129A128E63006401653FA409D34AD54A740A441F12AE12A2A42F630A640CD347A4367308D347A43D7308D347A4447308D347A44B7308D3474B01A4524B02A4594B03A4604B04A4674B05A46E4B06A4754B07A47C4B08A4834B09A48A4B0AA4917305D3474903A49C4902A49E4901A4A060026102D01200EE231CA49ADCD2600FE09E1316135800E0A4984B01631E4B0263284B0363324B0463374B05633C4B0663414B0763464B08634B4B0963504B0A6355C434740AC61FD46173FF43FF00EE1348DCD26001E0A17DFF6004E0A17D017C02DCD24F0113964C3E137E6005F015F007300013761358DCD26C006005F0187AFF3A00135A6A046C006D0F7B0112766008F018600FE0A113A2139C79FF6C006D0F6A04490013B42284600E127E00E0A40863006400651FD341D3517308434013CA13BE63006401653FA409D34AD54A740A441F13DE13D2A4A264086314D3477308A4A9D3477308A4B0D34763146411A4B7D3477308A4BED347A4C57308D3471406FF80808080808080808080FB8282FB0A0AFAEF2828EF080808BEA0A0A0A0A0BEF88080F88080F8FA8282FA8282830F0202020202EFBE2020262222BE8B8888F8888888E0808080808080080808080808083E02023E20203E3E02023E02023E2222223E0202023E20203E02023E3E20203E22223E3E0204081010103E22223E22223E3E22223E02023E2F29292929292F8000E0E0DBDBD8D8C0C0FB8282838A8AFAED2A28E8282828BEA0A0BEA0A0BEFA8A8A8A8A89F82F28282F28488FBE2222BE2824A2"
        Games["DEFLECTION",string] = "6A006B00680A6C016D016E0A6750690024006490243E00E0C037C117A54CF155A530D0171228D011C03FC11FA54EF155A548D0113F001226A54CF1657001710184C03E0A84D0F429D015124ED015C038C118FE29D0153F00124C64A0243ED015F20A420012C849321260A53742011282A53C42021282A54042031282A54432041260601E610ED0156405243ED0156309E3A1129C73FF330012901286430512C0244840FF600041FF6100643C42026440904070FF641C42016420914071FF1286F30A247A790512606700F30A430012CA430512CA640984353F0112CAA54EF165A548D011244840FF135841FF13584040135841201358D0114F0113026405243E12E2D01124A44200131024C0D01112E247001358A54CF165A53063056415D017F418D017243E73FF3300131C3E0A133E80C024F48A144F01135E7C01134A80D024F48B144F0113627D0178FF480013643E0A120A6E0B120C6430F418134A6AFF13646BFF2400A5309AB0136A600D61078BA53F00602D6440D017243ED0176440F418137676AC7795CCDCA08110C05544E42C01CC9CD34BC8EE6D0C40B8DC8A5CB421346333B3333363B873B3BB3631353233327F733193373293F33203B213349BFFF2F7BF3FBBB2B6AC7FFBB3BBBFDDF3FFB11198B57F3FBEAFBBB983ADEAFBCCCECCC8ECECDACCDCFCCDCACC8CC8E8CEECA8CDCACCCCC4CC6CCCCC8DECD9CD00E065086610A549FA33F265242C6528A549FB33F265242C650E6608600AF029D565652E600BF029D56500EEF029D5657506F129D5657506F229D56500EEF415F4073400144000EE430370014306700143097001430170FF430470FF430770FF430771014308710143097101430171FF430271FF430371FF00EED015A500F71E42016306420263084203630942046307420470046405F255244874FF34001496770F00EE85008610A5507490F265505014B6916000EE74FF340014AC620000EE850086104201A5004202A50C4203A5184204A5246206F165930014EA72FF320014D680508160A54800EE83106405F418770114E26100810477FF370014F600EE010702080309070108020903010303010406060407090907020403070402060807030806010902060408060208040901FCFCFCFCFCFCFCF80000000080808080804020100810204080000000111314091807031908031A09031B0A031C0B03240704230804220904210A04200B042000032101032202032303032404031300041201041102041003040F04040F0F01100F01110F01120F01130F010C04040B05040A06040907040808041904031A05031B06031C07031D08030910030A11030B12030C13030D14032C10032D11032E12032F13033014032B17032C18032D19032E1A032F1B03E6EDCDCE39D5A9504D106C6E27E802B3A18DB5D0CFBEDCE6D14F"
        Games["TRON",string] = "00E0A34C6312640BD3497308A355D3497308A35ED3497308A367D34963006400600FE0A1122E600BE0A112341220650100E01260650200E060006100621FA34CD011D02170084040124C124060016100623FA370D10AD20A700A401F12601254A3706C206B0F6A1F6D0F66FF670068016900DAB1DCD16000E09E1278600AF0186001E0A122FC7003E0A123067003E0A123107003E0A1231A6003E0A123247009E0A1232E70FDE0A123387005E0A123428A648C848B748D94DAB14F0112D0DCD14F0112DA6002F015F007300012C8128000E07401440A640012E200E07301430A6300600AF018F3296019610DD015A37A7006D014F4297005D0151220470100EE660067FF00EE47FF00EE6600670100EE490100EE680069FF00EE49FF00EE6800690100EE460100EE66FF670000EE46FF00EE6601670000EE480100EE68FF690000EE48FF00EE6801690000EEFF80BE8888888880FFFF00FB8AFA928B00FFFF00E82C2A29E800FFE020A0A0A0A0A020E08080808080808080808000400040"
        Games["BRICK",string] = "6E0565006B066A00A30CDAB17A043A4012087B013B1212066C206D1FA310DCD122F660006100A312D0117008A30ED0116040F015F00730001234C60F671E680169FFA30ED671A310DCD16004E0A17CFE6006E0A17C02603F8C02DCD1A30ED67186848794603F8602611F8712471F12AC46006801463F68FF47006901D6713F0112AA471F12AA600580753F0012AA6001F018806061FC8012A30CD07160FE890322F6750122F645C01318124669FF806080C53F0112CA610280153F0112E080153F0112EE80153F0112E86020F018A30E7EFF80E080046100D0113E00123012DE78FF48FE68FF12EE7801480268016004F01869FF1270A314F533F265F12963376400D3457305F229D34500EEF0008000FC00AA00000000006E0500E01204"
        
        Cart = "PONG"
        
        Screen[1048572] = 32
        Screen[1048573] = 64
        Screen[1048569] = 2
        Screen[1048575] = 1
        Screen[1048574] = 1
        Colour = 0x9999FF
    }
    
    LastSaid = Owner:lastSaid()
    if (changed(LastSaid)) {
        if (LastSaid:upper():left(5) == "!LOAD") {
            Mode = "reset"
            Cart = LastSaid:sub(6):trim():upper()
        }
        if (LastSaid:upper():left(6) == "!RESET") {
            Mode = "reset"
        }
    }
    Thanks to Divran and dlb for helping me out with some optomisations and initrd.gz for adding hexidecimal support to E2, made my life alot easier.
    Attached Files Attached Files

  2. #2
    Spucatum Tauri Bull's Avatar
    Join Date
    Jun 2008
    Location
    Finland
    Posts
    6,217

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    very impressive!
    My signature has a point.
    Quote Originally Posted by Squeakyneb View Post
    when l3ulletje says do it, do it.
    That
    Quote Originally Posted by Anticept View Post
    By the way, Bull is in charge.

  3. #3
    Alopex/Vulpes Lagopus DanKing's Avatar
    Join Date
    Aug 2009
    Location
    Bergen, Norway
    Posts
    912

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    Awesome, +rep

  4. #4
    Wire Amateur StefanMajonez's Avatar
    Join Date
    May 2010
    Location
    Earth
    Posts
    69

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    It's somewhat funny that your first post contains so much win. +rep
    I am ze wirerer.
    I like to use Expression 2 Tool. Usually my own codes.

  5. #5
    Wire Amateur Manic's Avatar
    Join Date
    May 2009
    Posts
    85

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    Quote Originally Posted by StefanMajonez View Post
    It's somewhat funny that your first post contains so much win. +rep
    Not his first post
    Join Date Jul 2008
    Posts 193
    Blog Entries 1
    On-topic:
    Awesome work.

  6. #6
    Ursus maritimus Drunkie's Avatar
    Join Date
    Feb 2009
    Location
    Canada
    Posts
    6,690
    Blog Entries
    1

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    My friend did something like this with CPU. It also used strings as games, not sure which one it was. Anyways, nice job man!

    EDIT: I asked him what it was, he said it was also chip-8

  7. #7
    Developer Jack37's Avatar
    Join Date
    Jul 2009
    Location
    Slovakia
    Posts
    1,325

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    Awesome, I love it.

    Only the small secrets need to be protected. The big ones are kept secret by public incredulity.

  8. #8
    Wire Noob Blaziken584's Avatar
    Join Date
    Nov 2010
    Location
    Hyrule =3
    Posts
    5

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    I just jizzzzzzzed myself when I saw this O_o

    Very nice work =D

  9. #9
    Wire Sofaking thetree's Avatar
    Join Date
    Oct 2009
    Location
    England
    Posts
    946

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    Wow dude, this is pretty damn cool

  10. #10
    Hickley Likes This Unsmart's Avatar
    Join Date
    Dec 2008
    Location
    /dev/null
    Posts
    2,100

    Default Re: Chip-8 Emulator 99% Speed and Compatability (Code & Dupe in thread)

    Now bring the promised color support :P
    Server permanently down
    AC-130 Hologram contraptions 1 Holo contraptions 2 EGP stuff Holo minigun Holo javelin rocket launcher
    Unsmart: I doubt the intelligence of some people.
    Drunkie: Nobody could have said that any better than Unsmart.

    Divran: there are more retarded people than there are clever people in this world

Page 1 of 4 123 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
unnecessary
unnecessary
unnecessary
unnecessary
linguistic-parrots
linguistic-parrots
linguistic-parrots
linguistic-parrots