From 1ead0e761b0d8a5317a4b8b32c104deb4d53ba3a Mon Sep 17 00:00:00 2001 From: EqUiNoX Date: Sun, 12 Apr 2026 14:20:55 -0600 Subject: [PATCH 1/3] less code --- TakeMeToPROM/main.cpp | 49 +++++++++++++------------------------------ 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/TakeMeToPROM/main.cpp b/TakeMeToPROM/main.cpp index 54d178e..59afd34 100644 --- a/TakeMeToPROM/main.cpp +++ b/TakeMeToPROM/main.cpp @@ -1,4 +1,5 @@ #include +#include extern "C" { extern VOID WINAPI HalReturnToFirmware(DWORD); @@ -6,59 +7,39 @@ extern "C" { XBOXAPI LONG WINAPI HalReadSMBusValue(UCHAR, UCHAR, UCHAR, ULONG*); } -unsigned char inputByte(unsigned short port) -{ - unsigned char value; - __asm { - mov dx, port - in al, dx - mov value, al - } - return value; -} - -void outputByte(unsigned short port, unsigned char value) -{ - __asm { - mov dx, port - mov al, value - out dx, al - } -} - void __cdecl main() { ULONG scratch; HalReadSMBusValue(0x20, 0x1b, FALSE, &scratch); HalWriteSMBusValue(0x20, 0x1b, FALSE, (UCHAR)(scratch & ~0x04)); - if (inputByte(0xf500) == 0xE1) // Xecuter + if (_inp(0xf500) == 0xE1) // Xecuter { - outputByte(0xf502, 0x80); + _outp(0xf502, 0x80); } - else if (inputByte(0xdead) == 0xaf) // Modxo + else if (_inp(0xdead) == 0xaf) // Modxo { - outputByte(0xdeaa, 0x01); + _outp(0xdeaa, 0x01); } - else if (inputByte(0xf701) == 0x11 || inputByte(0xf701) == 0x15) // Aladdin 1mb + else if (_inp(0xf701) == 0x11 || _inp(0xf701) == 0x15) // Aladdin 1mb { - outputByte(0xf70f, 0x87); + _outp(0xf70f, 0x87); } - else if (inputByte(0xf701) == 0x69) // Aladdin 2mb + else if (_inp(0xf701) == 0x69) // Aladdin 2mb { - outputByte(0xf70f, 0x14); + _outp(0xf70f, 0x14); } - else if (inputByte(0xf701) != 0xff) // Assume Smartxx + else if (_inp(0xf701) != 0xff) // Assume Smartxx { - outputByte(0xF703, 0x00); + _outp(0xF703, 0x00); } - else if (inputByte(0x1912) != 0xff) // Xchanger + else if (_inp(0x1912) != 0xff) // Xchanger { - outputByte(0x1912, 0x00); + _outp(0x1912, 0x00); } - else if (inputByte(0xee) == 0x55) // Xenium + else if (_inp(0xee) == 0x55) // Xenium { - outputByte(0x00ef, 1); + _outp(0x00ef, 1); } HalReturnToFirmware(0x01); From 991d39389bfcde4e2c03e29a0509cb9ff1ddc056 Mon Sep 17 00:00:00 2001 From: EqUiNoX Date: Sun, 12 Apr 2026 15:08:47 -0600 Subject: [PATCH 2/3] Update main.cpp --- TakeMeToPROM/main.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/TakeMeToPROM/main.cpp b/TakeMeToPROM/main.cpp index 59afd34..043f889 100644 --- a/TakeMeToPROM/main.cpp +++ b/TakeMeToPROM/main.cpp @@ -13,25 +13,30 @@ void __cdecl main() HalReadSMBusValue(0x20, 0x1b, FALSE, &scratch); HalWriteSMBusValue(0x20, 0x1b, FALSE, (UCHAR)(scratch & ~0x04)); - if (_inp(0xf500) == 0xE1) // Xecuter + unsigned char aladdinOrSmartXX = _inp(0xf701); + bool isAladdin1mb = (aladdinOrSmartXX & 0xf0) == 0x10; + bool isAladdin2mb = aladdinOrSmartXX == 0x69; + bool isSmartXX = (isAladdin1mb | isAladdin2mb) == false && (aladdinOrSmartXX & 0x0f) != 0x0f; + + if (isAladdin1mb) // Aladdin 1mb { - _outp(0xf502, 0x80); + _outp(0xf70f, 0x87); } - else if (_inp(0xdead) == 0xaf) // Modxo + else if (isAladdin2mb) // Aladdin 2mb { - _outp(0xdeaa, 0x01); + _outp(0xf70f, 0x14); } - else if (_inp(0xf701) == 0x11 || _inp(0xf701) == 0x15) // Aladdin 1mb + else if (isSmartXX) // Smartxx { - _outp(0xf70f, 0x87); + _outp(0xF703, 0x00); } - else if (_inp(0xf701) == 0x69) // Aladdin 2mb + else if (_inp(0xf500) == 0xE1) // Xecuter { - _outp(0xf70f, 0x14); + _outp(0xf502, 0x80); } - else if (_inp(0xf701) != 0xff) // Assume Smartxx + else if (_inp(0xdead) == 0xaf) // Modxo { - _outp(0xF703, 0x00); + _outp(0xdeaa, 0x01); } else if (_inp(0x1912) != 0xff) // Xchanger { From 1085603f6330fe5fccaef7302ab57e22745d4e59 Mon Sep 17 00:00:00 2001 From: EqUiNoX Date: Sun, 12 Apr 2026 15:11:29 -0600 Subject: [PATCH 3/3] Update main.cpp --- TakeMeToPROM/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TakeMeToPROM/main.cpp b/TakeMeToPROM/main.cpp index 043f889..9bd0a5a 100644 --- a/TakeMeToPROM/main.cpp +++ b/TakeMeToPROM/main.cpp @@ -16,7 +16,7 @@ void __cdecl main() unsigned char aladdinOrSmartXX = _inp(0xf701); bool isAladdin1mb = (aladdinOrSmartXX & 0xf0) == 0x10; bool isAladdin2mb = aladdinOrSmartXX == 0x69; - bool isSmartXX = (isAladdin1mb | isAladdin2mb) == false && (aladdinOrSmartXX & 0x0f) != 0x0f; + bool isSmartXX = (isAladdin1mb | isAladdin2mb) == false && aladdinOrSmartXX != 0xff; if (isAladdin1mb) // Aladdin 1mb {