2 changed files with 46 additions and 6 deletions
@ -0,0 +1,40 @@ |
|||||||
|
import sys |
||||||
|
from pyboy import PyBoy |
||||||
|
import cv2 |
||||||
|
import numpy as np |
||||||
|
|
||||||
|
def main(): |
||||||
|
pyboy = PyBoy('maze.gb', window='null') |
||||||
|
# Run for 400 frames to let the game over screen render and boot sequence finish |
||||||
|
for _ in range(400): |
||||||
|
pyboy.tick() |
||||||
|
|
||||||
|
# Save screenshot |
||||||
|
img_path = '/tmp/gameover_test.png' |
||||||
|
pyboy.screen.image.save(img_path) |
||||||
|
|
||||||
|
# Draw grid with OpenCV |
||||||
|
img = cv2.imread(img_path) |
||||||
|
for x in range(0, 160, 8): |
||||||
|
cv2.line(img, (x, 0), (x, 144), (0, 255, 0), 1) |
||||||
|
for y in range(0, 144, 8): |
||||||
|
cv2.line(img, (0, y), (160, y), (0, 255, 0), 1) |
||||||
|
cv2.imwrite('/tmp/gameover_grid.png', img) |
||||||
|
print("Saved grid image to /tmp/gameover_grid.png") |
||||||
|
|
||||||
|
print("Screen tilemap:") |
||||||
|
for y in range(18): |
||||||
|
line = "" |
||||||
|
for x in range(20): |
||||||
|
tile_id = pyboy.memory[0x9800 + y * 32 + x] |
||||||
|
# Default font mapping: Space is 0x20. ASCII maps directly! |
||||||
|
if 0x20 <= tile_id <= 0x7E: |
||||||
|
line += chr(tile_id) |
||||||
|
else: |
||||||
|
line += "." |
||||||
|
print(f"{y:02d}: '{line}'") |
||||||
|
|
||||||
|
pyboy.stop() |
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
main() |
||||||
Loading…
Reference in new issue