Announcement

Collapse
No announcement yet.

A Game Genie [NES] Project

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • A Game Genie [NES] Project

    This is a project I'm working on in QB64 (a BASIC language), you'd have to download QB64 to compile the code (it's on www.qb64.net), it features a simulation of the Game Genie environment, and will in the future feature encoding and decoding of Game Genie codes, it will also be easy to change the Game Genie code one address up or down, as well as change the value (similar effects of codes are often close to eachother which makes this a useful feature), it will also feature the values for the opcodes and the variations of them (to be easily inserted into a code as a value). It's still plenty to do to actually get it to that state though, but you can write codes (either using the keyboard or using the mouse clicking letters, right mouse button deletes a letter).

    Code:
    'Game Genie Helper 
     
     
    DIM gamegenie$(1 TO 7) 
     
    DIM gg$(1 TO 16, 1 TO 7) 
     
    DIM rowcol(1 TO 3, 1 TO 8) 
     
    _TITLE "Game Genie Helper" 
     
    FOR g = 1 TO 7 
        READ gamegenie$(g) 
        FOR c = 1 TO LEN(gamegenie$(g)) 
            IF MID$(gamegenie$(g), c, 1) = "O" THEN MID$(gamegenie$(g), c, 1) = "Û" 
        NEXT 
         
    NEXT 
     
     
    FOR a = 1 TO 16 
        FOR b = 1 TO 7 
            READ gg$(a, b) 
            FOR c = 1 TO LEN(gg$(a, b)) 
                IF MID$(gg$(a, b), c, 1) = "O" THEN MID$(gg$(a, b), c, 1) = "Û" 
            NEXT 
        NEXT 
    NEXT 
     
    READ place$ 
     
    READ plus1$ 
    READ plus2$ 
    READ plus3$ 
     
    img = _NEWIMAGE(1000, 2000, 256) 
    img2 = _NEWIMAGE(800, 600, 256) 
    SCREEN img2 
     
    co = 35 
    currow = 1 
    curcolumn = 1 
    rad2 = .5 
    DO 
        _LIMIT 60 
        CLS 
        _DEST img 
        CLS 
        IF co > 45.5 THEN codir = 1 
        IF co < 35 THEN codir = 0 
        IF codir = 0 THEN co = co + .35 
        IF codir = 1 THEN co = co - .35 
        COLOR INT(co) 
         
        FOR g = 1 TO 7 
            LOCATE 4 + g: PRINT gamegenie$(g) 
        NEXT 
         
        FOR g = 1 TO 7 
             
            FOR l = 1 TO 8 
                IF sel = l THEN COLOR 15 ELSE COLOR 11 
                LOCATE 14 + g, (l * 8) - 7 
                PRINT gg$(l, g) 
            NEXT 
            FOR l = 9 TO 16 
                IF sel = l THEN COLOR 15 ELSE COLOR 11 
                LOCATE 23 + g, ((l - 8) * 8) - 7 
                PRINT gg$(l, g) 
            NEXT 
        NEXT 
         
        FOR row = 1 TO 3 
            FOR column = 1 TO 8 
                COLOR 8 
                IF currow = row THEN COLOR 15 
                IF currow = row AND curcolumn = column THEN COLOR INT(co) 
                IF rowcol(row, column) = 0 THEN LOCATE ((33 + 3) + (row * 8)) - 3, (column * 8) - 7: PRINT place$ 
                IF rowcol(row, column) > 0 THEN 
                    FOR dr = 1 TO 7 
                        LOCATE 32 + (row * 8) - 3 + dr, (column * 8) - 7: PRINT gg$(rowcol(row, column), dr) 
                    NEXT 
                END IF 
            NEXT 
        NEXT 
        rad = rad + .4 
        rad2 = rad2 + .4 
         
        IF rad > 6.28 THEN rad = .1 
        IF rad2 > 6.28 THEN rad2 = .1 
        cix = COS(rad) * 15 
        ciy = SIN(rad) * 35 
        cix2 = COS(rad2) * 15 
        ciy2 = SIN(rad2) * 35 
         
        COLOR 9 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix2 + 8, (currow * 129) - 129 + 623 + ciy2), plus1$ 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix2, ((currow + 1) * 129) - 129 + 510 + ciy2), plus2$ 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix2 + 8, ((currow + 2) * 129) - 129 + 397 + ciy2), plus3$ 
         
         
        COLOR 15 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix + 8, (currow * 129) - 129 + 623 + ciy), plus1$ 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix, ((currow + 1) * 129) - 129 + 510 + ciy), plus2$ 
        _PRINTSTRING ((curcolumn * 64) - 45 + cix + 8, ((currow + 2) * 129) - 129 + 397 + ciy), plus3$ 
         
         
        _PUTIMAGE (0, 0)-(800, 600), img, img2, (0, 0)-(1000, 2000) 
        _DEST img2 
        DO WHILE _MOUSEINPUT 
            xmus = _MOUSEX 
            ymus = _MOUSEY 
            lmus = _MOUSEBUTTON(1) 
            rmus = _MOUSEBUTTON(2) 
        LOOP 
        LOCATE 30, 1: PRINT xmus, ymus, lmus, rmus, INT((xmus + 3) / 52) + 1 
        IF ymus > 66 AND ymus < 106 THEN sel = INT((((1 / 403) * xmus) * 8) + 1) 
        IF ymus >= 106 AND ymus <= 145 THEN sel = INT((((1 / 403) * xmus) * 8) + 1) + 8 
        IF xmus > 402 OR ymus > 145 OR ymus <= 66 THEN sel = 0 
        IF lmus = 0 THEN hold = 0 
        IF lmus = -1 AND hold = 0 THEN 
            hold = 1 
             
            IF ymus > 175 THEN 
                IF INT((ymus - 175) / 39) + 1 <= 3 THEN currow = INT((ymus - 175) / 39) + 1 
                IF INT((xmus + 3) / 52) + 1 <= 8 THEN curcolumn = INT((xmus + 3) / 52) + 1 
                 
                IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                    FOR trace = curcolumn TO 2 STEP -1 
                        IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                        curcolumn = curcolumn - 1 
                         
                    NEXT 
                END IF 
            END IF 
             
             
            IF sel > 0 THEN 
                rowcol(currow, curcolumn) = sel 
                 
                third = rowcol(currow, 3) 
                IF curcolumn <= 6 AND (third = 1 OR third = 3 OR third = 5 OR third = 7 OR third = 9 OR third = 11 OR third = 13 OR third = 15) THEN 
                    IF curcolumn < 6 THEN curcolumn = curcolumn + 1 ELSE IF currow < 3 THEN currow = currow + 1: curcolumn = 1 
                ELSE 
                    IF curcolumn < 8 THEN curcolumn = curcolumn + 1 ELSE IF currow < 3 THEN currow = currow + 1: curcolumn = 1 
                END IF 
            END IF 
        END IF 
        IF rmus = 0 THEN holdr = 0 
        IF rmus = -1 AND holdr = 0 THEN 
            holdr = 1 
            third = rowcol(currow, 3) 
            IF rowcol(currow, curcolumn) <> 0 THEN 
                 
                IF currow = 3 AND curcolumn = 6 AND (third = 1 OR third = 3 OR third = 5 OR third = 7 OR third = 9 OR third = 11 OR third = 13 OR third = 15) THEN rowcol(currow, curcolumn) = 0: GOTO skip 
                IF currow = 3 AND curcolumn = 8 THEN rowcol(currow, curcolumn) = 0: GOTO skip 
                curcolumn = curcolumn - 1 
                IF curcolumn = 0 THEN 
                    IF currow = 1 THEN curcolumn = 1: GOTO skip 
                     
                    IF currow > 1 THEN 
                        IF rowcol(currow - 1, 8) <> 0 THEN rowcol(currow - 1, 8) = 0: currow = currow - 1: curcolumn = 8: GOTO skip 
                        IF rowcol(currow - 1, 8) = 0 THEN curcolumn = 8 
                         
                        currow = currow - 1 
                        IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                            FOR trace = curcolumn TO 2 STEP -1 
                                IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                                curcolumn = curcolumn - 1 
                                 
                            NEXT 
                            GOTO skip 
                        END IF 
                         
                    END IF 
                END IF 
            END IF 
             
            IF rowcol(currow, curcolumn) = 0 THEN 
                IF curcolumn > 1 THEN curcolumn = curcolumn - 1: rowcol(currow, curcolumn) = 0: GOTO skip 
                IF curcolumn = 1 AND currow > 1 THEN 
                    IF rowcol(currow - 1, 8) <> 0 THEN rowcol(currow - 1, 8) = 0: currow = currow - 1: curcolumn = 8: GOTO skip 
                    IF rowcol(currow - 1, 8) = 0 THEN curcolumn = 8 
                     
                    currow = currow - 1 
                    IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                        FOR trace = curcolumn TO 2 STEP -1 
                            IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                            curcolumn = curcolumn - 1 
                             
                        NEXT 
                        GOTO skip 
                    END IF 
                     
                END IF 
            END IF 
        END IF 
        skip: 
      
        kbd$ = INKEY$ 
        SELECT CASE LCASE$(kbd$) 
            CASE "a", "p", "z", "l", "g", "i", "t", "y", "e", "o", "x", "u", "k", "s", "v", "n" 
                cst$ = "aepozxlugkistvyn" 
                sel = INSTR(1, cst$, kbd$) 
                rowcol(currow, curcolumn) = sel 
      
                third = rowcol(currow, 3) 
                IF curcolumn <= 6 AND (third = 1 OR third = 3 OR third = 5 OR third = 7 OR third = 9 OR third = 11 OR third = 13 OR third = 15) THEN 
                    IF curcolumn < 6 THEN curcolumn = curcolumn + 1 ELSE IF currow < 3 THEN currow = currow + 1: curcolumn = 1 
                ELSE 
                    IF curcolumn < 8 THEN curcolumn = curcolumn + 1 ELSE IF currow < 3 THEN currow = currow + 1: curcolumn = 1 
                END IF 
            CASE CHR$(8) 
                third = rowcol(currow, 3) 
                IF rowcol(currow, curcolumn) <> 0 THEN 
      
                    IF currow = 3 AND curcolumn = 6 AND (third = 1 OR third = 3 OR third = 5 OR third = 7 OR third = 9 OR third = 11 OR third = 13 OR third = 15) THEN rowcol(currow, curcolumn) = 0: GOTO skip 
                    IF currow = 3 AND curcolumn = 8 THEN rowcol(currow, curcolumn) = 0: GOTO skip 
                    curcolumn = curcolumn - 1 
                    IF curcolumn = 0 THEN 
                        IF currow = 1 THEN curcolumn = 1: GOTO skip 
      
                        IF currow > 1 THEN 
                            IF rowcol(currow - 1, 8) <> 0 THEN rowcol(currow - 1, 8) = 0: currow = currow - 1: curcolumn = 8: GOTO skip 
                            IF rowcol(currow - 1, 8) = 0 THEN curcolumn = 8 
      
                            currow = currow - 1 
                            IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                                FOR trace = curcolumn TO 2 STEP -1 
                                    IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                                    curcolumn = curcolumn - 1 
      
                                NEXT 
                                GOTO skip 
                            END IF 
      
                        END IF 
                    END IF 
                END IF 
      
                IF rowcol(currow, curcolumn) = 0 THEN 
                    IF curcolumn > 1 THEN curcolumn = curcolumn - 1: rowcol(currow, curcolumn) = 0: GOTO skip 
                    IF curcolumn = 1 AND currow > 1 THEN 
                        IF rowcol(currow - 1, 8) <> 0 THEN rowcol(currow - 1, 8) = 0: currow = currow - 1: curcolumn = 8: GOTO skip 
                        IF rowcol(currow - 1, 8) = 0 THEN curcolumn = 8 
      
                        currow = currow - 1 
                        IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                            FOR trace = curcolumn TO 2 STEP -1 
                                IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                                curcolumn = curcolumn - 1 
      
                            NEXT 
                            GOTO skip 
                        END IF 
      
                    END IF 
                END IF 
            CASE CHR$(0) + "h" 
      
                IF currow > 1 THEN currow = currow - 1 
                IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                    FOR trace = curcolumn TO 2 STEP -1 
                        IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                        curcolumn = curcolumn - 1 
      
                    NEXT 
                END IF 
            CASE CHR$(0) + "p" 
                IF currow < 3 THEN currow = currow + 1 
                IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                    FOR trace = curcolumn TO 2 STEP -1 
                        IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                        curcolumn = curcolumn - 1 
      
                    NEXT 
                END IF 
            CASE CHR$(0) + "k" 
                IF curcolumn > 1 THEN curcolumn = curcolumn - 1 
                IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                    FOR trace = curcolumn TO 2 STEP -1 
                        IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                        curcolumn = curcolumn - 1 
      
                    NEXT 
                END IF 
            CASE CHR$(0) + "m" 
                IF curcolumn < 8 THEN curcolumn = curcolumn + 1 
                IF rowcol(currow, curcolumn) = 0 AND curcolumn <> 1 THEN 
                    FOR trace = curcolumn TO 2 STEP -1 
                        IF rowcol(currow, trace - 1) <> 0 THEN EXIT FOR 
                        curcolumn = curcolumn - 1 
      
                    NEXT 
                END IF 
      
        END SELECT 
      
      
        _DISPLAY 
    LOOP 
      
     
     
     
     
     
     
     
     
     
     
    'Game Genie 
    DATA "    OOOO                          OOOO               O" 
    DATA "   O                             O          " 
    DATA "  O       OOOOO OO OO   OOOOO   O       OOOOO OOOOO  O  OOOOO" 
    DATA "  O  OOO O    O O O  O O   O    O  OOO O   O  O    O O O   O" 
    DATA "  O      O    O O O  O O  O     O      O  O   O    O O O  O" 
    DATA "   O   O O    O O O  O O         O   O O      O    O O O" 
    DATA "    OOO   OO  O O O  O  OOOOO     OOO   OOOOO O    O O  OOOOO" 
     
     
    'A 
    DATA "   O" 
    DATA "   O" 
    DATA "  O O" 
    DATA "  O O" 
    DATA " OOOOO" 
    DATA " O   O" 
    DATA "OOO OOO" 
    'E 
    DATA " OOOOO" 
    DATA "  O  O" 
    DATA "  O" 
    DATA "  OOO" 
    DATA "  O" 
    DATA "  O  O" 
    DATA " OOOOO" 
    'P 
    DATA " OOOO" 
    DATA "  O  O" 
    DATA "  O  O" 
    DATA "  OOO" 
    DATA "  O" 
    DATA "  O" 
    DATA " OOO" 
    'O 
    DATA "   OO" 
    DATA "  O  O" 
    DATA " O    O" 
    DATA " O    O" 
    DATA " O    O" 
    DATA "  O  O" 
    DATA "   OO" 
    'Z 
    DATA " OOOOO" 
    DATA " O   O" 
    DATA "    O" 
    DATA "   O" 
    DATA "  O" 
    DATA " O   O" 
    DATA " OOOOO" 
    'X 
    DATA "OOO OOO" 
    DATA " O   O" 
    DATA "  O O" 
    DATA "   O" 
    DATA "  O O" 
    DATA " O   O" 
    DATA "OOO OOO" 
    'L 
    DATA " OOO" 
    DATA "  O" 
    DATA "  O" 
    DATA "  O" 
    DATA "  O" 
    DATA "  O  O" 
    DATA " OOOOO" 
    'U 
    DATA "OOO OOO" 
    DATA " O   O" 
    DATA " O   O" 
    DATA " O   O" 
    DATA " O   O" 
    DATA " O   O" 
    DATA "  OOO" 
     
    'G 
    DATA "   OOOO" 
    DATA "  O   O" 
    DATA " O" 
    DATA " O  OOO" 
    DATA " O    O" 
    DATA "  O   O" 
    DATA "   OOO" 
    'K 
    DATA " OOO OO" 
    DATA "  O  O" 
    DATA "  O O" 
    DATA "  OO" 
    DATA "  O O" 
    DATA "  O  O" 
    DATA " OOO OO" 
    'I 
    DATA "  OOO" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "  OOO" 
    'S 
    DATA "  OOO" 
    DATA " O  OO" 
    DATA " OO" 
    DATA "  OOO" 
    DATA "    OO" 
    DATA " O   O" 
    DATA "  OOO" 
    'T 
    DATA " OOOOO" 
    DATA " O O O" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "  OOO" 
    'V 
    DATA "OOO OOO" 
    DATA " O   O" 
    DATA " O   O" 
    DATA "  O O" 
    DATA "  O O" 
    DATA "   O" 
    DATA "   O" 
    'Y 
    DATA "OOO OOO" 
    DATA " O   O" 
    DATA "  O O" 
    DATA "   O" 
    DATA "   O" 
    DATA "   O" 
    DATA "  OOO" 
    'N 
    DATA "OO  OOO" 
    DATA " O   O" 
    DATA " OO  O" 
    DATA " O O O" 
    DATA " O  OO" 
    DATA " O   O" 
    DATA "OOO  O" 
    '- 
    DATA " ÛÛÛÛÛÛ" 
    '+ 
    DATA "Û" 
    DATA "ÛÛÛ" 
    DATA "Û"
    Last edited by Cyperium; 05-14-2015, 04:32:20 PM.
    Check out my YouTube channel PolPon: https://www.youtube.com/channel/UC8C...gJmUA81luZQqZw
Working...
X