14/11 - GATEWAY ULTRA v3.5.1 PUBLIC BETA(edit)

(edited to add “cheat memory addresses”)

Today we are back with a quick firmware update!

We would like to thank our users for the prompt feedback of our previous firmware update!
You are always helping us improve and think of new features that we never could have imagined.

Summary:
* Fixed loading issues for CIA based games, classic mode
* Allow bigger ExFAT cluster sizes again
* Teaser for the surprise feature!

Our previous firmware accidentally always enabled our cheat engine, even if you did not enable it.
This caused all kinds of weird issues, but we hope those are all resolved now.

NOTE: We are working on supporting cheats for CIA based games, and it is coming soon.

We also rewrote our filesystem driver from scratch in order to support our surprise feature, and in doing so we
have introduced some minor inconveniences such as added checks for ExFAT cluster sizes.
These are now removed as some users had cluster sizes as big as 32MB.

CURRENT CHEAT DATABASE
======================
Some users did not know what cheats are currently available, so here we list them:

LEGO Star Wars III - The Clone Wars (USA)
Sonic Generations (USA)
Star Fox 64 3D (USA)
The Legend of Zelda - A Link Between Worlds (USA)
Yoshis New Island (USA)

These are mainly as a proof of concept, and we expect many more to come with the help of our users!

CHEAT MEMORY ADDRESSES
======================
Some users also wondered what kind of memory addresses the Gateway 3DS cheat engine expects, so let us be clear:
It expects virtual memory addresses, so that it works on both New 3DS and Old 3DS and for any supported firmware version our users are running.

This means that existing codes used in for example AR3DS, which use physical addresses, need to be converted into virtual addresses.
Unfortunately this kind of conversion is not straightforward.

SPECIAL KEYPAD CODE
===================
As for the Special KEYPAD cheat code, the keypad value can be any combination of the following:

0x1 A
0x2 B
0x4 Select
0x8 Start
0x10 Right
0x20 Left
0x40 Up
0x80 Down
0x100 R
0x200 L
0x400 X
0x800 Y

TEASER TIME!
============

We would like to formally introduce our next upcoming feature that we have in the works: the ingame menu!
With the ingame menu, you pause the game and you will be able to:
* Live edit game memory RAM with an on screen hex editor!
* Live configuration of cheats
* Live search for cheats!
* And many more features that we have planned

See below for our current proof of concept in action!

That’s it for now, and as always, ENJOY!

GATEWAY ULTRA v3.5 PUBLIC BETA

Today we are very proud to present a new firmware update: GATEWAY ULTRA 3.5!

Summary:
* Cheat code support
* Updated emunand support for 10.3 for Old 3DS

We’ve heard your prayers and here it is! Cheat code support for GATEWAY 3DS!

First things first. Our current cheat library is very small and should be
considered more as a proof of concept than anything else. We need you,
cheat hackers and cheaters around the globe to hack us some cool codes.

How, you ask us? That is a question we will soon answer, STAY TUNED. :-)

And as always, support the innovators not the imitators and ENJOY!

PS: We have noticed some serious and dangerous flaws in an unofficial Gateway emulation plugin,
and we strongly urge to cease using this plugin and only use GENUINE Gateway! You have been warned!
HOW TO USE CHEATS
=================

1. Simply copy the folder “cheats” into the root of your microSD card that will go into the Gateway RED card.
Each file inside the cheats folder will be of the format <TitleID>.txt where TitleID is the title id of the game.

2. Boot into Gateway mode, and press SELECT to make the Gateway game selection menu appear.

3. Select your game and then press Y to enter cheat mode.

4. Enable the cheats you want and then press START to load the game.
CHEAT CODE FORMAT
=================

The GATEWAY 3DS cheatcode format is based on the old ActionReplay DS
code format, the one you all know and love! We added some code types
for your convenience as well!

The following code types are supported:

NOTE: default value of offset and data registers is zero.

Memory Writes:
0XXXXXXX YYYYYYYY - 32bit write to [XXXXXXX + offset]
1XXXXXXX 0000YYYY - 16bit write to [XXXXXXX + offset]
2XXXXXXX 000000YY - 8bit write to [XXXXXXX + offset]

Conditional 32bit codes:
3XXXXXXX YYYYYYYY - Greater Than (YYYYYYYY > [XXXXXXX + offset])
4XXXXXXX YYYYYYYY - Less Than (YYYYYYYY < [XXXXXXX + offset])
5XXXXXXX YYYYYYYY - Equal To (YYYYYYYY == [XXXXXXX + offset])
6XXXXXXX YYYYYYYY - Not Equal To (YYYYYYYY != [XXXXXXX + offset])

Conditional 16bit deref + write codes:
7XXXXXXX ZZZZYYYY - Greater Than
8XXXXXXX ZZZZYYYY - Less Than
9XXXXXXX ZZZZYYYY - Equal To
AXXXXXXX ZZZZYYYY - Not Equal To

Offset Codes:
BXXXXXXX 00000000 - offset = *(xxx)
D3000000 XXXXXXXX - set offset to immediate value
DC000000 XXXXXXXX - Adds an value to the current offset

Loop Code:
C0000000 YYYYYYYY - Sets the repeat value to ‘YYYYYYYY’
D1000000 00000000 - Loop execute
D0000000 00000000 - Terminator code

Data Register Codes:
D4000000 XXXXXXXX - Adds XXXXXXXX to the data register
D5000000 XXXXXXXX - Sets the data register to XXXXXXXX
D6000000 XXXXXXXX - (32bit) [XXXXXXXX+offset] = data ; offset += 4
D7000000 XXXXXXXX - (16bit) [XXXXXXXX+offset] = data & 0xffff ; offset += 2
D8000000 XXXXXXXX - (8bit) [XXXXXXXX+offset] = data & 0xff ; offset++
D9000000 XXXXXXXX - (32bit) sets data to [XXXXXXXX+offset]
DA000000 XXXXXXXX - (16bit) sets data to [XXXXXXXX+offset] & 0xffff
DB000000 XXXXXXXX - (8bit) sets data to [XXXXXXXX+offset] & 0xff

Special Codes:
DD000000 XXXXXXXX - if KEYPAD has value XXXXXXXX execute next block