Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions categories/consoles/Android.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
layout: post
permalink: /Android
title: Android
breadcrumbs:
- name: Home
url: /
- name: Android
url:
editlink: ../pages/Android.md
recommend:
- android
- introduction
_image: /public/images/Android.jpg
_twitterimage: https://www.retroreversing.com/public/images/Android.jpg
tags:
- android
_updatedAt: 2025-12-07
redirect_from:
- /Android
---

# Reverse Engineering Android Games

## JADX: Dex to Java Decompiler
The **skylot** project hosts **JADX**, the premier open-source tool for **reverse engineering** Android applications by converting **Dalvik bytecode (DEX/APK)** back into readable **Java source code**.

It is available as a powerful command-line utility and a feature-rich graphical user interface (GUI) that supports syntax highlighting, cross-reference navigation, and full-text search. The decompiler includes an effective **deobfuscator** and is essential for deep static analysis of compiled Android binaries.

{% include link-to-other-site.html url="https://github.com/skylot/jadx" description="skylot's JADX project provides robust command-line and GUI tools for decompiling Android DEX/APK files back into readable Java code, complete with an integrated deobfuscator." image="https://opengraph.githubassets.com/1/skylot/jadx" title="skylot/jadx: Dex to Java decompiler" %}

### jadx-magic-strings Plugin
The **jadx-magic-strings** project by **0rShemesh** is a highly valuable JADX plugin designed to enhance the decompilation and analysis of Android DEX files.

It operates automatically after decompilation to extract and analyze "magic strings," which include method names, class references, and source file paths (like `.java` or `.kt`), from string constants found in the code.

{% include link-to-other-site.html url="https://github.com/0rShemesh/jadx-magic-strings" description="0rShemesh's JADX plugin automatically extracts source file references, method name candidates, and other structural information from string constants in decompiled Android code, aiding reverse engineering." image="https://opengraph.githubassets.com/1/0rShemesh/jadx-magic-strings" title="jadx-magic-strings: JADX plugin for extracting metadata from strings" %}

## Android File Formats
### APK-Info: Full-Featured APK Parser (Rust/Python)
The APK parser **apk-info** is designed for efficient forensic and security analysis, offering comprehensive extraction of crucial metadata from Android packages, including main activities, minimum SDK versions, and intricate details from the **AXML** (Binary XML) and **ARSC** (Resource) formats.
Crucially, it fully supports parsing various **APK Signature Block 42** schemes (v1, v2, v3, v3.1), making it a powerful read-only utility for large-scale Android reverse engineering and malware analysis.

{% include link-to-other-site.html url="https://github.com/delvinru/apk-info" description="delvinru's apk-info is a full-featured, malware-friendly APK parser in Rust with Python bindings, capable of high-speed extraction of metadata and analysis of complex signature schemes." image="https://opengraph.githubassets.com/1/delvinru/apk-info" title="delvinru/apk-info: APK full-featured parser" %}
27 changes: 22 additions & 5 deletions categories/consoles/Arcade.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
---
permalink: /arcade/
permalink: /arcade
layout: post
title: Arcade - How retro arcade games were made
recommend: arcade
recommendTitle: All Arcade Posts
editlink: ../categories/consoles/Arcade.md
console: 'arcade'
console: arcade
consoleimage: /public/consoles/Arcade.png
excerpt: Awesome list of Arcade Game Development information
breadcrumbs:
Expand All @@ -15,21 +14,38 @@ breadcrumbs:
url: /
- name: Arcade
url: #
recommend:
- arcade
- introduction
- hardware
tags:
- arcade
- introduction
- hardware
---

### What was the first Arcade Video Game?
<img width="700" height="933" alt="Computer Space Restoration in progress by Archer Maclean" src="https://github.com/user-attachments/assets/eb6050cb-e640-4d01-a53b-96d85a646e7f" />

**Computer Space** released in 1971 by **Nolan Bushnell** and **Ted Dabney** is widely considered the first arcade game. While it wasn't a massive commercial hit, it proved that money could be made from creating video games and the authors went on to found **Atari** to take the concept to the next level with **Pong** [^12].

It has a unique **fiberglass** design that aimed to appear futuristic and still makes it look unique to this day compared to the wooden arcade cabinates that followed it.

Despite its name it is not actually a "computer" as microchips were too expensive in 1971 so it used **TTL** (Transistor-Transistor Logic) which meant that the "code" was actually the series of wires and switches that connected to each other. So to change the functinality or fix a bug it meant actually physically resoldering the connections.

---
# Development of Arcade Games

## What programming languages were used to create Arcade games?
Since every Arcade board is different it can depend on the power of the system, some less powerful boards used pure assembly to write the game code and others used a higher level language such as C.
Early arcade games didn't use a programming language at all with all the game logic built at the hardware level. So to change the game it meant literally rewiring the hardware components and modding involved adding new hardware components which bypassed the original behavior.

As for later arcade games that had a microprocessor the programming language used can depend on the power of the system, some less powerful boards used pure assembly to write the game code and others used a higher level language such as C.

For example the 1990 game **Klax** was written in C according to **Greg Omi** who was sent the source code for his Atari Lynx port of the game [^4].

This is further confirmed in a 1990 interview with original designer of Klax **Mark Stephen Pierce**[^5]:
> "All Atari coin‑ops today are written in C ‑ that's the most popular language with the programmers here, I guess. The actual programming work is carried out on standard terminals, and then transferred into our VAX machines where it's compiled and compressed. Finally it's downloaded from there through an EPROM burner and onto the hardware for the game that the engineer has put together. Every coin‑op's hardware is different partly because each game is different, and partly as a form of copy protection.

Early arcade games didn't use a programming language at all with all the game logic built at the hardware level. So to change the game it meant literally rewiring the hardware components and modding involved adding new hardware components which bypassed the original behavior.

## What tools were used to create the art for Arcade games?
In the 1990 interview with **Mark Stephen Pierce** the following was published (in "The One" magazine) [^5]:
Expand Down Expand Up @@ -222,3 +238,4 @@ MAME was again featured in EDGE magazine in **October 2002**, where it was descr
[^9]: [The Internet Arcade – Internet Archive Help Center](https://help.archive.org/help/the-internet-arcade/)
[^10]: [https://github.com/jsmess/jsmess](https://github.com/jsmess/jsmess)
[^11]: [MAME Over](https://worldofstuart.excellentcontent.com/mameover.htm)
[^12]: [Before Pong, There Was Computer Space - The MIT Press Reader](https://thereader.mitpress.mit.edu/before-pong-there-was-computer-space/)
15 changes: 14 additions & 1 deletion categories/consoles/Nes.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,22 @@ However the same wasn't the case in the west as described in this quote from [Mo

For emulators to support all the different cartridge hardware, emulator authors came up with the concept of Mappers which are part of the **iNES Header** and are used by emulators to vary the emulation based on what Mapper the game ROM is defined as using.

### NESCartDB: NES Cartridge Database
**NESCartDB** is the definitive resource for technical information on Nintendo Entertainment System (NES) and Famicom cartridges, originally created by **BootGod**. The database catalogs high-resolution PCB scans, mapper assignments, ROM checksums, and chipset details for thousands of games. It serves as a critical reference for emulator developers and reverse engineers needing to verify hardware configurations and understand how specific titles interface with the console.

{% include link-to-other-site.html url="https://nescartdb.com/" description="BootGod provides NESCartDB, an exhaustive database of NES cartridge PCBs, mappers, and hardware specs vital for accurate emulation and preservation." image="https://nescartdb.com/static/img/nes_cart.png" title="NESCartDB: NES Cartridge Database" %}


## Retail NES Controller Electronics
<section class="postSection">
<iframe class="wow slideInLeft postImage" width="560" height="315" src="https://www.youtube.com/embed/dahbvSYV0KA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<div markdown="1">

Have you ever wondered about how a NES controller actually works, such as the circuits and electronic components used to physically create it?

Well you are in luck, the YouTuber **Displaced Gamers** explains exactly how the electronics of the NES controller works and a few interesting facts along the way!

He opens up the NES controller revealing the physical wires, traces (green lines on the circuit), rubber membranes and the 8-bit shift register (HD14021BP).
He opens up the NES controller revealing the physical wires, traces (green lines on the circuit), rubber membranes and the 8-bit shift register (**HD14021BP**).

The Controller as with all electronics has both a Power (High) and Ground (Low) lines, with 5V used for Power. Ground is connected to all of the buttons including the 4 D-pad buttons, whereas the Power lines go straight to the Carbon Printed Pull-Up resistors which then in-turn goes to each of the buttons.

Expand Down Expand Up @@ -281,6 +288,12 @@ It covers the following topics related to NES Graphics:

<iframe width="560" height="315" src="https://www.youtube.com/embed/7Co_8dC2zb8" frameborder="0" allowfullscreen></iframe>

### What's Beyond the Screen Borders of the NES?
[100th Coin](https://youtu.be/872vcU8pI6s) presents a technical analysis of the data and rendering artifacts hidden within the overscan regions of Nintendo Entertainment System games. The video explores how the PPU handles off-screen sprite management and scrolling seams, highlighting specific emulation challenges such as OAM cycling and scanline zero behavior.

<iframe width="560" height="315" src="https://www.youtube.com/embed/872vcU8pI6s" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


---
# Reverse Engineering Famicom and NES games
If you're interested in exploring the inner workings of classic video games, reverse engineering is a process that can help you uncover the secrets of how these games were designed and programmed.
Expand Down
11 changes: 11 additions & 0 deletions categories/consoles/Xbox.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ This section of our guide will provide you with detailed information and resourc

## Development Hardware

---
# Reverse Engineering

## File Formats

### Splinter Cell's LIN Format Analysis
**Landaire** investigates the `.lin` file format used in *Splinter Cell: Pandora Tomorrow* and *Chaos Theory*, which had remained undocumented for two decades. The analysis reveals that these files are not traditional archives, but rather linear recordings of memory allocation and read operations designed to optimize streaming from the Xbox's optical media.

{% include link-to-other-site.html url="https://landaire.net/a-file-format-uncracked-for-20-years/" description="Landaire details the reverse engineering of the Splinter Cell LIN format, identifying it as a streaming optimization method rather than a standard compressed archive." image="https://github.com/landaire.png" title="A File Format Uncracked for 20 Years" %}


---
# All Posts
<div>
Expand Down
6 changes: 4 additions & 2 deletions categories/consoles/iOS.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,16 @@ For a full list of game compatibility check out the [touchHLE app compatibility

<iframe width="560" height="315" src="https://www.youtube.com/embed/dviPm_e33pk" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

### Popular iOS 2.x Games (2008+)
### Popular iOS 2.x Games (ARMv6) (2008+)
iPhone OS 2 first introduced the App Store and with it came a bunch of "AAA" game studios aiming to tap into the market, some of these games are quite fun and worth playing others are maybe not as fun but could be fun to reverse engineer.

Games released for iPhone OS 2 were compiled for the 32-bit **ARMv6** processor so they will **not** run on 32-bit ARMv7 devices (iPhone 3GS+) or any 64-bit devices.

They can run on later versions *only* if the developer shipped a dual-architecture binary (ARMv6+ARMv7). Many early App Store games never did this, so some games are ARMv6-only and thus can only run on the iPhone (2G) and iPhone 3G!
They can run on later devices **only** if the developer shipped a dual-architecture binary (ARMv6+ARMv7). Many early App Store games never did this, so some games are ARMv6-only and thus can only run on the iPhone (2G) and iPhone 3G!


So games in this list must have an ARMv6 executable, either as a dual-architecture or ARMv6 exclusive, as otherwise they would not run on iOS 2.x!

These games require a minimum of iPhone OS 2.x (latest 2.2.1 recommended) to run and the reviews of these games come from the Bookazine **iPhone Games Directory** Volume 001 from 2009 to give time-period accurate reviews.

Name | Developer | Review out of 5 | Description
Expand Down
Loading