From 0d441df6f89aae56da6631a74774dd3452264c5a Mon Sep 17 00:00:00 2001 From: wodowiesel Date: Tue, 22 Oct 2024 14:53:44 +0200 Subject: [PATCH] -QOL & print changes -debug & docu info/comments -speed up spi to gb clock 4 mhz -speed up uart baud to 19200 --- ...artRead_v1_8_Rev1.3_Arduino_WodoWiesel.ino | 203 +- .../pindeclarations.h | 11 +- .../c/GBCartRead_v1.8_Rev1.3_C_Interface.c | 48 +- .../c/GBCartRead_v1.8_Rev1.3_C_Interface.exe | Bin 2327076 -> 2327076 bytes .../c/GBCartRead_v1.8_Rev1.3_C_Interface.i | 52 +- .../c/GBCartRead_v1.8_Rev1.3_C_Interface.o | Bin 1050415 -> 1050237 bytes .../c/GBCartRead_v1.8_Rev1.3_C_Interface.s | 1801 ++++++++--------- code-pc/c/config.ini | 3 +- code-pc/c/gb-dumper-start.bat | 5 + code-pc/c/gmon.out | Bin 6024 -> 6008 bytes .../GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py | 126 +- code-pc/py/py-reader.bat | 1 + code-pc/validator/validator.bat | 5 +- 13 files changed, 1140 insertions(+), 1115 deletions(-) create mode 100644 code-pc/c/gb-dumper-start.bat diff --git a/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel.ino b/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel.ino index 52701b8..5c2488c 100644 --- a/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel.ino +++ b/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel.ino @@ -13,14 +13,13 @@ Works with Arduino Duemilanove, Uno and Nano. Will work for other Arduinos too with VCC = +5V, but requires wiring changes!! - Speed increase thanks to Frode vdM.(fvdm1992@yahoo.no) and David R. - +----------------------------------- UPDATE: This code was changed to be compatible for Arduino NANO and a custom PCB!! Version: 1.8 Rev 1.3 Author: WodoWiesel github: (https://github.com/wodowiesel/GB-Dumper) - Last Modified: 23. February 2024 + Last Modified: 28. June 2024 */ // for REVISION 0.6 of the GB-Dumper Board @@ -28,21 +27,28 @@ // Class/Type A (grey+colors), Class B Dual (black), Type C (transparent/clear) // NOT compatible with Class D (Advance GBA) -> 3.3V Logic // cartridge internal coin battery Li-cell normally +3V CR2025, sometimes 2032, CR1616 GBA -#include "pindeclarations.h" -#include +#include #include +#include #include -#include -//#include -//#include // OLED_I2C - -int baud = 9600; // rate for serial connection - +#include "pindeclarations.h" +//optional +//#include // OLED_I2C load displ driver before graph-lib! +//#include //core graph api + +//----------------- General Config +// baud calc https://wormfood.net/avrbaudcalc.php?bitrate=9600%2C14.4k%2C19.2k%2C28.8k%2C38.4k%2C57.6k%2C76.8k%2C115.2k%2C230.4k%2C250k%2C460.8k%2C.5m%2C921.6k%2C1m&clock=4&databits=8 +int baud = 19200; // best rate with minimal errors for serial connection, max 115200, 6-8% errors +/*info for clock +The problem is that the GB is using a base 2 frequency clock crystal, +not a base 10 one. Ie, 1MiHz = 1024*1024 Hz = 1048576 Hz, +where "normally" you'd use 1 MHz = 1000000 Hz. But that's easy to overcome with new frequency tables. +*/ // Edit these in pindelcarations.h too if needed! // Digital Pins-> D-Numbers -uint8_t gb30cPin = 0; // /CS2 on D0 digital -uint8_t gb22Pin = 1; // GB_D0 -> Ard_Pin2 PD1 D1 RX -uint8_t gb31iPin = 2; // GB_IRQ digital -> Ar_Pin5 PD2 INT0 if needed for interrupts too! +uint8_t gb30cPin = 0; // /CS2 -> Ar_Pin1 PD0 D0 TX digital +uint8_t gb22Pin = 1; // GB_D0 -> Ar_Pin2 PD1 D1 RX +uint8_t gb31iPin = 2; // GB_IRQ -> Ar_Pin5 PD2 INT0 digital if needed for interrupts too! uint8_t gb23Pin = 3; // GB_D1 -> Ar_Pin6 PD3 INT1 uint8_t gb24Pin = 4; // GB_D2 -> Ar_Pin7 PD4 D4 uint8_t gb25Pin = 5; // GB_D3 -> Ar_Pin8 PD5 D5 @@ -52,30 +58,32 @@ uint8_t gb28Pin = 8; // GB_D6 -> Ar_Pin11 PB0 D8 uint8_t gb29Pin = 9; // GB_D7 -> Ar_Pin12 PB1 D9 uint8_t latchPin = 10; // RCLK -> Ar_Pin13 PB2 D10 SS/CS uint8_t dataPin = 11; // SER -> Ar_Pin14 PB3 D11 MOSI -uint8_t sd_miso = 12; // sd_spi & -> Ar_Pin15 PB4 D12 MISO https://github.com/rust-console/gbatek-gbaonly/blob/gh-pages/index.md#gbainterruptcontrol idk why? old +uint8_t sd_miso = 12; // SD_SPI -> Ar_Pin15 PB4 D12 MISO https://github.com/rust-console/gbatek-gbaonly/blob/gh-pages/index.md#gbainterruptcontrol idk why? old uint8_t clockPin = 13; // /SRCLK -> Ar_Pin16 PB5 D13 SCK(SPI), switchable clock for cartridge 4MHz -uint8_t gb30Pin = 28; // /RST + /RES + /RESET + SCLR + VCC -> Ar_Pin3&28 PB6 PCINT14 -> also CS2 for advance - +uint8_t gb30Pin = 28; // /RST + /RES + /RESET + SCLR + VCC -> Ar_Pin3&28 PB6 PCINT14 -> also /CS2 for advance uint8_t gb32Pin = 29; // GND + /OE -> Ar_Pin4&29 // Analog Pins uint8_t mosfetControlPin = A0; // Mosfet -> Ar_Pin19 PC0 internal uint8_t BTNPin = A1; // /BTN -> Ar_Pin20 PC1 PCINT9 Button for resets -uint8_t AudioPin = A2; // VIN/AUDIO_IN DMG gn31 -> Ar_PIN21 +uint8_t AudioPin = A2; // VIN/AUDIO_IN DMG gn31 -> Ar_Pin21 PC2 uint8_t wrPin = A3; // /WR -> Ar_Pin22 PC3 uint8_t mreqPin = A4; // /CS -> Ar_Pin23 PC4 SDA uint8_t rdPin = A5; // /RD -> Ar_Pin24 PC5 SCL -//DISPLAY CONFIG +// DISPLAY CONFIG // right Bit (LowBit) not counted -> 0x78/2=0x3C -//#define I2C_ADDRESS 0x3C // 0x78->3C, 0x7A->3D, 0x74->3A alternative -//display.begin(SSD1306_SWITCHCAPVCC, I2C_ADDRESS); -//display.cp437(true); -//display.clearDisplay(); -//display.setTextColor(WHITE); -//display.setTextSize(1); -//display.setCursor(0,0); +/* +#define I2C_ADDRESS 0x3C // 0x78->3C, 0x7A->3D, 0x74->3A alternative +display.begin(SSD1306_SWITCHCAPVCC, I2C_ADDRESS); +display.cp437(true); +display.clearDisplay(); +display.setTextColor(WHITE); +display.setTextSize(1); +display.setCursor(0,0); +*/ +//--------------------------- setup pins // https://gbdev.io/pandocs/Power_Up_Sequence.html uint8_t nintendoLogo[] = {0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99, @@ -83,7 +91,6 @@ uint8_t nintendoLogo[] = {0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, }; char gameTitle[17]; -//char gameTitle[16]; uint16_t cartridgeType = 0; uint16_t romSize = 0; uint16_t romBanks = 0; @@ -103,7 +110,7 @@ void setup() { pinMode(gb30Pin, OUTPUT); // /RES + /RST + /RESET -> Ar_Pin3&27 INPUT => std as active (if GND) LOW -> pull-up pinMode(gb30cPin, OUTPUT); // /CS2 PD0/D0/TX pinMode(AudioPin, OUTPUT); // AUDIO_IN gb_31 - pinMode(gb31iPin, OUTPUT); // IRQ + pinMode(gb31iPin, OUTPUT); // IRQ gba //mosfetPin_high; // mosfet off PORTC |= (1 << PC0); @@ -111,18 +118,20 @@ void setup() { // Set pins as inputs DDRB &= ~((1 << PB0) | (1 << PB1) | (1 << PB4)); // D8 to D13 datapin | (1<= 0x30 && headerChar <= 0x57) || // 0-9 (headerChar >= 0x41 && headerChar <= 0x5A) || // A-Z (headerChar >= 0x61 && headerChar <= 0x7A)) { // a-z - gameTitle[(romAddress - 0x0134)] = headerChar; //Serial.println(headerChar); /* * MULICARD MBCs & EMS etc https://gbdev.gg8.se/wiki/articles/Memory_Bank_Controllers @@ -162,7 +169,8 @@ void loop() { Cartridge type ($0147) = $1B and region ($014A) = $E1 */ } - + gameTitle[16] = '\0'; + cartridgeType = read_byte(0x0147); // MBC type should be specified in the byte at 0147h of the ROM romSize = read_byte(0x0148); ramSize = read_byte(0x0149); @@ -196,14 +204,14 @@ void loop() { ramEndAddress = 0xA1FF; // MBC2 512 bytes (nibbles) } if (ramSize == 1) { - ramEndAddress = 0xA7FF; // 2K RAM + ramEndAddress = 0xA7FF; // 2K RAM dez } if (ramSize > 1) { ramEndAddress = 0xBFFF; // 8K RAM } - + } - + // Nintendo Logo Check uint8_t logoCheck = 1; uint8_t x = 0; @@ -214,16 +222,15 @@ void loop() { } x++; } - + Serial.println(gameTitle); Serial.println(cartridgeType); Serial.println(romSize); Serial.println(ramSize); Serial.println(logoCheck); } - - // Dump ROM + // Dump ROM (game) else if (strstr(readInput, "READROM")) { rd_wr_mreq_reset(); uint16_t romAddress = 0; @@ -242,7 +249,7 @@ void loop() { romAddress = 0x4000; } - // Read up to 7FFF per bank + // Read up to 7FFF (dez 32767) per bank while (romAddress <= 0x7FFF) { uint8_t readData[64]; for (uint8_t i = 0; i < 64; i++) { @@ -255,28 +262,28 @@ void loop() { } } - // Read RAM + // Read RAM (save) else if (strstr(readInput, "READRAM")) { rd_wr_mreq_reset(); // MBC2 Fix (unknown why this fixes reading the ram, maybe has to read ROM before RAM?) - read_byte(0x0134); + read_byte(0x0134); // dez 308 // if cartridge have RAM test if (ramEndAddress > 0) { if (cartridgeType <= 4) { // MBC1 - write_byte(0x6000, 1); // Set RAM Mode + write_byte(0x6000, 1); // Set RAM Mode dez 24576 } // Initialise MBC - write_byte(0x0000, 0x0A); + write_byte(0x0000, 0x0A); // dez 10 // Switch RAM banks for (uint8_t bank = 0; bank < ramBanks; bank++) { - write_byte(0x4000, bank); + write_byte(0x4000, bank); // dez 16384 // Read RAM - for (uint16_t ramAddress = 0xA000; ramAddress <= ramEndAddress; ramAddress += 64) { + for (uint16_t ramAddress = 0xA000; ramAddress <= ramEndAddress; ramAddress += 64) { // 40960 uint8_t readData[64]; for (uint8_t i = 0; i < 64; i++) { readData[i] = read_byte(ramAddress + i); @@ -298,7 +305,7 @@ void loop() { // MBC2 Fix (unknown why this fixes it, maybe has to read ROM before RAM?) read_byte(0x0134); - // Does cartridge have RAM + // check cartridge RAM if (ramEndAddress > 0) { if (cartridgeType <= 4) { // MBC1 write_byte(0x6000, 1); // Set RAM Mode @@ -329,9 +336,6 @@ void loop() { } } - /// dump ram special - cs2_dumpsave(); - // Disable RAM write_byte(0x0000, 0x00); @@ -339,13 +343,25 @@ void loop() { Serial.flush(); } } - + + else if (strstr(readInput, "CLOCK")) { + // test clock trigger + clockPin_low; + clockPin_high; + clockPin_low; + } + + else if (strstr(readInput, "GBASAVE")) { + // dump ram special gba + cs2_dumpsave(); + } + rd_wr_mreq_off(); ///Serial.println("Loop done \n"); } //--- End loop! -// func definitions +// func definitions uint8_t read_byte(uint16_t address) { shiftout_address(address); // Shift out address @@ -372,10 +388,10 @@ void loop() { // Clear outputs and set them to the data variable PORTB &= ~((1 << PB0) | (1 << PB1) | (1 << PB4)); // | (1<> 6); // Pulse WR @@ -386,14 +402,13 @@ void loop() { // Set pins as inputs DDRB &= ~((1 << PB0) | (1 << PB1) | (1 << PB4)); // | (1<> 8); SPI.transfer(shiftAddress & 0xFF); - //SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); // alternative latchPin_low; asm volatile("nop"); @@ -411,32 +426,32 @@ void loop() { void rd_wr_mreq_off(void) { rdPin_low; wrPin_low; - mreqPin_low; // /CS + mreqPin_low; // /CS } // Setup pin interrupt for button - void (* resetFunc)(void) = 0; // create a standard reset function + void (*resetFunc)(void) = 0; // create a standard reset function void soft_reset(void) { - //Serial.println("Button Reset check "); + //Serial.println("Button Reset check \n"); resetFunc(); //digitalWrite(gb30Pin, LOW); // deactivate /RST //digitalWrite(gb30Pin, HIGH); // activate /RST (method without button / soft reset) } void reset_button(void) { // active-low jumper on board should be set! - //Serial.println("Reset button check "); - // Serial.println("Reset pressed! "); + //Serial.println("Reset button check \n"); + // Serial.println("Reset pressed \n"); // https://forums.nesdev.org/viewtopic.php?t=15689 - // gb30Pin_low; // is open-drain, 100h-00h /CS2+/RST addr + gb30Pin_low; // is open-drain, 100h-00h /CS2+/RST addr // gb30Pin_high; } // --------------experimental!!! if ready it will be built-in to the upper code!!! - // joaopauloap suggestions + // joaopauloap suggestions https://github.com/joaopauloap/arduino-gba-dumper unsigned int readDataBus() { - Serial.println("CS2 read databus "); - unsigned int s = ((PINB & 0b00000011) << 6) | ((PIND & 0b11111100) >> 2); + Serial.println("CS2 read databus \n"); + unsigned int s = ((PINB & 0b00000011) << 6) | ((PIND & 0b11111100) >> 2); // 0b00000011 = hex&dez 3, 11111100 = 0xFC = 252 dez return (s); } @@ -448,10 +463,9 @@ void loop() { } void cs2_dumpsave() { // digital active-low - Serial.println("Dumping GBA Save "); + Serial.println("Dumping GBA Save \n"); //digitalWrite(mreqPin, HIGH); // CS Disable ROM digitalWrite(gb30cPin, LOW); - digitalWrite(gb30cPin, LOW); for (unsigned long addr = 0; addr < 0x1FFF; addr++) { latchaddress(addr); digitalWrite(rdPin, LOW); @@ -462,47 +476,43 @@ void loop() { } digitalWrite(gb30cPin, HIGH); - Serial.println("CS2 dump done"); - // may ned adaption in C/Py code on pc app! - // -> not sure what data is extly tranfered ? need more info !! + Serial.println("CS2 dump done \n"); + // may need adaption in C/Py code on pc app! + // -> not sure what data is exatly transfered ? need more info from pdf !! } // end suggestion - /* - The problem is that the GB is using a base 2 frequency clock crystal, - not a base 10 one. Ie, 1MiHz = 1024*1024 Hz = 1048576 Hz, - where "normally" you'd use 1 MHz = 1000000 Hz. But that's easy to overcome with new frequency tables. - https://gbdev.gg8.se/forums/viewtopic.php?id=10 - https://dhole.github.io/post/gameboy_cartridge_emu_2/ only for STM32 - */ - - void IRQ_GBA(void) { - Serial.println("attach check "); - } ISR(gb31iPin_vect) { // alternative for attached pin - Serial.println("ISR check "); + Serial.println("ISR check \n"); } void IRQ_handler(void) { - Serial.println("IRQ check "); + Serial.println("IRQ check \n"); pinMode(gb31iPin, INPUT); // INPUT_PULLUP Set the pin as input with pull-up resistor, not sure normally no resistor needed , std output gb31iPin_high; attachInterrupt(digitalPinToInterrupt(gb31iPin), IRQ_GBA, RISING); // https://www.arduino.cc/reference/de/language/functions/external-interrupts/attachinterrupt/ // maybe only with INT0&1, D2&3 on nano for attaching digital,wip -> may need change for the pin gb23 (d0) or gb24 (d1) - // => gb23 from d2 to d1!!!!! change stuff in main funtions!!! + // => gb23 from D2 to D1!!!!! change stuff in main funtions!!! // Handle PC0 interrupt (rising edge of the gameboy CLK) gb31iPin_low; } + void IRQ_GBA(void) { + Serial.println("attach check \n"); + } + void AUDIO_GB(void) { - Serial.println("AUDIO check "); - //may need PORTB activation above! wip but no priority/ wip + Serial.println("AUDIO check \n"); + //may need PORTB activation above! wip but no priority /* VIN/AUDIO can output up to 0.6V and total stays less than 3V (5 x 0.6V = 3V). So I guess that software using VIN should not put an audio volume higher than 12.8 on each channel, which would mean 0xC or 0xD. + links to clock and audio channels + https://gbdev.gg8.se/forums/viewtopic.php?id=10 + https://dhole.github.io/post/gameboy_cartridge_emu_2/ only for STM32 */ } @@ -526,27 +536,30 @@ void loop() { // Check if mosfet is on or off (inverted as it's a P mosfet) if (PINC & (1 << PC0)) { SPI.end(); // End SPI + rd_wr_mreq_off(); // Set everying low - latchPin_low; - dataPin_low; - clockPin_low; gb31Pin_low; // AUDIO gb31iPin_low; // IRQ - gb30cPin_low; //CSs2 + gb30cPin_low; //CS2 //gb30Pin_low; // maybe use reset pins for hardware reset + latchPin_low; + dataPin_low; + clockPin_low; + _delay_ms(200); asm volatile ("jmp 0"); // Jump to address 0 (soft reset) } else { SPI.begin(); // Setup SPI - // alternative SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode); + // alternative SPI Settings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode); // Max SPI speed is always half of the CPU clock. - SPI.setClockDivider(SPI_CLOCK_DIV2); // half cock speed, gb dmg clock 4 MHz (DIV4 default) + //SPI.setClockDivider(SPI_CLOCK_DIV2); // half cock speed, gb dmg clock 4 MHz (DIV4 default) SPI.setBitOrder(MSBFIRST); // most-significant bit first SPI.setDataMode(SPI_MODE0); // clock polarity and phase (leading edge Sample rising, trailing edge Setup falling) + SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); // alternative func } } - //EOF + diff --git a/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/pindeclarations.h b/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/pindeclarations.h index 43e130e..ffe4d15 100644 --- a/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/pindeclarations.h +++ b/code-arduino/GBCartRead_v1_8_Rev1.3_Arduino_WodoWiesel/pindeclarations.h @@ -3,12 +3,15 @@ Author: WodoWiesel github: (https://github.com/wodowiesel/GB-Dumper) - Last Modified: 14 November 2023 + Last Modified: 28 June 2024 + Compativble with PCB v0.83! */ #ifndef PINDECLARATIONS_H_ #define PINDECLARATIONS_H_ -#define HW3 // hardware revision v3.x +#define HW 3 // hardware revision v3.x nano +#define FW 4.4 +#define OZ 28.800 //xtal oscilator 28,800 MHz /* // AVR definitions for Arduino nano! -> check your cocnnections again! @@ -116,13 +119,13 @@ #define gb30Pin_high PORTB |= (1< #include @@ -17,7 +17,7 @@ #include #endif int cport_nr = 2; // /dev/ttyS0 (COM1 on windows) , i use on com3 -int bdrate = 9600; // 57600 baud (default) +int bdrate = 19200; // 9600 (slow), 57600 baud (default) int firstStart = 1; int headercounter = 0; char gametitle[80]; @@ -136,12 +136,12 @@ void read_from_file(char* filename, char* cmd) { } int main() { read_config(); - printf("GBCartRead v1.8 Rev. 1.3 by wodowiessel\n"); - printf("################################\n\n"); - printf("Opening COM PORT %d at %d baud ...\n\n", cport_nr+1, bdrate); + printf("GB-Dumper v1.8 Rev. 1.3.2 by wodowiesel\n"); + printf("################################\n"); + printf("Opening COM PORT %d at %d baud ...\n", cport_nr+1, bdrate); // Open COM port if(RS232_OpenComport(cport_nr, bdrate)) { - printf("Can not open com port\n"); + printf("Can not open COM port\n"); return(0); } #ifdef _WIN32 @@ -152,11 +152,11 @@ int main() { char userInput = '0'; while (1) { printf ("\nSelect an option below\n0. Read Header\n1. Dump ROM\n2. Save RAM\n3. Write RAM\n4. Exit\n"); - printf (">"); + printf ("> "); userInput = read_one_letter(); if (userInput == '0') { headercounter = 0; - RS232_cputs(cport_nr, "HEADER\n"); + RS232_cputs(cport_nr, "HEADER"); unsigned char buffer[4096]; int n = 0; int waitingforheader = 0; @@ -181,7 +181,7 @@ int main() { } char* tokstr = strtok ((char *) buffer, "\r\n"); if (tokstr == NULL) { - printf ("tokstr: NULL error, no title found, using default: unknown\n"); + printf ("\ntokstr: NULL error, no title found, using default: unknown\n"); tokstr = "unknown"; } while (tokstr != NULL) { @@ -255,7 +255,7 @@ int main() { } } else if (headercounter == 3) { - printf ("RAM size: "); + printf ("\nRAM size: "); ramSize = atoi(tokstr); switch (ramSize) { case 0: @@ -263,7 +263,7 @@ int main() { printf ("512 bytes (nibbles)\n"); } else { - printf ("None\n"); + printf ("0 None\n"); } break; case 1: printf ("2 KBytes\n"); break; @@ -277,16 +277,16 @@ int main() { printf ("Logo check: "); logoCheck = atoi(tokstr); if (logoCheck == 1) { - printf ("OK\n"); + printf ("1 OK\n"); } else { - printf ("Failed\n"); + printf ("0 Failed\n"); } } else { printf ("\nselect loop error\n"); } - tokstr = strtok (NULL, "\r\n"); + //tokstr = strtok (NULL, "\r\n"); printf ("tokstr: %s\n", tokstr); headercounter++; } @@ -294,27 +294,27 @@ int main() { fflush(stdout); } else if (userInput == '1') { - printf ("\nDumping ROM to %s.gb ... ", gametitle); + printf ("\nDumping ROM to %s.gb ... \n", gametitle); strncpy(filename, gametitle, 20); strcat(filename, ".gb"); - write_to_file(filename, "READROM\n", 32); + write_to_file(filename, "READROM", 32); printf ("\nFinished\n"); } else if (userInput == '2') { - printf ("\nDumping RAM to %s.sav ... ", gametitle); + printf ("\nDumping RAM to %s.sav ... \n", gametitle); strncpy(filename, gametitle, 20); //why 20? strcat(filename, ".sav"); - write_to_file(filename, "READRAM\n", 1); + write_to_file(filename, "READRAM", 1); printf ("\nFinished\n"); } else if (userInput == '3') { - printf ("\nGoing to write to RAM from %s.sav ...", gametitle); - printf ("\n*** This will erase the save game from your Gameboy Cartridge ***"); - printf ("\nPress y to continue or any other key to abort."); - printf ("\n>"); + printf ("\nGoing to write to RAM from %s.sav ...\n", gametitle); + printf ("*** This will erase the save game from your Gameboy Cartridge ***\n"); + printf ("Press y to continue or any other key to abort.\n"); + printf ("> "); char userInputConfirm = read_one_letter(); if (userInputConfirm == 'y') { - printf ("\nWriting to RAM from %s.sav ... ", gametitle); + printf ("\nWriting to RAM from %s.sav ... \n", gametitle); strncpy(filename, gametitle, 30); strcat(filename, ".sav"); read_from_file(filename, "WRITERAM\n"); @@ -326,6 +326,8 @@ int main() { } else if (userInput == '4') { RS232_CloseComport(cport_nr); + printf("\nCLosing Com connection...\n"); + printf("\nExiting..\n"); return(0); } else { diff --git a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.exe b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.exe index 6aa652c0c0d81821f4b315f1ef4887f795a68086..6c3fba0210afe25b2bbfd6934f0c1b965ca3e312 100644 GIT binary patch delta 20371 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 delta 20444 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 R28%cyEh}nTy^!B%_&?TeBrN~{ diff --git a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.i b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.i index 585c32e..dff9a00 100644 --- a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.i +++ b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.i @@ -131114,7 +131114,7 @@ int unlinkat (int, const char *, int); # 19 "GBCartRead_v1.8_Rev1.3_C_Interface.c" int cport_nr = 2; -int bdrate = 9600; +int bdrate = 19200; int firstStart = 1; int headercounter = 0; char gametitle[80]; @@ -131249,12 +131249,12 @@ void read_from_file(char* filename, char* cmd) { } int main() { read_config(); - printf("GBCartRead v1.8 Rev. 1.3 by wodowiessel\n"); - printf("################################\n\n"); - printf("Opening COM PORT %d at %d baud ...\n\n", cport_nr+1, bdrate); + printf("GB-Dumper v1.8 Rev. 1.3.2 by wodowiesel\n"); + printf("################################\n"); + printf("Opening COM PORT %d at %d baud ...\n", cport_nr+1, bdrate); if(RS232_OpenComport(cport_nr, bdrate)) { - printf("Can not open com port\n"); + printf("Can not open COM port\n"); return(0); } @@ -131265,11 +131265,11 @@ int main() { char userInput = '0'; while (1) { printf ("\nSelect an option below\n0. Read Header\n1. Dump ROM\n2. Save RAM\n3. Write RAM\n4. Exit\n"); - printf (">"); + printf ("> "); userInput = read_one_letter(); if (userInput == '0') { headercounter = 0; - RS232_cputs(cport_nr, "HEADER\n"); + RS232_cputs(cport_nr, "HEADER"); unsigned char buffer[4096]; int n = 0; int waitingforheader = 0; @@ -131302,7 +131302,7 @@ int main() { ((void *)0) # 183 "GBCartRead_v1.8_Rev1.3_C_Interface.c" ) { - printf ("tokstr: NULL error, no title found, using default: unknown\n"); + printf ("\ntokstr: NULL error, no title found, using default: unknown\n"); tokstr = "unknown"; } while (tokstr != @@ -131380,7 +131380,7 @@ int main() { } } else if (headercounter == 3) { - printf ("RAM size: "); + printf ("\nRAM size: "); ramSize = atoi(tokstr); switch (ramSize) { case 0: @@ -131388,7 +131388,7 @@ int main() { printf ("512 bytes (nibbles)\n"); } else { - printf ("None\n"); + printf ("0 None\n"); } break; case 1: printf ("2 KBytes\n"); break; @@ -131402,20 +131402,16 @@ int main() { printf ("Logo check: "); logoCheck = atoi(tokstr); if (logoCheck == 1) { - printf ("OK\n"); + printf ("1 OK\n"); } else { - printf ("Failed\n"); + printf ("0 Failed\n"); } } else { printf ("\nselect loop error\n"); } - tokstr = strtok ( -# 289 "GBCartRead_v1.8_Rev1.3_C_Interface.c" 3 4 - ((void *)0) -# 289 "GBCartRead_v1.8_Rev1.3_C_Interface.c" - , "\r\n"); + printf ("tokstr: %s\n", tokstr); headercounter++; } @@ -131427,28 +131423,28 @@ int main() { ); } else if (userInput == '1') { - printf ("\nDumping ROM to %s.gb ... ", gametitle); + printf ("\nDumping ROM to %s.gb ... \n", gametitle); strncpy(filename, gametitle, 20); strcat(filename, ".gb"); - write_to_file(filename, "READROM\n", 32); + write_to_file(filename, "READROM", 32); printf ("\nFinished\n"); } else if (userInput == '2') { - printf ("\nDumping RAM to %s.sav ... ", gametitle); + printf ("\nDumping RAM to %s.sav ... \n", gametitle); strncpy(filename, gametitle, 20); strcat(filename, ".sav"); - write_to_file(filename, "READRAM\n", 1); + write_to_file(filename, "READRAM", 1); printf ("\nFinished\n"); } else if (userInput == '3') { - printf ("\nGoing to write to RAM from %s.sav ...", gametitle); - printf ("\n*** This will erase the save game from your Gameboy Cartridge ***"); - printf ("\nPress y to continue or any other key to abort."); - printf ("\n>"); + printf ("\nGoing to write to RAM from %s.sav ...\n", gametitle); + printf ("*** This will erase the save game from your Gameboy Cartridge ***\n"); + printf ("Press y to continue or any other key to abort.\n"); + printf ("> "); char userInputConfirm = read_one_letter(); if (userInputConfirm == 'y') { - printf ("\nWriting to RAM from %s.sav ... ", gametitle); - strncpy(filename, gametitle, 20); + printf ("\nWriting to RAM from %s.sav ... \n", gametitle); + strncpy(filename, gametitle, 30); strcat(filename, ".sav"); read_from_file(filename, "WRITERAM\n"); printf ("\nFinished\n"); @@ -131459,6 +131455,8 @@ int main() { } else if (userInput == '4') { RS232_CloseComport(cport_nr); + printf("\nCLosing Com connection...\n"); + printf("\nExiting..\n"); return(0); } else { diff --git a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.o b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.o index 743e2058b622a35d5dc9753f6fd43358bfc8801d..c2fa73511650c5d6d68462238f5eff5f3a517f4d 100644 GIT binary patch delta 12360 zcmZvi34B!5y~od;$qbW)Oi02Owjl}IkOUHlgs?Od0v%Q%TB)T^mLxz#GZX@dtz6oG z7!?$5CAKa>TtGz>qkw=&L1@*wwAk7f)KsB@z^hnMR3z{BKmU9F%=5kT@o<0l`}?2e zo^$S!VbllTxS7a~1Su&+mPAQ#?|1ZO6_q?`ofk6J5#PB8}^FLy_HWxSnX^=S~;@sEVEl(*e=OL($a- z>N}&tOK2~;Hh-(14#jymoVhx>wtasIUE8BCYCH38wDBL{)y`f1o?$KTO>k>#@ZEz5 z>n`8DIH1~n4HvEY0Sy;D!BvIMXZ|ksZ6@-}^QdBpRNeS@-J3>V00kQ^_O!dNJ`lX) z@9=RFT=Nb@Z!tGJ(v$obzmkC-dX+S&kCnrcr^V9;oQeR?>P zb%vbo&!9;_X9imZ_!&GS;KF6y3^mW~o?vjL-J=W+O2k11_8)}oVDe`Hn;4uBa1Vp8 z1gv0?D%X26gA4&bWzb!~LT^LLf(2l`00bhQn2jC|HPBK^^ z;9UmG1RT;JxBVI+&vVFj0go^^2m=8r@&0H-{Sbi0$ygY zM!+@(4+waG!E*xcWN_H4LT*v%x7@InVl4}*F>$0ZLJNXaN{a}JzYS8xxY^5 za^PoDGJ`>~M0glv3ON6*zT}XARt9AP-e%x-Cm9c*{Y>UK$;my#^%A&_aZJE%8gwi} zPtnZ>omg^(y_?+4U+G24tA2^9M-C0H8ibV-ZTwmnJhKCjM7Pb?O$(9T^mvS}b?oF^XI4t5&YzHT`pf^_ zkJIJO+LS@V+y~RC#jr;%*JHd7&s<(q{2(w5+-rDbcTeZm$WEwy>ryH0J8bp@p$U^~xES`jd{M zLn=BpQZcqtwa3pUr=*r`se3(Ek~6PEuP%c_Q(|>BswgzEe0hD%VpZY_XH$o3+7*Vb zo~QPq1qGobRf!gWooIUBME5K**|{~nzb8pK zkEj0-{XCaG$jQm*Jt9d>uN;5v*viP{B$X7IgMQXjtE4fLVvDKnF|nINRk6CdnyUKR zSRE=?Nn>xRt%n8aOwWke-(VVp7{*-W;m9pmMwK|uLw*H%C64zYzX81+$3w_}Lq3M{ z^Emo(?1nrTc`WjOkZ(XO7q{6XIPOHII$Du0ASZ!;>{mJJB2L=lBpZ1c@+9Py z$S)w%kE;r_6lG>xJv3)FbG}-X!cB!hdq@f5Tp_?MiRb)I%!oL)Wl! zmC8Hio}}U={573mN>s?%(Jx~)+d+6<6fPrU-3HD48M;x#!gEG807m5uL(MyNa6KXl&Y`u-)R? zG1%ML)*U$yZc_+V`=%*JTN0hZ9(QucK5J~+D6pLoXD4U47fag}wrMF-qS9ew)80j= za53Aq_QxBawleIGiz`0g*tD@>dwQI`#@MvYVS9d@{e-b;)5G?1v2p!}jeq6R?i3%> zY;4*Qaq$P@Y%dYg z?rC>)5jEIq8tmdeGgY{EoZV*ZSz-@}tFUvH%xqqP%LCbHb#z=EV>l?$OB-*bQSh&e zt0ZQ8+JIBiTbnX1@lQDB#?C-@H)S~si$a5^sPNBSdK>5~riL^r^nhy*?1?WPR48*Y zZRK^!-{P7y0D4FdB$$GEmb=#OhnMGfPZrWOrMo9os?2FF%<_?%>FkH1(Ou!ZUzlZY zfeO!v3w;W6q8oY4v=P41wP`nYm~CGQeJN7mPvREQc~kPi1TOl$fl==4)4*hR=T@Ah zMLqITT!Y3Y;u_v7W0U9Fo)9+2POPY-ev_jnuwV29LMmM1M$iRrFcrukg)8Fh9mb}& zKApmo;_TPh#$Hr~uXQ;M)<0do7^8gs4X&Y=&g!_*{vP_OJWEjew{fM5m?wJarI6D1 zMyAD$rID%Xf!WW=f5k;KCciSpuZ+n_*QPOPp%R%ky;f4fpjd?}eBO1}xv1*qYOsOCcHsPJdMeF!G&>>@~^g{m})H?!f81j(b#D1pP zQk*YB90P~nxX@ivMyINOSI?GK?IajVxaFrGk}3U77e z&cJ<%EARwzRQRyVX-U23@?Yq#Vaenlb=^Q8>TacHDXt_nFh51{FndCHrP~iyr3Nos zR9jy&vp(ireN{J`)*+92NtPaAjL$R3JnAK3V)UEzDX}>>#i|x8uDul_UowP7xjX?M zGLX%Dly<^s2d8mzai;l~>KDT$|RzUTyQMX829lpt(B6 zhR3EJCHz7aJ3UI0yOQ%Caa8`NZi#>sDJd?chj70tWew36I|XwPMb3MUuSDhHQu21i zpZw08IM0>z9ZT!BAHG1$t(`Yl-zUBFyfmYZCggtR%{vsJ>1{*)7CDU3*Gb<2*-p3N zeY=;TrDW8GC1sVU@OU?Z*6H-c8` zqb|pzF>L-aFbjO|mH7N-H@?V8Ed6gMb3}>rRcViwNh4Z4-5Y;pSskoGys;GwRo*~p z@(ADXu3BWc6<#x&nFo^l)asKL$VL&iH-I&{>PA9$Tjk*+q*EO%j8 z|6dKJwu5dlzX}vBR^6M;x!K}^4jY10 zlCz^Mvtj$VHQUEo$R1=bassjs*^k@~Ie?sqoP?Z=oPyjQId#|ealz~cYxu4|y%uar zPxE>GnM-^L-WIFg?|o;*o~GFG;EmaVs=dAxzvc7$e|^&D^PW(F2`7E&07-uD{dT?2 zm(k>XKRCh4+co9=;84q&*wpYr@Y7s>Al;YX_ja%Xg8~hK^?}|#k2hzJFW`M`#U7u> z@_92F8k+9^FgUbRqyJZa@0MVJBdLL1!#@fh_1Hhh zY^GvZ6V&Zc_@#haFRTfQ#x+4b2sKKp7lrMCD%b2ys4-d{gDTUC-i;z!(N71raRKUw zn$a5&n2oCGb%yP9QQbs^phoB-{e%q>RRUF^-6#}ye=<~5v*}P=^G~5FG@}<3j;n>T zS^gT51Aha>&21L81*$?9eimw&Rxd*F$ee=Wvge?_s3im+>h%@kHGY@x6v!hY#88}lx3g9J7SdsNs~VJ`@KNf>SRcobe2_E%xY zgnc6HEHPUT=0$}1_ax?2CY@jgu4$g5Sg++u-7FH?j20z;83abRh zB(PrCN@1&otrxaY*k)l{gwbbxZeur8g}&eePIft+q>m)<6DYnC`lio?>0>>! z1bk{>mI%eHqp&PteT5Aab`=!2Hded1{sc8a?CUfnHbdB4C@!)@+*`%HUD#d1nuI+l zY^$(mguT=b_dj3Beu1w`;M>BE32PO0R@iwc9@ej+`1YhnB6qqYe$`p^g5uV4p?KWv z!2*i~MugE{IykUW*mPl4!sZLB7q(p3YGHQ@+sKTbe-A)%{~v|o{yz!DkERzn5OI5; zxHCtDy&>#9C@%4VxF17t&7X<;m8eTlc2uuNFE%w?H~=+Xv!JjXC?2>$qJ~0oXGRDs z6BZRU6^gs?OJR3Hack>sNUnOL1U@SEQ=*=Q;;!x#wijx=?&?8d$Dz2sQ=-m6aaX^V zI9d`Ehv%OUl6#oq!UWX;ii>m+){vOCK9atrZ3W!Px?0Wrtu-s#h#~+WVWlLQTMFlKXC+rqs zYlSrldsft|;=U#9V`1lnd9eNG)>5F*nvLdq3mnK0tW4MhVKar*3R@uzukCL49}>1j z*gj!LgdKyjxi=>Tej|Yi_!|n3M^`A0%Mn&0tX$Z1VY7uT6}D2?eZrdQuSDF)3j+5G zJ1XpbVV?`TB&-Ae=)oQA2F3La7FH_kYGK#A%*JdByhQ@n3TqO!P1sIhZwUK~uup}3 zAuJJpqTmi@Kye2LlA;?6vn}=nv1baa6}Cdy9l{Pm0-qK3s<5|&eJt#pFb}@Tb7xYZxP!T(hKoB!*tK2V zjfJIV3S0|?I#se-FKVN>PeXAdyP@d$ZK;Fez9;TKg?%YZ;d4B9tBWYRkH}IeuDU|l z^}^;tadQjBT`g>bs7J)zDeQo-zXAGkxtSDqGYrDDG-R*mc5Y z30oq}7IwF&N1)v2-_rt*h&l$vjhuqwYyVu_cKA@vEK^ht6c2ETuySG3g;hgw&Goj} zjRGBETZKI@>~&EeiTbywcKE8zUFZ(QjSPU|t_~45>M}h4ek69a*vo}A2)kd{<4|1n z3*x>e?5MC-Q5VE*6PAWgc&YsS8x6_5{t;A2ul`w3d>>Scsuy*Os5?ci6Xig0Ee{LZ zENY9m&-X<8+{jL`--hDOoPpx&ydbQ7FXQ$XRV=Dp)C^IpL~Rze$0%F<%}AArE_1^J zp}7B7;lLd%6*WQB6j9Zp=8L*j)Cy4zQ1}l|mvx%iBsXYDstF4JL2VZHgs4|V{Xx`m zQLUm*Lh*%Iz0C+FLov${RoNT&Kf@aZE)%s%)T5&Ii8?Oo3sIqL(?}TNP0t{s&OJQqG9FAZ|*Ii5n_v5-WQC)eF2^)MKLdiFy-? z8~Ga)#u(FdT+|6sr$l*jO`KoUR#Drax^Xox2;42IwW&i}FvAM$n%)*1X8BsN9nZYa uNt@?M3*2`p?M5H{5B=ks7FcOxtm39;t+WN6QJtEev(hqm4fdq9CHxPOSG4W` delta 12629 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 F{|Bct$Wj0R diff --git a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.s b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.s index f7d61f4..111d65e 100644 --- a/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.s +++ b/code-pc/c/GBCartRead_v1.8_Rev1.3_C_Interface.s @@ -583,15 +583,15 @@ read_from_file: .ascii "unknown\0" .align 8 .LC6: - .ascii "GBCartRead v1.8 Rev. 1.3 by wodowiessel\0" + .ascii "GB-Dumper v1.8 Rev. 1.3.2 by wodowiesel\0" .align 8 .LC7: - .ascii "################################\12\0" + .ascii "################################\0" .align 8 .LC8: - .ascii "Opening COM PORT %d at %d baud ...\12\12\0" + .ascii "Opening COM PORT %d at %d baud ...\12\0" .LC9: - .ascii "Can not open com port\0" + .ascii "Can not open COM port\0" .align 8 .LC10: .ascii "\12Select an option below\12" @@ -601,158 +601,160 @@ read_from_file: .ascii "3. Write RAM\12" .ascii "4. Exit\0" .LC11: - .ascii "HEADER\12\0" + .ascii "> \0" .LC12: + .ascii "HEADER\0" +.LC13: .ascii "\15\12\0" .align 8 -.LC13: - .ascii "tokstr: NULL error, no title found, using default: unknown\0" .LC14: - .ascii "\12Game title: %s\12\0" + .ascii "\12tokstr: NULL error, no title found, using default: unknown\0" .LC15: - .ascii "MBC type: \0" + .ascii "\12Game title: %s\12\0" .LC16: - .ascii "ROM ONLY\0" + .ascii "MBC type: \0" .LC17: - .ascii "MBC1\0" + .ascii "ROM ONLY\0" .LC18: - .ascii "MBC1+RAM\0" + .ascii "MBC1\0" .LC19: - .ascii "MBC1+RAM+BATTERY\0" + .ascii "MBC1+RAM\0" .LC20: - .ascii "MBC2\0" + .ascii "MBC1+RAM+BATTERY\0" .LC21: - .ascii "MBC2+BATTERY\0" + .ascii "MBC2\0" .LC22: - .ascii "ROM+RAM\0" + .ascii "MBC2+BATTERY\0" .LC23: - .ascii "MMM01\0" + .ascii "ROM+RAM\0" .LC24: - .ascii "MMM01+RAM\0" + .ascii "MMM01\0" .LC25: - .ascii "MMM01+RAM+BATTERY\0" + .ascii "MMM01+RAM\0" .LC26: - .ascii "MBC3+TIMER+BATTERY\0" + .ascii "MMM01+RAM+BATTERY\0" .LC27: - .ascii "MBC3+TIMER+RAM+BATTERY\0" + .ascii "MBC3+TIMER+BATTERY\0" .LC28: - .ascii "MBC3\0" + .ascii "MBC3+TIMER+RAM+BATTERY\0" .LC29: - .ascii "MBC3+RAM\0" + .ascii "MBC3\0" .LC30: - .ascii "MBC3+RAM+BATTERY\0" + .ascii "MBC3+RAM\0" .LC31: - .ascii "MBC4\0" + .ascii "MBC3+RAM+BATTERY\0" .LC32: - .ascii "MBC4+RAM\0" + .ascii "MBC4\0" .LC33: - .ascii "MBC4+RAM+BATTERY\0" + .ascii "MBC4+RAM\0" .LC34: - .ascii "MBC5\0" + .ascii "MBC4+RAM+BATTERY\0" .LC35: - .ascii "MBC5+RAM\0" + .ascii "MBC5\0" .LC36: - .ascii "MBC5+RAM+BATTERY\0" + .ascii "MBC5+RAM\0" .LC37: - .ascii "MBC5+RUMBLE\0" + .ascii "MBC5+RAM+BATTERY\0" .LC38: - .ascii "MBC5+RUMBLE+RAM\0" + .ascii "MBC5+RUMBLE\0" .LC39: - .ascii "MBC5+RUMBLE+RAM+BATTERY\0" + .ascii "MBC5+RUMBLE+RAM\0" .LC40: - .ascii "Gameboy-Camera\0" + .ascii "MBC5+RUMBLE+RAM+BATTERY\0" .LC41: - .ascii "Not found or unknown\0" + .ascii "Gameboy-Camera\0" .LC42: - .ascii "ROM size: \0" + .ascii "Not found or unknown\0" .LC43: - .ascii "32 KByte (no ROM banking)\0" + .ascii "ROM size: \0" .LC44: - .ascii "64 KByte (4 banks)\0" + .ascii "32 KByte (no ROM banking)\0" .LC45: - .ascii "128 KByte (8 banks)\0" + .ascii "64 KByte (4 banks)\0" .LC46: - .ascii "256 KByte (16 banks)\0" + .ascii "128 KByte (8 banks)\0" .LC47: - .ascii "512 KByte (32 banks)\0" + .ascii "256 KByte (16 banks)\0" .LC48: - .ascii "1 MByte (63 banks)\0" + .ascii "512 KByte (32 banks)\0" .LC49: - .ascii "1 MByte (64 banks)\0" + .ascii "1 MByte (63 banks)\0" .LC50: - .ascii "2 MByte (125 banks)\0" + .ascii "1 MByte (64 banks)\0" .LC51: - .ascii "2 MByte (128 banks)\0" + .ascii "2 MByte (125 banks)\0" .LC52: - .ascii "4 MByte (256 banks)\0" + .ascii "2 MByte (128 banks)\0" .LC53: - .ascii "1.1 MByte (72 banks)\0" + .ascii "4 MByte (256 banks)\0" .LC54: - .ascii "1.2 MByte (80 banks)\0" + .ascii "1.1 MByte (72 banks)\0" .LC55: - .ascii "1.5 MByte (96 banks)\0" + .ascii "1.2 MByte (80 banks)\0" .LC56: - .ascii "Not found\0" + .ascii "1.5 MByte (96 banks)\0" .LC57: - .ascii "RAM size: \0" + .ascii "Not found\0" .LC58: - .ascii "512 bytes (nibbles)\0" + .ascii "\12RAM size: \0" .LC59: - .ascii "None\0" + .ascii "512 bytes (nibbles)\0" .LC60: - .ascii "2 KBytes\0" + .ascii "0 None\0" .LC61: + .ascii "2 KBytes\0" +.LC62: .ascii "8 KBytes\0" .align 8 -.LC62: +.LC63: .ascii "32 KBytes (4 banks of 8 Kbytes)\0" .align 8 -.LC63: - .ascii "128 KBytes (16 banks of 8 Kbytes)\0" .LC64: - .ascii "Logo check: \0" + .ascii "128 KBytes (16 banks of 8 Kbytes)\0" .LC65: - .ascii "OK\0" + .ascii "Logo check: \0" .LC66: - .ascii "Failed\0" + .ascii "1 OK\0" .LC67: - .ascii "\12select loop error\0" + .ascii "0 Failed\0" .LC68: - .ascii "tokstr: %s\12\0" + .ascii "\12select loop error\0" .LC69: - .ascii "\12Flushed\0" + .ascii "tokstr: %s\12\0" .LC70: - .ascii "\12Dumping ROM to %s.gb ... \0" + .ascii "\12Dumping ROM to %s.gb ... \12\0" .LC71: - .ascii "READROM\12\0" + .ascii "READROM\0" .LC72: .ascii "\12Finished\0" .LC73: - .ascii "\12Dumping RAM to %s.sav ... \0" + .ascii "\12Dumping RAM to %s.sav ... \12\0" .LC74: - .ascii "READRAM\12\0" + .ascii "READRAM\0" .align 8 .LC75: - .ascii "\12Going to write to RAM from %s.sav ...\0" + .ascii "\12Going to write to RAM from %s.sav ...\12\0" .align 8 .LC76: - .ascii "\12*** This will erase the save game from your Gameboy Cartridge ***\0" + .ascii "*** This will erase the save game from your Gameboy Cartridge ***\0" .align 8 .LC77: - .ascii "\12Press y to continue or any other key to abort.\0" -.LC78: - .ascii "\12>\0" + .ascii "Press y to continue or any other key to abort.\0" .align 8 +.LC78: + .ascii "\12Writing to RAM from %s.sav ... \12\0" .LC79: - .ascii "\12Writing to RAM from %s.sav ... \0" -.LC80: .ascii "WRITERAM\12\0" -.LC81: +.LC80: .ascii "\12Aborted\0" - .align 8 +.LC81: + .ascii "\12CLosing Com connection...\0" .LC82: - .ascii "\12Option not recognised, please try again.\0" + .ascii "\12Exiting..\0" + .align 8 .LC83: + .ascii "\12Option not recognised, please try again.\0" +.LC84: .ascii "\12Tasks Finished\0" .text .globl main @@ -823,180 +825,175 @@ main: .LVL74: .loc 1 145 3 view .LVU150 .loc 1 145 9 is_stmt 0 view .LVU151 - jmp .L98 + jmp .L97 .L23: .loc 1 150 2 is_stmt 1 view .LVU152 movl $1000000, %ecx call usleep .LVL75: .loc 1 152 2 view .LVU153 - .loc 1 152 2 is_stmt 0 view .LVU154 - leaq .L81(%rip), %rsi - leaq .L65(%rip), %rdi + .loc 1 154 3 is_stmt 0 view .LVU154 + leaq .LC10(%rip), %rsi + .loc 1 155 3 view .LVU155 + leaq .LC11(%rip), %rbx + .loc 1 334 4 view .LVU156 + leaq .LC83(%rip), %rdi jmp .L96 .LVL76: -.L109: +.L107: .LBB2: - .loc 1 158 4 is_stmt 1 view .LVU155 - .loc 1 158 18 is_stmt 0 view .LVU156 + .loc 1 158 4 is_stmt 1 view .LVU157 + .loc 1 158 18 is_stmt 0 view .LVU158 movl $0, headercounter(%rip) - .loc 1 159 4 is_stmt 1 view .LVU157 - leaq .LC11(%rip), %rdx + .loc 1 159 4 is_stmt 1 view .LVU159 + leaq .LC12(%rip), %rdx movl cport_nr(%rip), %ecx call RS232_cputs .LVL77: - .loc 1 160 4 view .LVU158 - .loc 1 161 4 view .LVU159 - .loc 1 162 4 view .LVU160 - .loc 1 159 4 is_stmt 0 view .LVU161 + .loc 1 160 4 view .LVU160 + .loc 1 161 4 view .LVU161 + .loc 1 162 4 view .LVU162 + .loc 1 159 4 is_stmt 0 view .LVU163 movl $50, %ebx - .loc 1 164 9 view .LVU162 - leaq 32(%rsp), %rbp + .loc 1 164 9 view .LVU164 + leaq 32(%rsp), %rsi .LVL78: .L28: - .loc 1 163 4 is_stmt 1 view .LVU163 - .loc 1 164 5 view .LVU164 - .loc 1 164 9 is_stmt 0 view .LVU165 + .loc 1 163 4 is_stmt 1 view .LVU165 + .loc 1 164 5 view .LVU166 + .loc 1 164 9 is_stmt 0 view .LVU167 movl $4095, %r8d - movq %rbp, %rdx + movq %rsi, %rdx movl cport_nr(%rip), %ecx call RS232_PollComport .LVL79: - .loc 1 165 5 is_stmt 1 view .LVU166 - .loc 1 165 8 is_stmt 0 view .LVU167 + .loc 1 165 5 is_stmt 1 view .LVU168 + .loc 1 165 8 is_stmt 0 view .LVU169 testl %eax, %eax - jg .L99 - .loc 1 171 6 is_stmt 1 view .LVU168 + jg .L98 + .loc 1 171 6 is_stmt 1 view .LVU170 .LVL80: - .loc 1 172 6 view .LVU169 - .loc 1 172 9 is_stmt 0 view .LVU170 + .loc 1 172 6 view .LVU171 + .loc 1 172 9 is_stmt 0 view .LVU172 subl $1, %ebx .LVL81: - .loc 1 172 9 view .LVU171 + .loc 1 172 9 view .LVU173 je .L27 .LVL82: - .loc 1 178 6 is_stmt 1 view .LVU172 + .loc 1 178 6 is_stmt 1 view .LVU174 movl $50000, %ecx call usleep .LVL83: - .loc 1 163 10 view .LVU173 - .loc 1 164 7 is_stmt 0 view .LVU174 + .loc 1 163 10 view .LVU175 + .loc 1 164 7 is_stmt 0 view .LVU176 jmp .L28 .LVL84: -.L99: - .loc 1 166 6 is_stmt 1 view .LVU175 - .loc 1 166 16 is_stmt 0 view .LVU176 +.L98: + .loc 1 166 6 is_stmt 1 view .LVU177 + .loc 1 166 16 is_stmt 0 view .LVU178 cltq - .loc 1 166 16 view .LVU177 + .loc 1 166 16 view .LVU179 movb $0, 32(%rsp,%rax) - .loc 1 167 6 is_stmt 1 view .LVU178 - .loc 1 167 14 is_stmt 0 view .LVU179 + .loc 1 167 6 is_stmt 1 view .LVU180 + .loc 1 167 14 is_stmt 0 view .LVU181 call __getreent .LVL85: - .loc 1 167 6 view .LVU180 + .loc 1 167 6 view .LVU182 movq 16(%rax), %rcx call fflush .LVL86: - .loc 1 168 6 is_stmt 1 view .LVU181 + .loc 1 168 6 is_stmt 1 view .LVU183 .L27: - .loc 1 182 4 view .LVU182 - .loc 1 182 19 is_stmt 0 view .LVU183 + .loc 1 182 4 view .LVU184 + .loc 1 182 19 is_stmt 0 view .LVU185 leaq 32(%rsp), %rcx - leaq .LC12(%rip), %rdx + leaq .LC13(%rip), %rdx call strtok .LVL87: movq %rax, %rbx .LVL88: - .loc 1 183 5 is_stmt 1 view .LVU184 - .loc 1 183 8 is_stmt 0 view .LVU185 + .loc 1 183 5 is_stmt 1 view .LVU186 + .loc 1 183 8 is_stmt 0 view .LVU187 testq %rax, %rax - je .L100 + je .L99 .LVL89: .L29: - .loc 1 187 10 is_stmt 1 view .LVU186 - leaq .L36(%rip), %rbp + .loc 1 187 10 is_stmt 1 view .LVU188 + leaq .L81(%rip), %rdi + leaq .L65(%rip), %rbp + leaq .L36(%rip), %rsi jmp .L89 .LVL90: -.L100: - .loc 1 184 5 view .LVU187 - leaq .LC13(%rip), %rcx +.L99: + .loc 1 184 5 view .LVU189 + leaq .LC14(%rip), %rcx call puts .LVL91: - .loc 1 185 5 view .LVU188 - .loc 1 185 12 is_stmt 0 view .LVU189 + .loc 1 185 5 view .LVU190 + .loc 1 185 12 is_stmt 0 view .LVU191 leaq .LC5(%rip), %rbx jmp .L29 .LVL92: -.L102: - .loc 1 189 6 is_stmt 1 view .LVU190 +.L100: + .loc 1 189 6 is_stmt 1 view .LVU192 movq %rbx, %rdx - leaq .LC14(%rip), %rcx + leaq .LC15(%rip), %rcx call printf .LVL93: - .loc 1 190 6 view .LVU191 + .loc 1 190 6 view .LVU193 movl $30, %r8d movq %rbx, %rdx leaq gametitle(%rip), %rcx call strncpy .LVL94: .L31: - .loc 1 289 5 view .LVU192 - .loc 1 289 14 is_stmt 0 view .LVU193 - leaq .LC12(%rip), %rdx - movl $0, %ecx - call strtok -.LVL95: - movq %rax, %rbx -.LVL96: - .loc 1 290 5 is_stmt 1 view .LVU194 - movq %rax, %rdx - leaq .LC68(%rip), %rcx + .loc 1 290 5 view .LVU194 + movq %rbx, %rdx + leaq .LC69(%rip), %rcx call printf -.LVL97: +.LVL95: .loc 1 291 5 view .LVU195 .loc 1 291 18 is_stmt 0 view .LVU196 addl $1, headercounter(%rip) .loc 1 187 10 is_stmt 1 view .LVU197 - testq %rbx, %rbx - je .L101 .L89: .loc 1 188 5 view .LVU198 .loc 1 188 23 is_stmt 0 view .LVU199 movl headercounter(%rip), %eax .loc 1 188 8 view .LVU200 testl %eax, %eax - je .L102 + je .L100 .loc 1 192 10 is_stmt 1 view .LVU201 .loc 1 192 13 is_stmt 0 view .LVU202 cmpl $1, %eax - je .L103 + je .L101 .loc 1 225 10 is_stmt 1 view .LVU203 .loc 1 225 13 is_stmt 0 view .LVU204 cmpl $2, %eax - je .L104 + je .L102 .loc 1 257 10 is_stmt 1 view .LVU205 .loc 1 257 13 is_stmt 0 view .LVU206 cmpl $3, %eax - je .L105 + je .L103 .loc 1 276 10 is_stmt 1 view .LVU207 .loc 1 276 13 is_stmt 0 view .LVU208 cmpl $4, %eax - je .L106 + je .L104 .loc 1 287 5 is_stmt 1 view .LVU209 - leaq .LC67(%rip), %rcx + leaq .LC68(%rip), %rcx call puts -.LVL98: +.LVL96: jmp .L31 -.L103: +.L101: .loc 1 193 6 view .LVU210 - leaq .LC15(%rip), %rcx + leaq .LC16(%rip), %rcx call printf -.LVL99: +.LVL97: .loc 1 194 6 view .LVU211 .loc 1 194 22 is_stmt 0 view .LVU212 movq %rbx, %rcx call atoi -.LVL100: +.LVL98: .loc 1 194 20 view .LVU213 movl %eax, cartridgeType(%rip) .loc 1 195 6 is_stmt 1 view .LVU214 @@ -1007,8 +1004,8 @@ main: cmpl $30, %eax ja .L34 movl %eax, %eax - movslq 0(%rbp,%rax,4), %rax - addq %rbp, %rax + movslq (%rsi,%rax,4), %rax + addq %rsi, %rax jmp *%rax .section .rdata,"dr" .align 4 @@ -1049,236 +1046,236 @@ main: cmpl $252, %eax jne .L34 .loc 1 221 17 view .LVU215 - leaq .LC40(%rip), %rcx + leaq .LC41(%rip), %rcx call puts -.LVL101: +.LVL99: .loc 1 221 45 view .LVU216 .loc 1 221 7 is_stmt 0 view .LVU217 jmp .L31 .L60: .loc 1 196 15 is_stmt 1 view .LVU218 - leaq .LC16(%rip), %rcx + leaq .LC17(%rip), %rcx call puts -.LVL102: +.LVL100: .loc 1 196 38 view .LVU219 .loc 1 196 7 is_stmt 0 view .LVU220 jmp .L31 .L59: .loc 1 197 15 is_stmt 1 view .LVU221 - leaq .LC17(%rip), %rcx + leaq .LC18(%rip), %rcx call puts -.LVL103: +.LVL101: .loc 1 197 34 view .LVU222 .loc 1 197 7 is_stmt 0 view .LVU223 jmp .L31 .L58: .loc 1 198 15 is_stmt 1 view .LVU224 - leaq .LC18(%rip), %rcx + leaq .LC19(%rip), %rcx call puts -.LVL104: +.LVL102: .loc 1 198 38 view .LVU225 .loc 1 198 7 is_stmt 0 view .LVU226 jmp .L31 .L57: .loc 1 199 15 is_stmt 1 view .LVU227 - leaq .LC19(%rip), %rcx + leaq .LC20(%rip), %rcx call puts -.LVL105: +.LVL103: .loc 1 199 46 view .LVU228 .loc 1 199 7 is_stmt 0 view .LVU229 jmp .L31 .L56: .loc 1 200 15 is_stmt 1 view .LVU230 - leaq .LC20(%rip), %rcx + leaq .LC21(%rip), %rcx call puts -.LVL106: +.LVL104: .loc 1 200 34 view .LVU231 .loc 1 200 7 is_stmt 0 view .LVU232 jmp .L31 .L55: .loc 1 201 15 is_stmt 1 view .LVU233 - leaq .LC21(%rip), %rcx + leaq .LC22(%rip), %rcx call puts -.LVL107: +.LVL105: .loc 1 201 42 view .LVU234 .loc 1 201 7 is_stmt 0 view .LVU235 jmp .L31 .L54: .loc 1 202 15 is_stmt 1 view .LVU236 - leaq .LC22(%rip), %rcx + leaq .LC23(%rip), %rcx call puts -.LVL108: +.LVL106: .loc 1 202 37 view .LVU237 .loc 1 202 7 is_stmt 0 view .LVU238 jmp .L31 .L53: .loc 1 203 15 is_stmt 1 view .LVU239 - leaq .LC16(%rip), %rcx + leaq .LC17(%rip), %rcx call puts -.LVL109: +.LVL107: .loc 1 203 38 view .LVU240 .loc 1 203 7 is_stmt 0 view .LVU241 jmp .L31 .L52: .loc 1 204 16 is_stmt 1 view .LVU242 - leaq .LC23(%rip), %rcx + leaq .LC24(%rip), %rcx call puts -.LVL110: +.LVL108: .loc 1 204 36 view .LVU243 .loc 1 204 7 is_stmt 0 view .LVU244 jmp .L31 .L51: .loc 1 205 16 is_stmt 1 view .LVU245 - leaq .LC24(%rip), %rcx + leaq .LC25(%rip), %rcx call puts -.LVL111: +.LVL109: .loc 1 205 40 view .LVU246 .loc 1 205 7 is_stmt 0 view .LVU247 jmp .L31 .L50: .loc 1 206 16 is_stmt 1 view .LVU248 - leaq .LC25(%rip), %rcx + leaq .LC26(%rip), %rcx call puts -.LVL112: +.LVL110: .loc 1 206 48 view .LVU249 .loc 1 206 7 is_stmt 0 view .LVU250 jmp .L31 .L49: .loc 1 207 16 is_stmt 1 view .LVU251 - leaq .LC26(%rip), %rcx + leaq .LC27(%rip), %rcx call puts -.LVL113: +.LVL111: .loc 1 207 49 view .LVU252 .loc 1 207 7 is_stmt 0 view .LVU253 jmp .L31 .L48: .loc 1 208 16 is_stmt 1 view .LVU254 - leaq .LC27(%rip), %rcx + leaq .LC28(%rip), %rcx call puts -.LVL114: +.LVL112: .loc 1 208 53 view .LVU255 .loc 1 208 7 is_stmt 0 view .LVU256 jmp .L31 .L47: .loc 1 209 16 is_stmt 1 view .LVU257 - leaq .LC28(%rip), %rcx + leaq .LC29(%rip), %rcx call puts -.LVL115: +.LVL113: .loc 1 209 35 view .LVU258 .loc 1 209 7 is_stmt 0 view .LVU259 jmp .L31 .L46: .loc 1 210 16 is_stmt 1 view .LVU260 - leaq .LC29(%rip), %rcx + leaq .LC30(%rip), %rcx call puts -.LVL116: +.LVL114: .loc 1 210 39 view .LVU261 .loc 1 210 7 is_stmt 0 view .LVU262 jmp .L31 .L45: .loc 1 211 16 is_stmt 1 view .LVU263 - leaq .LC30(%rip), %rcx + leaq .LC31(%rip), %rcx call puts -.LVL117: +.LVL115: .loc 1 211 47 view .LVU264 .loc 1 211 7 is_stmt 0 view .LVU265 jmp .L31 .L44: .loc 1 212 16 is_stmt 1 view .LVU266 - leaq .LC31(%rip), %rcx + leaq .LC32(%rip), %rcx call puts -.LVL118: +.LVL116: .loc 1 212 35 view .LVU267 .loc 1 212 7 is_stmt 0 view .LVU268 jmp .L31 .L43: .loc 1 213 16 is_stmt 1 view .LVU269 - leaq .LC32(%rip), %rcx + leaq .LC33(%rip), %rcx call puts -.LVL119: +.LVL117: .loc 1 213 39 view .LVU270 .loc 1 213 7 is_stmt 0 view .LVU271 jmp .L31 .L42: .loc 1 214 16 is_stmt 1 view .LVU272 - leaq .LC33(%rip), %rcx + leaq .LC34(%rip), %rcx call puts -.LVL120: +.LVL118: .loc 1 214 47 view .LVU273 .loc 1 214 7 is_stmt 0 view .LVU274 jmp .L31 .L41: .loc 1 215 16 is_stmt 1 view .LVU275 - leaq .LC34(%rip), %rcx + leaq .LC35(%rip), %rcx call puts -.LVL121: +.LVL119: .loc 1 215 35 view .LVU276 .loc 1 215 7 is_stmt 0 view .LVU277 jmp .L31 .L40: .loc 1 216 16 is_stmt 1 view .LVU278 - leaq .LC35(%rip), %rcx + leaq .LC36(%rip), %rcx call puts -.LVL122: +.LVL120: .loc 1 216 39 view .LVU279 .loc 1 216 7 is_stmt 0 view .LVU280 jmp .L31 .L39: .loc 1 217 16 is_stmt 1 view .LVU281 - leaq .LC36(%rip), %rcx + leaq .LC37(%rip), %rcx call puts -.LVL123: +.LVL121: .loc 1 217 47 view .LVU282 .loc 1 217 7 is_stmt 0 view .LVU283 jmp .L31 .L38: .loc 1 218 16 is_stmt 1 view .LVU284 - leaq .LC37(%rip), %rcx + leaq .LC38(%rip), %rcx call puts -.LVL124: +.LVL122: .loc 1 218 42 view .LVU285 .loc 1 218 7 is_stmt 0 view .LVU286 jmp .L31 .L37: .loc 1 219 16 is_stmt 1 view .LVU287 - leaq .LC38(%rip), %rcx + leaq .LC39(%rip), %rcx call puts -.LVL125: +.LVL123: .loc 1 219 46 view .LVU288 .loc 1 219 7 is_stmt 0 view .LVU289 jmp .L31 .L35: .loc 1 220 16 is_stmt 1 view .LVU290 - leaq .LC39(%rip), %rcx + leaq .LC40(%rip), %rcx call puts -.LVL126: +.LVL124: .loc 1 220 54 view .LVU291 .loc 1 220 7 is_stmt 0 view .LVU292 jmp .L31 .L34: .loc 1 222 16 is_stmt 1 view .LVU293 - leaq .LC41(%rip), %rcx + leaq .LC42(%rip), %rcx call puts -.LVL127: +.LVL125: jmp .L31 -.L104: +.L102: .loc 1 226 6 view .LVU294 - leaq .LC42(%rip), %rcx + leaq .LC43(%rip), %rcx call printf -.LVL128: +.LVL126: .loc 1 227 6 view .LVU295 .loc 1 227 16 is_stmt 0 view .LVU296 movq %rbx, %rcx call atoi -.LVL129: +.LVL127: .loc 1 227 14 view .LVU297 movl %eax, romSize(%rip) .loc 1 228 6 is_stmt 1 view .LVU298 cmpl $84, %eax ja .L63 movl %eax, %eax - movslq (%rdi,%rax,4), %rax - addq %rdi, %rax + movslq 0(%rbp,%rax,4), %rax + addq %rbp, %rax jmp *%rax .section .rdata,"dr" .align 4 @@ -1371,41 +1368,41 @@ main: .text .L75: .loc 1 229 15 view .LVU299 - leaq .LC43(%rip), %rcx + leaq .LC44(%rip), %rcx call puts -.LVL130: +.LVL128: .loc 1 229 55 view .LVU300 .loc 1 229 7 is_stmt 0 view .LVU301 jmp .L31 .L74: .loc 1 230 15 is_stmt 1 view .LVU302 - leaq .LC44(%rip), %rcx + leaq .LC45(%rip), %rcx call puts -.LVL131: +.LVL129: .loc 1 230 48 view .LVU303 .loc 1 230 7 is_stmt 0 view .LVU304 jmp .L31 .L73: .loc 1 231 15 is_stmt 1 view .LVU305 - leaq .LC45(%rip), %rcx + leaq .LC46(%rip), %rcx call puts -.LVL132: +.LVL130: .loc 1 231 49 view .LVU306 .loc 1 231 7 is_stmt 0 view .LVU307 jmp .L31 .L72: .loc 1 232 15 is_stmt 1 view .LVU308 - leaq .LC46(%rip), %rcx + leaq .LC47(%rip), %rcx call puts -.LVL133: +.LVL131: .loc 1 232 50 view .LVU309 .loc 1 232 7 is_stmt 0 view .LVU310 jmp .L31 .L71: .loc 1 233 15 is_stmt 1 view .LVU311 - leaq .LC47(%rip), %rcx + leaq .LC48(%rip), %rcx call puts -.LVL134: +.LVL132: .loc 1 233 50 view .LVU312 .loc 1 233 7 is_stmt 0 view .LVU313 jmp .L31 @@ -1418,15 +1415,15 @@ main: cmpl $2, %eax ja .L76 .loc 1 236 9 is_stmt 1 view .LVU317 - leaq .LC48(%rip), %rcx + leaq .LC49(%rip), %rcx call puts -.LVL135: +.LVL133: jmp .L31 .L76: .loc 1 239 9 view .LVU318 - leaq .LC49(%rip), %rcx + leaq .LC50(%rip), %rcx call puts -.LVL136: +.LVL134: jmp .L31 .L69: .loc 1 243 8 view .LVU319 @@ -1437,72 +1434,72 @@ main: cmpl $2, %eax ja .L77 .loc 1 244 9 is_stmt 1 view .LVU322 - leaq .LC50(%rip), %rcx + leaq .LC51(%rip), %rcx call puts -.LVL137: +.LVL135: jmp .L31 .L77: .loc 1 247 9 view .LVU323 - leaq .LC51(%rip), %rcx + leaq .LC52(%rip), %rcx call puts -.LVL138: +.LVL136: jmp .L31 .L68: .loc 1 250 15 view .LVU324 - leaq .LC52(%rip), %rcx + leaq .LC53(%rip), %rcx call puts -.LVL139: +.LVL137: .loc 1 250 49 view .LVU325 .loc 1 250 7 is_stmt 0 view .LVU326 jmp .L31 .L67: .loc 1 251 16 is_stmt 1 view .LVU327 - leaq .LC53(%rip), %rcx + leaq .LC54(%rip), %rcx call puts -.LVL140: +.LVL138: .loc 1 251 51 view .LVU328 .loc 1 251 7 is_stmt 0 view .LVU329 jmp .L31 .L66: .loc 1 252 16 is_stmt 1 view .LVU330 - leaq .LC54(%rip), %rcx + leaq .LC55(%rip), %rcx call puts -.LVL141: +.LVL139: .loc 1 252 51 view .LVU331 .loc 1 252 7 is_stmt 0 view .LVU332 jmp .L31 .L64: .loc 1 253 16 is_stmt 1 view .LVU333 - leaq .LC55(%rip), %rcx + leaq .LC56(%rip), %rcx call puts -.LVL142: +.LVL140: .loc 1 253 51 view .LVU334 .loc 1 253 7 is_stmt 0 view .LVU335 jmp .L31 .L63: .loc 1 254 16 is_stmt 1 view .LVU336 - leaq .LC56(%rip), %rcx + leaq .LC57(%rip), %rcx call puts -.LVL143: +.LVL141: jmp .L31 -.L105: +.L103: .loc 1 258 6 view .LVU337 - leaq .LC57(%rip), %rcx + leaq .LC58(%rip), %rcx call printf -.LVL144: +.LVL142: .loc 1 259 6 view .LVU338 .loc 1 259 16 is_stmt 0 view .LVU339 movq %rbx, %rcx call atoi -.LVL145: +.LVL143: .loc 1 259 14 view .LVU340 movl %eax, ramSize(%rip) .loc 1 260 6 is_stmt 1 view .LVU341 cmpl $4, %eax ja .L79 movl %eax, %eax - movslq (%rsi,%rax,4), %rax - addq %rsi, %rax + movslq (%rdi,%rax,4), %rax + addq %rdi, %rax jmp *%rax .section .rdata,"dr" .align 4 @@ -1517,278 +1514,273 @@ main: .loc 1 262 8 view .LVU342 .loc 1 262 11 is_stmt 0 view .LVU343 cmpl $6, cartridgeType(%rip) - je .L107 + je .L105 .loc 1 266 9 is_stmt 1 view .LVU344 - leaq .LC59(%rip), %rcx + leaq .LC60(%rip), %rcx call puts -.LVL146: +.LVL144: jmp .L31 -.L107: +.L105: .loc 1 263 9 view .LVU345 - leaq .LC58(%rip), %rcx + leaq .LC59(%rip), %rcx call puts -.LVL147: +.LVL145: jmp .L31 .L84: .loc 1 269 15 view .LVU346 - leaq .LC60(%rip), %rcx + leaq .LC61(%rip), %rcx call puts -.LVL148: +.LVL146: .loc 1 269 38 view .LVU347 .loc 1 269 7 is_stmt 0 view .LVU348 jmp .L31 .L83: .loc 1 270 15 is_stmt 1 view .LVU349 - leaq .LC61(%rip), %rcx + leaq .LC62(%rip), %rcx call puts -.LVL149: +.LVL147: .loc 1 270 38 view .LVU350 .loc 1 270 7 is_stmt 0 view .LVU351 jmp .L31 .L82: .loc 1 271 15 is_stmt 1 view .LVU352 - leaq .LC62(%rip), %rcx + leaq .LC63(%rip), %rcx call puts -.LVL150: +.LVL148: .loc 1 271 61 view .LVU353 .loc 1 271 7 is_stmt 0 view .LVU354 jmp .L31 .L80: .loc 1 272 15 is_stmt 1 view .LVU355 - leaq .LC63(%rip), %rcx + leaq .LC64(%rip), %rcx call puts -.LVL151: +.LVL149: .loc 1 272 63 view .LVU356 .loc 1 272 7 is_stmt 0 view .LVU357 jmp .L31 .L79: .loc 1 273 16 is_stmt 1 view .LVU358 - leaq .LC56(%rip), %rcx + leaq .LC57(%rip), %rcx call puts -.LVL152: +.LVL150: jmp .L31 -.L106: +.L104: .loc 1 277 6 view .LVU359 - leaq .LC64(%rip), %rcx + leaq .LC65(%rip), %rcx call printf -.LVL153: +.LVL151: .loc 1 278 6 view .LVU360 .loc 1 278 18 is_stmt 0 view .LVU361 movq %rbx, %rcx call atoi -.LVL154: +.LVL152: .loc 1 278 16 view .LVU362 movl %eax, logoCheck(%rip) .loc 1 279 6 is_stmt 1 view .LVU363 .loc 1 279 9 is_stmt 0 view .LVU364 cmpl $1, %eax - je .L108 + je .L106 .loc 1 283 7 is_stmt 1 view .LVU365 - leaq .LC66(%rip), %rcx + leaq .LC67(%rip), %rcx call puts -.LVL155: +.LVL153: jmp .L31 -.L108: +.L106: .loc 1 280 7 view .LVU366 - leaq .LC65(%rip), %rcx + leaq .LC66(%rip), %rcx call puts -.LVL156: +.LVL154: jmp .L31 -.L101: - .loc 1 293 4 view .LVU367 - leaq .LC69(%rip), %rcx - call puts -.LVL157: - .loc 1 294 4 view .LVU368 - .loc 1 294 12 is_stmt 0 view .LVU369 - call __getreent -.LVL158: - .loc 1 294 4 view .LVU370 - movq 16(%rax), %rcx - call fflush -.LVL159: +.LVL155: +.L108: + .loc 1 280 7 is_stmt 0 view .LVU367 .LBE2: - jmp .L90 -.LVL160: -.L110: - .loc 1 297 4 is_stmt 1 view .LVU371 + .loc 1 297 4 is_stmt 1 view .LVU368 leaq gametitle(%rip), %rdx leaq .LC70(%rip), %rcx call printf -.LVL161: - .loc 1 298 4 view .LVU372 +.LVL156: + .loc 1 298 4 view .LVU369 movl $20, %r8d leaq gametitle(%rip), %rdx leaq filename(%rip), %rcx call strncpy -.LVL162: - .loc 1 299 4 view .LVU373 +.LVL157: + .loc 1 299 4 view .LVU370 leaq filename(%rip), %rcx call strlen -.LVL163: +.LVL158: leaq filename(%rip), %rcx movl $6448942, (%rcx,%rax) - .loc 1 300 4 view .LVU374 + .loc 1 300 4 view .LVU371 movl $32, %r8d leaq .LC71(%rip), %rdx call write_to_file -.LVL164: - .loc 1 301 4 view .LVU375 +.LVL159: + .loc 1 301 4 view .LVU372 leaq .LC72(%rip), %rcx call puts -.LVL165: -.L90: - .loc 1 334 2 view .LVU376 - leaq .LC83(%rip), %rcx +.LVL160: +.L91: + .loc 1 336 2 view .LVU373 + leaq .LC84(%rip), %rcx call puts -.LVL166: - .loc 1 153 8 view .LVU377 +.LVL161: + .loc 1 153 8 view .LVU374 .L96: - .loc 1 153 2 view .LVU378 - .loc 1 154 3 view .LVU379 - leaq .LC10(%rip), %rcx + .loc 1 153 2 view .LVU375 + .loc 1 154 3 view .LVU376 + movq %rsi, %rcx call puts -.LVL167: - .loc 1 155 3 view .LVU380 - movl $62, %ecx - call putchar -.LVL168: - .loc 1 156 3 view .LVU381 - .loc 1 156 15 is_stmt 0 view .LVU382 +.LVL162: + .loc 1 155 3 view .LVU377 + movq %rbx, %rcx + call printf +.LVL163: + .loc 1 156 3 view .LVU378 + .loc 1 156 15 is_stmt 0 view .LVU379 call read_one_letter -.LVL169: - .loc 1 157 3 is_stmt 1 view .LVU383 - .loc 1 157 6 is_stmt 0 view .LVU384 +.LVL164: + .loc 1 157 3 is_stmt 1 view .LVU380 + .loc 1 157 6 is_stmt 0 view .LVU381 cmpb $48, %al - je .L109 - .loc 1 296 8 is_stmt 1 view .LVU385 - .loc 1 296 11 is_stmt 0 view .LVU386 + je .L107 + .loc 1 296 8 is_stmt 1 view .LVU382 + .loc 1 296 11 is_stmt 0 view .LVU383 cmpb $49, %al - je .L110 - .loc 1 303 8 is_stmt 1 view .LVU387 - .loc 1 303 11 is_stmt 0 view .LVU388 + je .L108 + .loc 1 303 8 is_stmt 1 view .LVU384 + .loc 1 303 11 is_stmt 0 view .LVU385 cmpb $50, %al - je .L111 - .loc 1 310 8 is_stmt 1 view .LVU389 - .loc 1 310 11 is_stmt 0 view .LVU390 + je .L109 + .loc 1 310 8 is_stmt 1 view .LVU386 + .loc 1 310 11 is_stmt 0 view .LVU387 cmpb $51, %al - je .L112 - .loc 1 327 8 is_stmt 1 view .LVU391 - .loc 1 327 11 is_stmt 0 view .LVU392 + je .L110 + .loc 1 327 8 is_stmt 1 view .LVU388 + .loc 1 327 11 is_stmt 0 view .LVU389 cmpb $52, %al - je .L113 - .loc 1 332 4 is_stmt 1 view .LVU393 - leaq .LC82(%rip), %rcx + je .L111 + .loc 1 334 4 is_stmt 1 view .LVU390 + movq %rdi, %rcx call puts -.LVL170: - .loc 1 332 4 is_stmt 0 view .LVU394 - jmp .L90 -.LVL171: -.L111: - .loc 1 304 4 is_stmt 1 view .LVU395 +.LVL165: + .loc 1 334 4 is_stmt 0 view .LVU391 + jmp .L91 +.LVL166: +.L109: + .loc 1 304 4 is_stmt 1 view .LVU392 leaq gametitle(%rip), %rdx leaq .LC73(%rip), %rcx call printf -.LVL172: - .loc 1 305 4 view .LVU396 +.LVL167: + .loc 1 305 4 view .LVU393 movl $20, %r8d leaq gametitle(%rip), %rdx leaq filename(%rip), %rcx call strncpy -.LVL173: - .loc 1 306 4 view .LVU397 +.LVL168: + .loc 1 306 4 view .LVU394 leaq filename(%rip), %rcx call strlen -.LVL174: +.LVL169: leaq filename(%rip), %rcx addq %rcx, %rax movl $1986097966, (%rax) movb $0, 4(%rax) - .loc 1 307 4 view .LVU398 + .loc 1 307 4 view .LVU395 movl $1, %r8d leaq .LC74(%rip), %rdx call write_to_file -.LVL175: - .loc 1 308 4 view .LVU399 +.LVL170: + .loc 1 308 4 view .LVU396 leaq .LC72(%rip), %rcx call puts -.LVL176: - jmp .L90 -.LVL177: -.L112: +.LVL171: + jmp .L91 +.LVL172: +.L110: .LBB3: - .loc 1 311 4 view .LVU400 + .loc 1 311 4 view .LVU397 leaq gametitle(%rip), %rdx leaq .LC75(%rip), %rcx call printf -.LVL178: - .loc 1 312 4 view .LVU401 +.LVL173: + .loc 1 312 4 view .LVU398 leaq .LC76(%rip), %rcx - call printf -.LVL179: - .loc 1 313 4 view .LVU402 + call puts +.LVL174: + .loc 1 313 4 view .LVU399 leaq .LC77(%rip), %rcx + call puts +.LVL175: + .loc 1 314 4 view .LVU400 + movq %rbx, %rcx call printf -.LVL180: - .loc 1 314 4 view .LVU403 - leaq .LC78(%rip), %rcx - call printf -.LVL181: - .loc 1 315 4 view .LVU404 - .loc 1 315 28 is_stmt 0 view .LVU405 +.LVL176: + .loc 1 315 4 view .LVU401 + .loc 1 315 28 is_stmt 0 view .LVU402 call read_one_letter -.LVL182: - .loc 1 316 4 is_stmt 1 view .LVU406 - .loc 1 316 7 is_stmt 0 view .LVU407 +.LVL177: + .loc 1 316 4 is_stmt 1 view .LVU403 + .loc 1 316 7 is_stmt 0 view .LVU404 cmpb $121, %al - je .L114 - .loc 1 324 5 is_stmt 1 view .LVU408 - leaq .LC81(%rip), %rcx + je .L112 + .loc 1 324 5 is_stmt 1 view .LVU405 + leaq .LC80(%rip), %rcx call puts -.LVL183: - .loc 1 324 5 is_stmt 0 view .LVU409 - jmp .L90 -.LVL184: -.L114: - .loc 1 317 5 is_stmt 1 view .LVU410 +.LVL178: + .loc 1 324 5 is_stmt 0 view .LVU406 + jmp .L91 +.LVL179: +.L112: + .loc 1 317 5 is_stmt 1 view .LVU407 leaq gametitle(%rip), %rdx - leaq .LC79(%rip), %rcx + leaq .LC78(%rip), %rcx call printf -.LVL185: - .loc 1 318 5 view .LVU411 - movl $20, %r8d +.LVL180: + .loc 1 318 5 view .LVU408 + movl $30, %r8d leaq gametitle(%rip), %rdx leaq filename(%rip), %rcx call strncpy -.LVL186: - .loc 1 319 5 view .LVU412 +.LVL181: + .loc 1 319 5 view .LVU409 leaq filename(%rip), %rcx call strlen -.LVL187: +.LVL182: leaq filename(%rip), %rcx addq %rcx, %rax movl $1986097966, (%rax) movb $0, 4(%rax) - .loc 1 320 5 view .LVU413 - leaq .LC80(%rip), %rdx + .loc 1 320 5 view .LVU410 + leaq .LC79(%rip), %rdx call read_from_file -.LVL188: - .loc 1 321 5 view .LVU414 +.LVL183: + .loc 1 321 5 view .LVU411 leaq .LC72(%rip), %rcx call puts -.LVL189: - jmp .L90 -.LVL190: -.L113: - .loc 1 321 5 is_stmt 0 view .LVU415 +.LVL184: + jmp .L91 +.LVL185: +.L111: + .loc 1 321 5 is_stmt 0 view .LVU412 .LBE3: - .loc 1 328 4 is_stmt 1 view .LVU416 + .loc 1 328 4 is_stmt 1 view .LVU413 movl cport_nr(%rip), %ecx call RS232_CloseComport -.LVL191: - .loc 1 329 4 view .LVU417 -.L98: - .loc 1 338 1 is_stmt 0 view .LVU418 +.LVL186: + .loc 1 329 4 view .LVU414 + leaq .LC81(%rip), %rcx + call puts +.LVL187: + .loc 1 330 4 view .LVU415 + leaq .LC82(%rip), %rcx + call puts +.LVL188: + .loc 1 331 4 view .LVU416 +.L97: + .loc 1 340 1 is_stmt 0 view .LVU417 movl $0, %eax addq $4136, %rsp .cfi_def_cfa_offset 40 @@ -1847,7 +1839,7 @@ firstStart: .globl bdrate .align 4 bdrate: - .long 9600 + .long 19200 .globl cport_nr .align 4 cport_nr: @@ -1868,7 +1860,7 @@ cport_nr: .file 13 "" .section .debug_info,"dr" .Ldebug_info0: - .long 0x25a7 + .long 0x256b .word 0x4 .secrel32 .Ldebug_abbrev0 .byte 0x8 @@ -3368,7 +3360,7 @@ cport_nr: .quad .LFE5691-.LFB5691 .uleb128 0x1 .byte 0x9c - .long 0x1e56 + .long 0x1e1a .uleb128 0x27 .ascii "userInput\0" .byte 0x1 @@ -3380,13 +3372,13 @@ cport_nr: .uleb128 0x28 .quad .LBB2 .quad .LBE2-.LBB2 - .long 0x19bf + .long 0x195e .uleb128 0x29 .ascii "buffer\0" .byte 0x1 .byte 0xa0 .byte 0x12 - .long 0x1e56 + .long 0x1e1a .uleb128 0x3 .byte 0x91 .sleb128 -4144 @@ -3416,24 +3408,24 @@ cport_nr: .secrel32 .LVUS19 .uleb128 0x2a .quad .LVL77 - .long 0x2413 + .long 0x23d7 .long 0x114d .uleb128 0x2b .uleb128 0x1 .byte 0x51 .uleb128 0x9 .byte 0x3 - .quad .LC11 + .quad .LC12 .byte 0 .uleb128 0x2a .quad .LVL79 - .long 0x241f + .long 0x23e3 .long 0x116c .uleb128 0x2b .uleb128 0x1 .byte 0x51 .uleb128 0x2 - .byte 0x76 + .byte 0x74 .sleb128 0 .uleb128 0x2b .uleb128 0x1 @@ -3444,7 +3436,7 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL83 - .long 0x242b + .long 0x23ef .long 0x1185 .uleb128 0x2b .uleb128 0x1 @@ -3455,13 +3447,13 @@ cport_nr: .byte 0 .uleb128 0x2c .quad .LVL85 - .long 0x243d + .long 0x2401 .uleb128 0x2c .quad .LVL86 - .long 0x244a + .long 0x240e .uleb128 0x2a .quad .LVL87 - .long 0x245c + .long 0x2420 .long 0x11c5 .uleb128 0x2b .uleb128 0x1 @@ -3474,29 +3466,29 @@ cport_nr: .byte 0x51 .uleb128 0x9 .byte 0x3 - .quad .LC12 + .quad .LC13 .byte 0 .uleb128 0x2a .quad .LVL91 - .long 0x246e + .long 0x2432 .long 0x11e4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC13 + .quad .LC14 .byte 0 .uleb128 0x2a .quad .LVL93 - .long 0x2485 + .long 0x2449 .long 0x1209 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC14 + .quad .LC15 .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -3506,7 +3498,7 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL94 - .long 0x2497 + .long 0x245b .long 0x1233 .uleb128 0x2b .uleb128 0x1 @@ -3528,657 +3520,641 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL95 - .long 0x245c - .long 0x1257 + .long 0x2449 + .long 0x1258 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x1 - .byte 0x30 + .uleb128 0x9 + .byte 0x3 + .quad .LC69 .uleb128 0x2b .uleb128 0x1 .byte 0x51 - .uleb128 0x9 - .byte 0x3 - .quad .LC12 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2a - .quad .LVL97 - .long 0x2485 - .long 0x127c + .quad .LVL96 + .long 0x2432 + .long 0x1277 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 .quad .LC68 + .byte 0 + .uleb128 0x2a + .quad .LVL97 + .long 0x2449 + .long 0x1296 .uleb128 0x2b .uleb128 0x1 - .byte 0x51 - .uleb128 0x2 - .byte 0x73 - .sleb128 0 + .byte 0x52 + .uleb128 0x9 + .byte 0x3 + .quad .LC16 .byte 0 .uleb128 0x2a .quad .LVL98 - .long 0x246e - .long 0x129b + .long 0x246f + .long 0x12ae .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC67 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2a .quad .LVL99 - .long 0x2485 - .long 0x12ba + .long 0x2432 + .long 0x12cd .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC15 + .quad .LC41 .byte 0 .uleb128 0x2a .quad .LVL100 - .long 0x24ab - .long 0x12d2 + .long 0x2432 + .long 0x12ec .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x2 - .byte 0x73 - .sleb128 0 + .uleb128 0x9 + .byte 0x3 + .quad .LC17 .byte 0 .uleb128 0x2a .quad .LVL101 - .long 0x246e - .long 0x12f1 + .long 0x2432 + .long 0x130b .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC40 + .quad .LC18 .byte 0 .uleb128 0x2a .quad .LVL102 - .long 0x246e - .long 0x1310 + .long 0x2432 + .long 0x132a .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC16 + .quad .LC19 .byte 0 .uleb128 0x2a .quad .LVL103 - .long 0x246e - .long 0x132f + .long 0x2432 + .long 0x1349 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC17 + .quad .LC20 .byte 0 .uleb128 0x2a .quad .LVL104 - .long 0x246e - .long 0x134e + .long 0x2432 + .long 0x1368 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC18 + .quad .LC21 .byte 0 .uleb128 0x2a .quad .LVL105 - .long 0x246e - .long 0x136d + .long 0x2432 + .long 0x1387 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC19 + .quad .LC22 .byte 0 .uleb128 0x2a .quad .LVL106 - .long 0x246e - .long 0x138c + .long 0x2432 + .long 0x13a6 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC20 + .quad .LC23 .byte 0 .uleb128 0x2a .quad .LVL107 - .long 0x246e - .long 0x13ab + .long 0x2432 + .long 0x13c5 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC21 + .quad .LC17 .byte 0 .uleb128 0x2a .quad .LVL108 - .long 0x246e - .long 0x13ca + .long 0x2432 + .long 0x13e4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC22 + .quad .LC24 .byte 0 .uleb128 0x2a .quad .LVL109 - .long 0x246e - .long 0x13e9 + .long 0x2432 + .long 0x1403 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC16 + .quad .LC25 .byte 0 .uleb128 0x2a .quad .LVL110 - .long 0x246e - .long 0x1408 + .long 0x2432 + .long 0x1422 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC23 + .quad .LC26 .byte 0 .uleb128 0x2a .quad .LVL111 - .long 0x246e - .long 0x1427 + .long 0x2432 + .long 0x1441 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC24 + .quad .LC27 .byte 0 .uleb128 0x2a .quad .LVL112 - .long 0x246e - .long 0x1446 + .long 0x2432 + .long 0x1460 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC25 + .quad .LC28 .byte 0 .uleb128 0x2a .quad .LVL113 - .long 0x246e - .long 0x1465 + .long 0x2432 + .long 0x147f .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC26 + .quad .LC29 .byte 0 .uleb128 0x2a .quad .LVL114 - .long 0x246e - .long 0x1484 + .long 0x2432 + .long 0x149e .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC27 + .quad .LC30 .byte 0 .uleb128 0x2a .quad .LVL115 - .long 0x246e - .long 0x14a3 + .long 0x2432 + .long 0x14bd .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC28 + .quad .LC31 .byte 0 .uleb128 0x2a .quad .LVL116 - .long 0x246e - .long 0x14c2 + .long 0x2432 + .long 0x14dc .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC29 + .quad .LC32 .byte 0 .uleb128 0x2a .quad .LVL117 - .long 0x246e - .long 0x14e1 + .long 0x2432 + .long 0x14fb .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC30 + .quad .LC33 .byte 0 .uleb128 0x2a .quad .LVL118 - .long 0x246e - .long 0x1500 + .long 0x2432 + .long 0x151a .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC31 + .quad .LC34 .byte 0 .uleb128 0x2a .quad .LVL119 - .long 0x246e - .long 0x151f + .long 0x2432 + .long 0x1539 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC32 + .quad .LC35 .byte 0 .uleb128 0x2a .quad .LVL120 - .long 0x246e - .long 0x153e + .long 0x2432 + .long 0x1558 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC33 + .quad .LC36 .byte 0 .uleb128 0x2a .quad .LVL121 - .long 0x246e - .long 0x155d + .long 0x2432 + .long 0x1577 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC34 + .quad .LC37 .byte 0 .uleb128 0x2a .quad .LVL122 - .long 0x246e - .long 0x157c + .long 0x2432 + .long 0x1596 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC35 + .quad .LC38 .byte 0 .uleb128 0x2a .quad .LVL123 - .long 0x246e - .long 0x159b + .long 0x2432 + .long 0x15b5 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC36 + .quad .LC39 .byte 0 .uleb128 0x2a .quad .LVL124 - .long 0x246e - .long 0x15ba + .long 0x2432 + .long 0x15d4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC37 + .quad .LC40 .byte 0 .uleb128 0x2a .quad .LVL125 - .long 0x246e - .long 0x15d9 + .long 0x2432 + .long 0x15f3 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC38 + .quad .LC42 .byte 0 .uleb128 0x2a .quad .LVL126 - .long 0x246e - .long 0x15f8 + .long 0x2449 + .long 0x1612 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC39 + .quad .LC43 .byte 0 .uleb128 0x2a .quad .LVL127 - .long 0x246e - .long 0x1617 + .long 0x246f + .long 0x162a .uleb128 0x2b - .uleb128 0x1 - .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC41 + .uleb128 0x1 + .byte 0x52 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2a .quad .LVL128 - .long 0x2485 - .long 0x1636 + .long 0x2432 + .long 0x1649 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC42 + .quad .LC44 .byte 0 .uleb128 0x2a .quad .LVL129 - .long 0x24ab - .long 0x164e + .long 0x2432 + .long 0x1668 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x2 - .byte 0x73 - .sleb128 0 + .uleb128 0x9 + .byte 0x3 + .quad .LC45 .byte 0 .uleb128 0x2a .quad .LVL130 - .long 0x246e - .long 0x166d + .long 0x2432 + .long 0x1687 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC43 + .quad .LC46 .byte 0 .uleb128 0x2a .quad .LVL131 - .long 0x246e - .long 0x168c + .long 0x2432 + .long 0x16a6 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC44 + .quad .LC47 .byte 0 .uleb128 0x2a .quad .LVL132 - .long 0x246e - .long 0x16ab + .long 0x2432 + .long 0x16c5 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC45 + .quad .LC48 .byte 0 .uleb128 0x2a .quad .LVL133 - .long 0x246e - .long 0x16ca + .long 0x2432 + .long 0x16e4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC46 + .quad .LC49 .byte 0 .uleb128 0x2a .quad .LVL134 - .long 0x246e - .long 0x16e9 + .long 0x2432 + .long 0x1703 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC47 + .quad .LC50 .byte 0 .uleb128 0x2a .quad .LVL135 - .long 0x246e - .long 0x1708 + .long 0x2432 + .long 0x1722 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC48 + .quad .LC51 .byte 0 .uleb128 0x2a .quad .LVL136 - .long 0x246e - .long 0x1727 + .long 0x2432 + .long 0x1741 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC49 + .quad .LC52 .byte 0 .uleb128 0x2a .quad .LVL137 - .long 0x246e - .long 0x1746 + .long 0x2432 + .long 0x1760 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC50 + .quad .LC53 .byte 0 .uleb128 0x2a .quad .LVL138 - .long 0x246e - .long 0x1765 + .long 0x2432 + .long 0x177f .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC51 + .quad .LC54 .byte 0 .uleb128 0x2a .quad .LVL139 - .long 0x246e - .long 0x1784 + .long 0x2432 + .long 0x179e .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC52 + .quad .LC55 .byte 0 .uleb128 0x2a .quad .LVL140 - .long 0x246e - .long 0x17a3 + .long 0x2432 + .long 0x17bd .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC53 + .quad .LC56 .byte 0 .uleb128 0x2a .quad .LVL141 - .long 0x246e - .long 0x17c2 + .long 0x2432 + .long 0x17dc .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC54 + .quad .LC57 .byte 0 .uleb128 0x2a .quad .LVL142 - .long 0x246e - .long 0x17e1 + .long 0x2449 + .long 0x17fb .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC55 + .quad .LC58 .byte 0 .uleb128 0x2a .quad .LVL143 - .long 0x246e - .long 0x1800 + .long 0x246f + .long 0x1813 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC56 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2a .quad .LVL144 - .long 0x2485 - .long 0x181f + .long 0x2432 + .long 0x1832 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC57 + .quad .LC60 .byte 0 .uleb128 0x2a .quad .LVL145 - .long 0x24ab - .long 0x1837 + .long 0x2432 + .long 0x1851 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x2 - .byte 0x73 - .sleb128 0 + .uleb128 0x9 + .byte 0x3 + .quad .LC59 .byte 0 .uleb128 0x2a .quad .LVL146 - .long 0x246e - .long 0x1856 + .long 0x2432 + .long 0x1870 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC59 + .quad .LC61 .byte 0 .uleb128 0x2a .quad .LVL147 - .long 0x246e - .long 0x1875 + .long 0x2432 + .long 0x188f .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC58 + .quad .LC62 .byte 0 .uleb128 0x2a .quad .LVL148 - .long 0x246e - .long 0x1894 + .long 0x2432 + .long 0x18ae .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC60 + .quad .LC63 .byte 0 .uleb128 0x2a .quad .LVL149 - .long 0x246e - .long 0x18b3 + .long 0x2432 + .long 0x18cd .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC61 + .quad .LC64 .byte 0 .uleb128 0x2a .quad .LVL150 - .long 0x246e - .long 0x18d2 + .long 0x2432 + .long 0x18ec .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC62 + .quad .LC57 .byte 0 .uleb128 0x2a .quad .LVL151 - .long 0x246e - .long 0x18f1 + .long 0x2449 + .long 0x190b .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC63 + .quad .LC65 .byte 0 .uleb128 0x2a .quad .LVL152 - .long 0x246e - .long 0x1910 - .uleb128 0x2b - .uleb128 0x1 - .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC56 - .byte 0 - .uleb128 0x2a - .quad .LVL153 - .long 0x2485 - .long 0x192f - .uleb128 0x2b - .uleb128 0x1 - .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC64 - .byte 0 - .uleb128 0x2a - .quad .LVL154 - .long 0x24ab - .long 0x1947 + .long 0x246f + .long 0x1923 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4187,50 +4163,32 @@ cport_nr: .sleb128 0 .byte 0 .uleb128 0x2a - .quad .LVL155 - .long 0x246e - .long 0x1966 - .uleb128 0x2b - .uleb128 0x1 - .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC66 - .byte 0 - .uleb128 0x2a - .quad .LVL156 - .long 0x246e - .long 0x1985 + .quad .LVL153 + .long 0x2432 + .long 0x1942 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC65 + .quad .LC67 .byte 0 - .uleb128 0x2a - .quad .LVL157 - .long 0x246e - .long 0x19a4 + .uleb128 0x2d + .quad .LVL154 + .long 0x2432 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC69 + .quad .LC66 .byte 0 - .uleb128 0x2c - .quad .LVL158 - .long 0x243d - .uleb128 0x2c - .quad .LVL159 - .long 0x244a .byte 0 .uleb128 0x28 .quad .LBB3 .quad .LBE3-.LBB3 - .long 0x1b6f - .uleb128 0x2d + .long 0x1b07 + .uleb128 0x2e .ascii "userInputConfirm\0" .byte 0x1 .word 0x13b @@ -4239,9 +4197,9 @@ cport_nr: .secrel32 .LLST20 .secrel32 .LVUS20 .uleb128 0x2a - .quad .LVL178 - .long 0x2485 - .long 0x1a22 + .quad .LVL173 + .long 0x2449 + .long 0x19c1 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4256,9 +4214,9 @@ cport_nr: .quad gametitle .byte 0 .uleb128 0x2a - .quad .LVL179 - .long 0x2485 - .long 0x1a41 + .quad .LVL174 + .long 0x2432 + .long 0x19e0 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4267,9 +4225,9 @@ cport_nr: .quad .LC76 .byte 0 .uleb128 0x2a - .quad .LVL180 - .long 0x2485 - .long 0x1a60 + .quad .LVL175 + .long 0x2432 + .long 0x19ff .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4278,40 +4236,40 @@ cport_nr: .quad .LC77 .byte 0 .uleb128 0x2a - .quad .LVL181 - .long 0x2485 - .long 0x1a7f + .quad .LVL176 + .long 0x2449 + .long 0x1a17 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC78 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2c - .quad .LVL182 - .long 0x2244 + .quad .LVL177 + .long 0x2208 .uleb128 0x2a - .quad .LVL183 - .long 0x246e - .long 0x1aab + .quad .LVL178 + .long 0x2432 + .long 0x1a43 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC81 + .quad .LC80 .byte 0 .uleb128 0x2a - .quad .LVL185 - .long 0x2485 - .long 0x1ad7 + .quad .LVL180 + .long 0x2449 + .long 0x1a6f .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC79 + .quad .LC78 .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -4320,9 +4278,9 @@ cport_nr: .quad gametitle .byte 0 .uleb128 0x2a - .quad .LVL186 - .long 0x2497 - .long 0x1b08 + .quad .LVL181 + .long 0x245b + .long 0x1aa0 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4339,12 +4297,12 @@ cport_nr: .uleb128 0x1 .byte 0x58 .uleb128 0x1 - .byte 0x44 + .byte 0x4e .byte 0 .uleb128 0x2a - .quad .LVL187 - .long 0x24b9 - .long 0x1b27 + .quad .LVL182 + .long 0x247d + .long 0x1abf .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4353,9 +4311,9 @@ cport_nr: .quad filename .byte 0 .uleb128 0x2a - .quad .LVL188 - .long 0x1e67 - .long 0x1b53 + .quad .LVL183 + .long 0x1e2b + .long 0x1aeb .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4367,11 +4325,11 @@ cport_nr: .byte 0x51 .uleb128 0x9 .byte 0x3 - .quad .LC80 + .quad .LC79 .byte 0 - .uleb128 0x2e - .quad .LVL189 - .long 0x246e + .uleb128 0x2d + .quad .LVL184 + .long 0x2432 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4382,14 +4340,14 @@ cport_nr: .byte 0 .uleb128 0x2c .quad .LVL68 - .long 0x24d4 + .long 0x2498 .uleb128 0x2c .quad .LVL69 - .long 0x22ac + .long 0x2270 .uleb128 0x2a .quad .LVL70 - .long 0x246e - .long 0x1ba8 + .long 0x2432 + .long 0x1b40 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4399,8 +4357,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL71 - .long 0x246e - .long 0x1bc7 + .long 0x2432 + .long 0x1b5f .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4410,8 +4368,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL72 - .long 0x2485 - .long 0x1be6 + .long 0x2449 + .long 0x1b7e .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4421,11 +4379,11 @@ cport_nr: .byte 0 .uleb128 0x2c .quad .LVL73 - .long 0x24e3 + .long 0x24a7 .uleb128 0x2a .quad .LVL74 - .long 0x246e - .long 0x1c12 + .long 0x2432 + .long 0x1baa .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4435,8 +4393,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL75 - .long 0x242b - .long 0x1c2d + .long 0x23ef + .long 0x1bc5 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4445,9 +4403,9 @@ cport_nr: .long 0xf4240 .byte 0 .uleb128 0x2a - .quad .LVL161 - .long 0x2485 - .long 0x1c59 + .quad .LVL156 + .long 0x2449 + .long 0x1bf1 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4462,9 +4420,9 @@ cport_nr: .quad gametitle .byte 0 .uleb128 0x2a - .quad .LVL162 - .long 0x2497 - .long 0x1c8a + .quad .LVL157 + .long 0x245b + .long 0x1c22 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4484,9 +4442,9 @@ cport_nr: .byte 0x44 .byte 0 .uleb128 0x2a - .quad .LVL163 - .long 0x24b9 - .long 0x1ca9 + .quad .LVL158 + .long 0x247d + .long 0x1c41 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4495,9 +4453,9 @@ cport_nr: .quad filename .byte 0 .uleb128 0x2a - .quad .LVL164 - .long 0x203e - .long 0x1cdb + .quad .LVL159 + .long 0x2002 + .long 0x1c73 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4518,9 +4476,9 @@ cport_nr: .byte 0x20 .byte 0 .uleb128 0x2a - .quad .LVL165 - .long 0x246e - .long 0x1cfa + .quad .LVL160 + .long 0x2432 + .long 0x1c92 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4529,56 +4487,56 @@ cport_nr: .quad .LC72 .byte 0 .uleb128 0x2a - .quad .LVL166 - .long 0x246e - .long 0x1d19 + .quad .LVL161 + .long 0x2432 + .long 0x1cb1 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x9 .byte 0x3 - .quad .LC83 + .quad .LC84 .byte 0 .uleb128 0x2a - .quad .LVL167 - .long 0x246e - .long 0x1d38 + .quad .LVL162 + .long 0x2432 + .long 0x1cc9 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC10 + .uleb128 0x2 + .byte 0x74 + .sleb128 0 .byte 0 .uleb128 0x2a - .quad .LVL168 - .long 0x24ef - .long 0x1d50 + .quad .LVL163 + .long 0x2449 + .long 0x1ce1 .uleb128 0x2b .uleb128 0x1 .byte 0x52 .uleb128 0x2 - .byte 0x8 - .byte 0x3e + .byte 0x73 + .sleb128 0 .byte 0 .uleb128 0x2c - .quad .LVL169 - .long 0x2244 + .quad .LVL164 + .long 0x2208 .uleb128 0x2a - .quad .LVL170 - .long 0x246e - .long 0x1d7c + .quad .LVL165 + .long 0x2432 + .long 0x1d06 .uleb128 0x2b .uleb128 0x1 .byte 0x52 - .uleb128 0x9 - .byte 0x3 - .quad .LC82 + .uleb128 0x2 + .byte 0x75 + .sleb128 0 .byte 0 .uleb128 0x2a - .quad .LVL172 - .long 0x2485 - .long 0x1da8 + .quad .LVL167 + .long 0x2449 + .long 0x1d32 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4593,9 +4551,9 @@ cport_nr: .quad gametitle .byte 0 .uleb128 0x2a - .quad .LVL173 - .long 0x2497 - .long 0x1dd9 + .quad .LVL168 + .long 0x245b + .long 0x1d63 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4615,9 +4573,9 @@ cport_nr: .byte 0x44 .byte 0 .uleb128 0x2a - .quad .LVL174 - .long 0x24b9 - .long 0x1df8 + .quad .LVL169 + .long 0x247d + .long 0x1d82 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4626,9 +4584,9 @@ cport_nr: .quad filename .byte 0 .uleb128 0x2a - .quad .LVL175 - .long 0x203e - .long 0x1e29 + .quad .LVL170 + .long 0x2002 + .long 0x1db3 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4648,9 +4606,9 @@ cport_nr: .byte 0x31 .byte 0 .uleb128 0x2a - .quad .LVL176 - .long 0x246e - .long 0x1e48 + .quad .LVL171 + .long 0x2432 + .long 0x1dd2 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4659,12 +4617,33 @@ cport_nr: .quad .LC72 .byte 0 .uleb128 0x2c - .quad .LVL191 - .long 0x250c + .quad .LVL186 + .long 0x24b3 + .uleb128 0x2a + .quad .LVL187 + .long 0x2432 + .long 0x1dfe + .uleb128 0x2b + .uleb128 0x1 + .byte 0x52 + .uleb128 0x9 + .byte 0x3 + .quad .LC81 + .byte 0 + .uleb128 0x2d + .quad .LVL188 + .long 0x2432 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x52 + .uleb128 0x9 + .byte 0x3 + .quad .LC82 + .byte 0 .byte 0 .uleb128 0x7 .long 0x144 - .long 0x1e67 + .long 0x1e2b .uleb128 0x2f .long 0xbe .word 0xfff @@ -4678,7 +4657,7 @@ cport_nr: .quad .LFE5690-.LFB5690 .uleb128 0x1 .byte 0x9c - .long 0x2028 + .long 0x1fec .uleb128 0x31 .secrel32 .LASF1 .byte 0x1 @@ -4700,7 +4679,7 @@ cport_nr: .byte 0x1 .byte 0x68 .byte 0x8 - .long 0x2028 + .long 0x1fec .secrel32 .LLST13 .secrel32 .LVUS13 .uleb128 0x33 @@ -4724,14 +4703,14 @@ cport_nr: .byte 0x1 .byte 0x72 .byte 0x10 - .long 0x202e + .long 0x1ff2 .uleb128 0x3 .byte 0x91 .sleb128 -160 .uleb128 0x2a .quad .LVL48 - .long 0x2518 - .long 0x1f30 + .long 0x24bf + .long 0x1ef4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4748,8 +4727,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL50 - .long 0x2413 - .long 0x1f48 + .long 0x23d7 + .long 0x1f0c .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -4759,8 +4738,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL51 - .long 0x242b - .long 0x1f63 + .long 0x23ef + .long 0x1f27 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4770,14 +4749,14 @@ cport_nr: .byte 0 .uleb128 0x2c .quad .LVL54 - .long 0x243d + .long 0x2401 .uleb128 0x2c .quad .LVL55 - .long 0x244a + .long 0x240e .uleb128 0x2a .quad .LVL56 - .long 0x242b - .long 0x1f96 + .long 0x23ef + .long 0x1f5a .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4787,8 +4766,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL57 - .long 0x2528 - .long 0x1fbf + .long 0x24cf + .long 0x1f83 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4815,8 +4794,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL58 - .long 0x2538 - .long 0x1fdd + .long 0x24df + .long 0x1fa1 .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -4832,8 +4811,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL59 - .long 0x24ef - .long 0x1ff5 + .long 0x24eb + .long 0x1fb9 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4843,8 +4822,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL61 - .long 0x2485 - .long 0x2013 + .long 0x2449 + .long 0x1fd7 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4858,9 +4837,9 @@ cport_nr: .byte 0x75 .sleb128 0 .byte 0 - .uleb128 0x2e + .uleb128 0x2d .quad .LVL63 - .long 0x2544 + .long 0x2508 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4874,7 +4853,7 @@ cport_nr: .long 0xc68 .uleb128 0x7 .long 0x144 - .long 0x203e + .long 0x2002 .uleb128 0x8 .long 0xbe .byte 0x63 @@ -4888,7 +4867,7 @@ cport_nr: .quad .LFE5689-.LFB5689 .uleb128 0x1 .byte 0x9c - .long 0x2244 + .long 0x2208 .uleb128 0x31 .secrel32 .LASF1 .byte 0x1 @@ -4918,7 +4897,7 @@ cport_nr: .byte 0x1 .byte 0x3a .byte 0x8 - .long 0x2028 + .long 0x1fec .secrel32 .LLST6 .secrel32 .LVUS6 .uleb128 0x33 @@ -4942,7 +4921,7 @@ cport_nr: .byte 0x1 .byte 0x3e .byte 0x10 - .long 0x1e56 + .long 0x1e1a .uleb128 0x3 .byte 0x91 .sleb128 -4176 @@ -4964,8 +4943,8 @@ cport_nr: .secrel32 .LVUS10 .uleb128 0x2a .quad .LVL20 - .long 0x2518 - .long 0x2146 + .long 0x24bf + .long 0x210a .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -4982,8 +4961,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL22 - .long 0x2413 - .long 0x215e + .long 0x23d7 + .long 0x2122 .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -4993,8 +4972,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL24 - .long 0x2556 - .long 0x218d + .long 0x251a + .long 0x2151 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5027,8 +5006,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL25 - .long 0x24ef - .long 0x21a5 + .long 0x24eb + .long 0x2169 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5038,14 +5017,14 @@ cport_nr: .byte 0 .uleb128 0x2c .quad .LVL27 - .long 0x243d + .long 0x2401 .uleb128 0x2c .quad .LVL28 - .long 0x244a + .long 0x240e .uleb128 0x2a .quad .LVL30 - .long 0x241f - .long 0x21de + .long 0x23e3 + .long 0x21a2 .uleb128 0x2b .uleb128 0x1 .byte 0x51 @@ -5061,8 +5040,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL33 - .long 0x242b - .long 0x21f7 + .long 0x23ef + .long 0x21bb .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5072,8 +5051,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL34 - .long 0x2485 - .long 0x2217 + .long 0x2449 + .long 0x21db .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5091,8 +5070,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL36 - .long 0x2485 - .long 0x222f + .long 0x2449 + .long 0x21f3 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5100,9 +5079,9 @@ cport_nr: .byte 0x7f .sleb128 0 .byte 0 - .uleb128 0x2e + .uleb128 0x2d .quad .LVL39 - .long 0x2544 + .long 0x2508 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5121,7 +5100,7 @@ cport_nr: .quad .LFE5688-.LFB5688 .uleb128 0x1 .byte 0x9c - .long 0x22ac + .long 0x2270 .uleb128 0x27 .ascii "c\0" .byte 0x1 @@ -5132,13 +5111,13 @@ cport_nr: .secrel32 .LVUS2 .uleb128 0x2c .quad .LVL13 - .long 0x2568 + .long 0x252c .uleb128 0x2c .quad .LVL15 - .long 0x2568 + .long 0x252c .uleb128 0x2c .quad .LVL16 - .long 0x2568 + .long 0x252c .byte 0 .uleb128 0x30 .ascii "read_config\0" @@ -5149,13 +5128,13 @@ cport_nr: .quad .LFE5687-.LFB5687 .uleb128 0x1 .byte 0x9c - .long 0x2413 + .long 0x23d7 .uleb128 0x27 .ascii "configfile\0" .byte 0x1 .byte 0x1f .byte 0x8 - .long 0x2028 + .long 0x1fec .secrel32 .LLST0 .secrel32 .LVUS0 .uleb128 0x27 @@ -5168,8 +5147,8 @@ cport_nr: .secrel32 .LVUS1 .uleb128 0x2a .quad .LVL0 - .long 0x2518 - .long 0x2330 + .long 0x24bf + .long 0x22f4 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5185,8 +5164,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL2 - .long 0x257c - .long 0x2347 + .long 0x2540 + .long 0x230b .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5195,8 +5174,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL4 - .long 0x2528 - .long 0x236f + .long 0x24cf + .long 0x2333 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5222,8 +5201,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL5 - .long 0x24ab - .long 0x2387 + .long 0x246f + .long 0x234b .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5233,8 +5212,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL6 - .long 0x2528 - .long 0x23af + .long 0x24cf + .long 0x2373 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5260,8 +5239,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL7 - .long 0x258e - .long 0x23c7 + .long 0x2552 + .long 0x238b .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5271,8 +5250,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL8 - .long 0x2544 - .long 0x23df + .long 0x2508 + .long 0x23a3 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5282,8 +5261,8 @@ cport_nr: .byte 0 .uleb128 0x2a .quad .LVL9 - .long 0x259c - .long 0x23f7 + .long 0x2560 + .long 0x23bb .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5291,9 +5270,9 @@ cport_nr: .byte 0x74 .sleb128 0 .byte 0 - .uleb128 0x2e + .uleb128 0x2d .quad .LVL12 - .long 0x246e + .long 0x2432 .uleb128 0x2b .uleb128 0x1 .byte 0x52 @@ -5375,11 +5354,6 @@ cport_nr: .byte 0x9 .byte 0x3f .byte 0x5 - .uleb128 0x38 - .ascii "putchar\0" - .ascii "__builtin_putchar\0" - .byte 0xd - .byte 0 .uleb128 0x35 .secrel32 .LASF8 .secrel32 .LASF8 @@ -5404,6 +5378,11 @@ cport_nr: .byte 0x9 .byte 0x42 .byte 0x5 + .uleb128 0x38 + .ascii "putchar\0" + .ascii "__builtin_putchar\0" + .byte 0xd + .byte 0 .uleb128 0x36 .ascii "fclose\0" .ascii "fclose\0" @@ -6066,6 +6045,15 @@ cport_nr: .byte 0 .byte 0 .uleb128 0x2d + .uleb128 0x4109 + .byte 0x1 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x31 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x2e .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -6084,15 +6072,6 @@ cport_nr: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0x2e - .uleb128 0x4109 - .byte 0x1 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x31 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0x2f .uleb128 0x21 .byte 0 @@ -6307,19 +6286,19 @@ cport_nr: .Ldebug_loc0: .LVUS16: .uleb128 .LVU154 - .uleb128 .LVU155 - .uleb128 .LVU155 - .uleb128 .LVU158 - .uleb128 .LVU371 - .uleb128 .LVU372 - .uleb128 .LVU383 - .uleb128 .LVU394 - .uleb128 .LVU395 - .uleb128 .LVU396 - .uleb128 .LVU400 - .uleb128 .LVU401 - .uleb128 .LVU415 - .uleb128 .LVU417 + .uleb128 .LVU157 + .uleb128 .LVU157 + .uleb128 .LVU160 + .uleb128 .LVU367 + .uleb128 .LVU369 + .uleb128 .LVU380 + .uleb128 .LVU391 + .uleb128 .LVU392 + .uleb128 .LVU393 + .uleb128 .LVU397 + .uleb128 .LVU398 + .uleb128 .LVU412 + .uleb128 .LVU414 .LLST16: .quad .LVL75-.Ltext0 .quad .LVL76-.Ltext0 @@ -6331,35 +6310,35 @@ cport_nr: .quad .LVL77-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL160-.Ltext0 - .quad .LVL161-1-.Ltext0 + .quad .LVL155-.Ltext0 + .quad .LVL156-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL169-.Ltext0 - .quad .LVL170-1-.Ltext0 + .quad .LVL164-.Ltext0 + .quad .LVL165-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL171-.Ltext0 - .quad .LVL172-1-.Ltext0 + .quad .LVL166-.Ltext0 + .quad .LVL167-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL177-.Ltext0 - .quad .LVL178-1-.Ltext0 + .quad .LVL172-.Ltext0 + .quad .LVL173-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL190-.Ltext0 - .quad .LVL191-1-.Ltext0 + .quad .LVL185-.Ltext0 + .quad .LVL186-1-.Ltext0 .word 0x1 .byte 0x50 .quad 0 .quad 0 .LVUS17: - .uleb128 .LVU160 - .uleb128 .LVU163 - .uleb128 .LVU166 - .uleb128 .LVU173 + .uleb128 .LVU162 + .uleb128 .LVU165 + .uleb128 .LVU168 .uleb128 .LVU175 - .uleb128 .LVU180 + .uleb128 .LVU177 + .uleb128 .LVU182 .LLST17: .quad .LVL77-.Ltext0 .quad .LVL78-.Ltext0 @@ -6377,18 +6356,18 @@ cport_nr: .quad 0 .quad 0 .LVUS18: - .uleb128 .LVU161 - .uleb128 .LVU163 .uleb128 .LVU163 - .uleb128 .LVU169 - .uleb128 .LVU169 + .uleb128 .LVU165 + .uleb128 .LVU165 .uleb128 .LVU171 .uleb128 .LVU171 - .uleb128 .LVU172 - .uleb128 .LVU172 - .uleb128 .LVU175 - .uleb128 .LVU175 - .uleb128 .LVU182 + .uleb128 .LVU173 + .uleb128 .LVU173 + .uleb128 .LVU174 + .uleb128 .LVU174 + .uleb128 .LVU177 + .uleb128 .LVU177 + .uleb128 .LVU184 .LLST18: .quad .LVL77-.Ltext0 .quad .LVL78-.Ltext0 @@ -6443,22 +6422,18 @@ cport_nr: .quad 0 .quad 0 .LVUS19: - .uleb128 .LVU184 - .uleb128 .LVU186 .uleb128 .LVU186 - .uleb128 .LVU187 - .uleb128 .LVU187 .uleb128 .LVU188 .uleb128 .LVU188 .uleb128 .LVU189 .uleb128 .LVU189 .uleb128 .LVU190 .uleb128 .LVU190 - .uleb128 .LVU194 - .uleb128 .LVU194 - .uleb128 .LVU195 - .uleb128 .LVU195 - .uleb128 .LVU371 + .uleb128 .LVU191 + .uleb128 .LVU191 + .uleb128 .LVU192 + .uleb128 .LVU192 + .uleb128 .LVU367 .LLST19: .quad .LVL88-.Ltext0 .quad .LVL89-.Ltext0 @@ -6483,31 +6458,23 @@ cport_nr: .quad .LC5 .byte 0x9f .quad .LVL92-.Ltext0 - .quad .LVL96-.Ltext0 - .word 0x1 - .byte 0x53 - .quad .LVL96-.Ltext0 - .quad .LVL97-1-.Ltext0 - .word 0x1 - .byte 0x50 - .quad .LVL97-1-.Ltext0 - .quad .LVL160-.Ltext0 + .quad .LVL155-.Ltext0 .word 0x1 .byte 0x53 .quad 0 .quad 0 .LVUS20: + .uleb128 .LVU403 .uleb128 .LVU406 - .uleb128 .LVU409 - .uleb128 .LVU410 - .uleb128 .LVU411 + .uleb128 .LVU407 + .uleb128 .LVU408 .LLST20: - .quad .LVL182-.Ltext0 - .quad .LVL183-1-.Ltext0 + .quad .LVL177-.Ltext0 + .quad .LVL178-1-.Ltext0 .word 0x1 .byte 0x50 - .quad .LVL184-.Ltext0 - .quad .LVL185-1-.Ltext0 + .quad .LVL179-.Ltext0 + .quad .LVL180-1-.Ltext0 .word 0x1 .byte 0x50 .quad 0 diff --git a/code-pc/c/config.ini b/code-pc/c/config.ini index a6abd28..4e6adbf 100644 --- a/code-pc/c/config.ini +++ b/code-pc/c/config.ini @@ -1,5 +1,5 @@ 2 -9600 +19200 *** Change the first number above to your COM port, e.g. COM2 is the number 1 as shown above *** 0 = COM1 1 = COM2 @@ -20,6 +20,7 @@ *** Change the second number above to your baud rate, supported options below *** 9600 +19200 57600 115200 230400 diff --git a/code-pc/c/gb-dumper-start.bat b/code-pc/c/gb-dumper-start.bat new file mode 100644 index 0000000..d7dfb4a --- /dev/null +++ b/code-pc/c/gb-dumper-start.bat @@ -0,0 +1,5 @@ +:: start C gb-dumper standalone program +cd C:\github\GB-Dumper\code-pc\c\ +echo start C gb-dumper standalone program +call GBCartRead_v1.8_Rev1.3_C_Interface.exe +PAUSE diff --git a/code-pc/c/gmon.out b/code-pc/c/gmon.out index 091288e5392c077a71a9c4027b600b369e1b1c29..5e87125306719e8a94f25fbacb88cb95ee22c3dd 100644 GIT binary patch delta 47 pcmeCs|Dh)sAmG5j$iTob!45)uY!oyXpBy2sAdo5z5dq19007yK2I~L- delta 50 scmeyN*P$;MAmG5j$iTp`!45)4Y!oyXpJ*U3*+X1Gpj8?o2vPt700Y?v`~Uy| diff --git a/code-pc/py/GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py b/code-pc/py/GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py index ea6db6e..73c61d9 100644 --- a/code-pc/py/GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py +++ b/code-pc/py/GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py @@ -1,8 +1,8 @@ # GBCartRead - Arduino Interface Version: 1.8 # orig. Author: Alex from insideGadgets (http://www.insidegadgets.com) # Created: 18/03/2011, Last Modified: 21/03/2016 -# GB-Dumperv 1.8 Rev1.3.1 by wodowiesel -# Optimized: 08/08/2024 +# GB-Dumperv 1.8 Rev1.3.2 by wodowiesel +# Optimized: 21/10/2024 import os import sys @@ -12,37 +12,45 @@ import atexit import signal -sys.stdout.write('\nGB-Dumperv1.8 Rev1.3.1 by wodowiesel\n') -sys.stdout.write('###################################\n') +#sys.stdout.write('\nGB-Dumperv1.8 Rev1.3.2 by wodowiesel\n') +#sys.stdout.write('###################################\n') +print('\nGB-Dumper v1.8 Rev1.3.2 by wodowiesel\n') +print('###################################\n') sys.stdout.flush() # Change COM to the port the Arduino is on. # You can lower the baud rate of 400kBit if you have issues connecting to the Arduino or the ROM has checksum errors port = 'COM3' -baudrate = 9600 #57600 -print("Serial connection on: "+port+" with baud ",baudrate) - -ser = serial.Serial(port, baudrate, timeout=1) # /dev/ttyACM0 (old) or ttyS0 (newer via usb) for linux-based systems - +baudrate = 19200 #9600 #57600 +print('Serial connection on: '+port+' with baudrate', baudrate) +#16 lines = 1Kb and every 1Kb a # is written in before output time.sleep(1) - waitInput = 1 userInput = '0' data = bytes(b'') +try: + ser = serial.Serial(port, baudrate, timeout=1) # /dev/ttyACM0 (old) or ttyS0 (newer via usb) for linux-based systems +except: + print('\nSerial error') + exit() + while (waitInput == 1): - sys.stdout.write('\nSelect an option below\n0. Read Header\n1. Dump ROM\n2. Save RAM\n3. Write RAM\n4. Exit\n') - sys.stdout.write('>') + #sys.stdout.write('\nSelect an option below\n0. Read Header\n1. Dump ROM\n2. Save RAM\n3. Write RAM\n4. Exit\n') + print('\nSelect an option below\n0. Read Header\n1. Dump ROM\n2. Save RAM\n3. Write RAM\n4. Exit\n') + #sys.stdout.write('>') + print('> ') sys.stdout.flush() userInput = input() if (userInput == '0'): ser.write('HEADER'.encode()) - #ser.write(b'0') - + #ser.write(b'0') #not sure if needed? probably not + gameTitle = ascii(ser.readline()) gameTitle = gameTitle[2:(len(gameTitle)-5)] - sys.stdout.write('\nGame title: ') + #sys.stdout.write('\ngametitle: ') + print('\nGametitle: ') print (gameTitle) if (gameTitle != None): print (gameTitle) @@ -51,9 +59,10 @@ gameTitle = 'unknown' cartridgeType = ascii(ser.readline()) - cartridgeType = cartridgeType[2:(len(cartridgeType)-5)] - print ('Cartridge type: '+cartridgeType+'\n') - sys.stdout.write('MBC type: ') + cartridgeType = int(cartridgeType[2:(len(cartridgeType)-5)]) + print ('\nCartridge type: '+cartridgeType+'\n') + #sys.stdout.write('MBC type: ') + print('MBC type: ') if (cartridgeType == 0): print ('ROM ONLY\n') elif (cartridgeType == 1): @@ -114,7 +123,8 @@ romSize = ascii(ser.readline()) romSize = romSize[2:(len(romSize)-5)] #int() print ('ROM type: '+romSize+'\n') - sys.stdout.write('ROM size: ') + #sys.stdout.write('ROM size: ') + print('ROM size: ') if (romSize == 0): print ('32 KByte (no ROM banking)\n') elif (romSize == 1): @@ -147,11 +157,12 @@ ramSize = ascii(ser.readline()) ramSize = ramSize[2:(len(ramSize)-5)] print ('RAM type: '+ramSize+'\n') - sys.stdout.write('RAM size: ') + #sys.stdout.write('RAM size: ') + print('RAM size: ') if (ramSize == 0 and cartridgeType == 6): print ('512 bytes (nibbles)\n') elif (ramSize == 0): - print ('None 0\n') + print ('0 None\n') elif (ramSize == 1): print ('2 KBytes\n') elif (ramSize == 2): @@ -167,19 +178,20 @@ print('Logo Check: ') logoCheck = ascii(ser.readline()) logoCheck = logoCheck[2:(len(logoCheck)-5)] - print (logoCheck) + #print (logoCheck) if (logoCheck == 1): - print ('OK\n') + print ('1 OK\n') elif (logoCheck == 0): - print ('Failed\n') + print ('0 Failed\n') else: print('not found or unknown\n') elif (userInput == '1'): - sys.stdout.write('\nDumping ROM to ' + gameTitle + '.gb') + #sys.stdout.write('\nDumping ROM to ' + gameTitle + '.gb') + print('\nDumping ROM (game) to ' + gameTitle + '.gb\n') readBytes = 0 inRead = 1 - Kbytesread = 0; + Kbytesread = 0 ser.write('READROM'.encode()) f = open(gameTitle+'.gb', 'wb') while 1: @@ -191,20 +203,24 @@ readBytes += 64 f.write(line) if readBytes % 1024 == 0 and readBytes != 0: - sys.stdout.write('#') + #sys.stdout.write('#') + print('#') sys.stdout.flush() if readBytes % 32768 == 0 and readBytes != 0: Kbytesread = Kbytesread + 1 Kbytesprint = Kbytesread * 32 - sys.stdout.write('%sK' % Kbytesprint) + #sys.stdout.write('%sK' % Kbytesprint) + print('%sK' % Kbytesprint) sys.stdout.flush() #maybe put flush back here? f.close() - sys.stdout.write('\nFinished\n') + #sys.stdout.write('\nFinished\n') + print('\nFinished\n') sys.stdout.flush() elif (userInput == '2'): - sys.stdout.write('\nDumping RAM to ' + gameTitle + '.sav') + #sys.stdout.write('\nDumping RAM to ' + gameTitle + '.sav\n') + print('\nDumping RAM (save) to ' + gameTitle + '.sav\n') readBytes = 0 inRead = 1 Kbytesread = 0 @@ -219,24 +235,32 @@ readBytes += 64 f.write(line) if readBytes % 256 == 0 and readBytes != 0: - sys.stdout.write('#') + #sys.stdout.write('#') + print('#') sys.stdout.flush() if readBytes % 1024 == 0 and readBytes != 0: Kbytesread = Kbytesread + 1 - sys.stdout.write('%sK' % Kbytesread) + #sys.stdout.write('%sK' % Kbytesread) + print('%sK' % Kbytesread) sys.stdout.flush() f.close() - sys.stdout.write('\nFinished\n') + #sys.stdout.write('\nFinished\n') + print('\nFinished\n') sys.stdout.flush() elif (userInput == '3'): - sys.stdout.write('\nGoing to write to RAM from ' + gameTitle + '.sav') - sys.stdout.write('\n*** This will erase the save game from your Gameboy Cartridge ***\n') - sys.stdout.write('\nPress y to continue or any other key to abort.\n') + #sys.stdout.write('\nGoing to write to RAM from ' + gameTitle + '.sav\n') + #sys.stdout.write('*** This will erase the save game from your Gameboy Cartridge ***\n') + #sys.stdout.write('Press y to continue or any other key to abort\n') + + print('\nGoing to write to RAM (save) from ' + gameTitle + '.sav\n') + print('*** This will erase the save game from your Gameboy Cartridge ***\n') + print('Press y to continue or any other key to abort\n') userInput2 = input() - if (userInput2 == "y"): - sys.stdout.write('\nWriting to RAM from ' + gameTitle + '.sav') + if (userInput2 == 'y'): + #sys.stdout.write('\nWriting to RAM from ' + gameTitle + '.sav') + print('\nWriting to RAM from ' + gameTitle + '.sav\n') fileExists = 1 doExit = 0 printHash = 0 @@ -244,18 +268,21 @@ try: f = open(gameTitle+'.sav', 'rb') except IOError: - sys.stdout.write('\nNo save file found, aborted\n') + #sys.stdout.write('\nNo save file found, aborted\n') + print('\nNo save file found, aborted\n') fileExists = 0 if (fileExists == 1): ser.write('WRITERAM'.encode()) time.sleep(1); # Wait for Arduino to setup while 1: if printHash % 4 == 0 and printHash != 0: # 256 / 64 = 4 - sys.stdout.write('#') + #sys.stdout.write('#') + print('#') sys.stdout.flush() if printHash % 16 == 0 and printHash != 0: Kbyteswrite = Kbyteswrite + 1 - sys.stdout.write('%sK' % Kbyteswrite) + #sys.stdout.write('%sK' % Kbyteswrite) + print('%sK' % Kbyteswrite) sys.stdout.flush() printHash += 1 @@ -265,22 +292,29 @@ ser.write(line1) time.sleep (0.005); # Wait 5ms for Arduino to process the 64 bytes - sys.stdout.write('\nFinished\n') - sys.stdout.flush() f.close() + #sys.stdout.write('\nFinished\n') + print('\nFinished\n') + sys.stdout.flush() + else: - sys.stdout.write('\nAborted! binary decode....\n') + #sys.stdout.write('\nAborted! binary decode....\n') + print('\nAborted! binary decode....\n') data += byte dc = data.decode() print(dc) - sys.stdout.flush() elif (userInput == '4'): waitInput = 0 else: - sys.stdout.write('\nOption not recognised, please try again\n') + print('\nOption not recognised, please try again\n') + #ys.stdout.write('\nOption not recognised, please try again\n') + +print('\nSerial closed \n') ser.close() +print('\nExiting.... \n') +exit() #EOF diff --git a/code-pc/py/py-reader.bat b/code-pc/py/py-reader.bat index 0ca0721..f337a8b 100644 --- a/code-pc/py/py-reader.bat +++ b/code-pc/py/py-reader.bat @@ -1,3 +1,4 @@ cd C:\github\GB-Dumper\code-pc\py\ +echo Starting Py Interface... call python GB-Dumper_v1.8_Rev1.3.1_Py_Interface.py PAUSE diff --git a/code-pc/validator/validator.bat b/code-pc/validator/validator.bat index bd0a136..becfeb1 100644 --- a/code-pc/validator/validator.bat +++ b/code-pc/validator/validator.bat @@ -1,11 +1,12 @@ :: start validator in cmd terminal @echo off cd C:\github\GB-Dumper\code-pc\validator\ -set /p gameTitle="Input game title (no spaces) with extention [.gb/.gbc]: " +echo ***ROM (game) VALIDATOR*** +set /p gameTitle="Input game title (no spaces) with extention [.gb]:" call xgbfix.exe -v -p -d %gameTitle% ::motorgbfix v1.0.0 (part of ASMotor 0.1.0) ::https://github.com/asmotor/asmotor/ -::Usage: xgbfix [flags] gametitle[.gb] () +::Usage: xgbfix.exe [flags] gametitle[.gb] ::Options: Flags :: -h This text :: -d Debug: Don't change image