antoniond / gbcam-rev-engineer Goto Github PK
View Code? Open in Web Editor NEWTools used to reverse engineer the GB Camera using Arduino UNO.
License: GNU General Public License v3.0
Tools used to reverse engineer the GB Camera using Arduino UNO.
License: GNU General Public License v3.0
Add the location of the big and small pictures that are saved in the cartridge. It's not really related to how the GB camera works, but some people may find it useful.
I stumbled across this repo, and I'm very impressed.
The idea occurred to me to use the Game Boy Camera as a webcam, by connecting the cartridge to a Teensy and using something like teensy_uvc to show it as a webcam. I'd have to get the actual camera second hand, so it's just idle thought.
Anyway, I was reading through your repo, and had some questions:
sensor_read_pin
and sensor_vout_pin
and how are they connected?Hello, I believe I've arrived a bit late to the project, I hope you're still around. I'm working on a project with Flipper Zero and an ESP32-S2, which has enough pins to read a Game Boy cartridge.
I've successfully managed to read the images stored in the cartridge's RAM and display them on the Flipper's 128x64 screen.
Game Boy | Flipper Zero |
---|---|
Now, I wanted to capture photos from the FZ or maybe even do a live video with the GAME BOY Camera, but half of the time, I'm not sure what I'm doing, and I get lost in many parts.
Could you please provide a detailed explanation of what the processClocks method does?
gbcam-rev-engineer/gbcam_arduino_server/gbcam_arduino_server.ino
Lines 185 to 215 in edb26ed
Or, if it's possible, could it be written in Arduino code instead of assembly, like in the following?
// Address pins
const static uint32_t ADDRESS_GB_GBC_PINS[16] =
{
GAMEBOY_A00,
GAMEBOY_A01,
GAMEBOY_A02,
GAMEBOY_A03,
GAMEBOY_A04,
GAMEBOY_A05,
GAMEBOY_A06,
GAMEBOY_A07,
GAMEBOY_A08,
GAMEBOY_A09,
GAMEBOY_A10,
GAMEBOY_A11,
GAMEBOY_A12,
GAMEBOY_A13,
GAMEBOY_A14,
GAMEBOY_A15
};
// Data pins
const static uint32_t DATA_GB_GBC_PINS[8] =
{
GAMEBOY_D00,
GAMEBOY_D01,
GAMEBOY_D02,
GAMEBOY_D03,
GAMEBOY_D04,
GAMEBOY_D05,
GAMEBOY_D06,
GAMEBOY_D07
};
void generatePulse() {
digitalWrite(phi_pin, HIGH);
__asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
digitalWrite(phi_pin, LOW);
__asm__("nop\n\t"
"nop\n\t");
}
// ... bla
noInterrupts();
generatePulse();
int raw_data = digitalRead(DATA_GB_GBC_PINS[0]);
while (raw_data == 1) {
generatePulse();
raw_data = digitalRead(DATA_GB_GBC_PINS[0]);
}
interrupts();
I hope you can assist me; I believe I'm very close to achieving it ๐ ... or maybe quite far, haha. I say "quite far" because the CPU frequency of the ESP32 is much higher than that of an Arduino (240MHz), and I'm not sure if it will work ๐ค.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.