It took around 50 minutes to produce that bottom screen screenshot. In the OP, there are two screenshots that were captured with Luma. Luma takes both the top and bottom screen screenshots when you take a screenshot. It took OP 50 minutes to plug their 3ds SD card into their computer and copy an existing screenshot.
inb4 I deleted all of my screenshots after uploading them:
Then why is the screenshot you uploaded called bot_004.png if you're always deleting your screenshots?
Why don't you just post a video where you don't suspiciously hide the bottom screen?
Also, it's a bit weird, why does the polygon count and ROM size have a comma, but not the VI refresh rate doesn't?
All the code you posted appears to be just directly stolen from CTR64. You even forgot the Beerware license. Tsk, tsk.
How did you combine the official Nintendo SDK with the homebrew SDK?
You should also post the Z64Open method. Remember, it can't just be using fopen. There has to be some special code because the rom is embedded into the program.
1. I have other things in life to get on with, fuckwit. My life doesn't revolve around inserting SD cards into my computer.
2. I'm not always deleting my screenshots, where the fuck did you get that idea from?
3. I wasn't suspiciously hiding the bottom screen. Four times it gets shown.
4. The VI refresh rate is a defined/set amount, it's not dynamically changing, therefore it was human error. In other words, I fucked it up.
5. The code has been heavily modified. Read it again.
6. I didn't, each .cpp file uses the homebrew SDK, I used a little extract of GUI code from the official SDK within the full code.
7:
Code:
inline u32
SwapME32(u32 Data)
{
u32 Value = 0;
Value |= ((Data & 0xFF) << 8);
Value |= ((Data & 0xFF00) >> 8);
Value |= ((Data & 0xFF0000) << 8);
Value |= ((Data & 0xFF000000) >> 8);
return Value;
}
void
Z64GetHeader(z64 *Z64, z64_hdr *Hdr)
{
Z64Seek(Z64, 0);
u32 *StaleData = (u32 *)Hdr;
fread(StaleData, sizeof(z64_hdr), 1, Z64->FileStream);
if (Z64->Flags & Z64_FLAG_MIDDLE_ENDIAN)
{
for (u32 i = 0; i < (sizeof(z64_hdr) / 4); ++i)
{
StaleData[i] = SwapME32(StaleData[i]);
}
}
Hdr->ClockRate = __builtin_bswap32(Hdr->ClockRate);
Hdr->PC = __builtin_bswap32(Hdr->PC);
Hdr->Release = __builtin_bswap32(Hdr->Release);
Hdr->CRC1 = __builtin_bswap32(Hdr->CRC1);
Hdr->CRC2 = __builtin_bswap32(Hdr->CRC2);
Hdr->ManufacturerID = __builtin_bswap32(Hdr->ManufacturerID);
Hdr->CartridgeID = __builtin_bswap16(Hdr->CartridgeID);
Hdr->Country = __builtin_bswap16(Hdr->Country);
for (int i = 0; i < 1008; ++i)
{
Hdr->BootCode[i] = __builtin_bswap32(Hdr->BootCode[i]);
}
}
void
Z64Seek(z64 *Z64, unsigned int offset)
{
fseek(Z64->FileStream, offset, SEEK_SET);
}
int
Z64Open(z64 *Z64, int Flags, const char *FileName)
{
Z64->FileStream = fopen(FileName, "rb");
Z64->Flags = Flags;
return Z64->FileStream ? 1 : 0;
}
void
Z64Read(z64 *Z64, void *buffer, unsigned int bytes)
{
fread(buffer, 1, bytes, Z64->FileStream);
u32 *StaleData = (u32 *)buffer;
if (Z64->Flags & Z64_FLAG_MIDDLE_ENDIAN)
{
for (u32 i = 0; i < (bytes / 4); ++i)
{
StaleData[i] = SwapME32(StaleData[i]);
}
}
}
void
Z64Close(z64 *Z64)
{
fclose(Z64->FileStream);
}
unsigned int
Z64GetCartSize(z64 *Z64)
{
long int CurPos = ftell(Z64->FileStream);
fseek(Z64->FileStream, 0, SEEK_END);
long int fsize = ftell(Z64->FileStream);
fseek(Z64->FileStream, CurPos, SEEK_SET);
return fsize;
}
const char *
Z64GetCountryString(u16 Country)
{
switch (Country)
{
case COUNTRY_GERMANY:
return "Germany";
case COUNTRY_USA:
return "USA";
case COUNTRY_JAPAN:
return "Japan";
case COUNTRY_EUROPE:
return "Europe";
case COUNTRY_AUSTRALIA:
return "Australia";
}
return "Unknown";
}
const char *
Z64GetManufacturerString(u16 ManufacturerID)
{
switch (ManufacturerID) {
case MANUFACTURER_NINTENDO:
return "Nintendo";
}
return "Unknown";
}