Beispiel #1
0
def main_func(file_name):
    keys = [
        pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, pygame.K_q, pygame.K_w,
        pygame.K_e, pygame.K_r, pygame.K_a, pygame.K_s, pygame.K_d, pygame.K_f,
        pygame.K_z, pygame.K_x, pygame.K_c, pygame.K_v
    ]
    my_chip8 = chip8.Chip8()
    black = 0, 0, 0
    white = 255, 255, 255
    colors = [black, white]
    width, height = 64, 32
    size = width * 10, height * 10
    pixels = width * height

    screen = pygame.display.set_mode(size)

    #Set up emulation system
    setup_graphics(screen)

    #Initialize chip8 system
    my_chip8.initialize(pixels)
    my_chip8.load_game(file_name)

    #Emulation Loop
    cycle_speed = 1.0 / 60
    while True:
        my_chip8.emulate_cycle()

        if (my_chip8.draw_flag):
            draw_graphics(screen, colors, my_chip8, width, height)

        events = pygame.event.get()
        get_key_event(events, keys, my_chip8)
Beispiel #2
0
def game_loop():
        
    # create chip8 object
    c8 = chip8.Chip8()
    
    #create a tkinter window
    root = tkinter.Tk()
    
    #Create a window that will ask the user to select the rom they
    #would like to use
    file_name = filedialog.askopenfilename(
        initialdir = os.getcwd(),
        filetypes = (("Chip-8 ROMs *.ch8","*.ch8"), ("Chip-8 ROMS *.c8","*.c8")),
        title = 'Select Game')
    
    #Error message if no rom is detected
    if file_name == '':
        messagebox.showinfo('', 'Error: No ROM selected')
        root.destroy()
        return
    root.destroy()
    
    #Create new screen object
    scr = screen.Screen(scale, c8)
    #initiate that object's display
    scr.initiate_display()
    
    c8.load_rom(file_name)

    running = True
    while running:
        #sends opcode from rom to be decoded and run
        c8.emulate_cycle(scr)
        
        #if last opcode was Dxyn call draw_sprite and update screen
        if c8.draw_flag == True:
            scr.draw_sprite(chip8)
            scr.update_screen()
            c8.draw_flag = False
        
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                running = False
            if event.type == pygame.KEYDOWN:
                key_pressed = pygame.key.get_pressed()
                if key_pressed[pygame.K_ESCAPE]:
                    running = False
    scr.destroy()
Beispiel #3
0
def main():
    # Set up Pygame
    chip8Display = pygame.Surface([64, 32])  # Display surface
    display_array = pygame.PixelArray(
        chip8Display)  # Array for manipulating the pixels
    mainDisplay = pygame.display.set_mode(
        [320, 160])  # Actual display window, 4x native size

    # Create the Chip 8 object
    system = chip8.Chip8(file)

    while True:  # Main loop
        pygame.event.pump()
        keyStates = pygame.key.get_pressed()
        key[0x1] = keyStates[pygame.K_1]
        key[0x2] = keyStates[pygame.K_2]
        key[0x3] = keyStates[pygame.K_3]
        key[0xc] = keyStates[pygame.K_4]
        key[0x4] = keyStates[pygame.K_q]
        key[0x5] = keyStates[pygame.K_w]
        key[0x6] = keyStates[pygame.K_e]
        key[0xd] = keyStates[pygame.K_r]
        key[0x7] = keyStates[pygame.K_a]
        key[0x8] = keyStates[pygame.K_s]
        key[0x9] = keyStates[pygame.K_d]
        key[0xe] = keyStates[pygame.K_f]
        key[0xa] = keyStates[pygame.K_z]
        key[0x0] = keyStates[pygame.K_x]
        key[0xb] = keyStates[pygame.K_c]
        key[0xf] = keyStates[pygame.K_v]
        system.cycle(key)
        if system.drawFlag:
            for i in range(0, 32):
                for j in range(0, 64):
                    if system.graphic[i][j]:
                        display_array[j, i] = 0xffffff
                    else:
                        display_array[j, i] = 0x0
            pygame.transform.scale(
                chip8Display, (320, 160), mainDisplay
            )  # Scales up the chip 8 display and puts it to the main display
            pygame.display.update()
Beispiel #4
0
 def __init__(self):
     self.chip8 = chip8.Chip8("Pong.ch8")
     self.main()
     self.chip8.graphics.root.mainloop()
Beispiel #5
0
 def setUp(self):
     self.dut = chip8.Chip8()
     self.dut.test = True
Beispiel #6
0
#main program for the cheeky emulator
import chip8 as emu

chip8 = emu.Chip8()
Beispiel #7
0
import chip8
import sys
import argparse

# Process command line arguments
# -r argument specifies game file
# -f argument enables fullscreen
parser = argparse.ArgumentParser(description="Chip-8 Emulator")
parser.add_argument("-r",
                    "--rom",
                    type=str,
                    metavar=" ",
                    required=True,
                    help="Name of Chip-8 Rom File")
parser.add_argument("-f",
                    "--fullscreen",
                    action='store_true',
                    help="Enables Fullscreen")
args = parser.parse_args()

# Run the emulator
chip8 = chip8.Chip8(args.rom, args.fullscreen)
while True:
    chip8.run()