All Projects → gorisanson → Pikachu Volleyball

gorisanson / Pikachu Volleyball

Pikachu Volleyball implemented into JavaScript by reverse engineering the original game

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Pikachu Volleyball

Pikachu Volleyball P2p Online
Pikachu Volleyball peer-to-peer online via WebRTC data channels
Stars: ✭ 160 (-50.62%)
Mutual labels:  game, video-game, reverse-engineering
Openmoonstone
Open source reimplementation of Moonstone: A Hard Day's Knight
Stars: ✭ 50 (-84.57%)
Mutual labels:  game, reverse-engineering
Littleshooter2
Little shooter remake using React
Stars: ✭ 42 (-87.04%)
Mutual labels:  game, video-game
Igdb
Go client for the Internet Game Database API
Stars: ✭ 65 (-79.94%)
Mutual labels:  game, video-game
Drv3 Tools
(Not actively maintained, use DRV3-Sharp) Tools for extracting and re-injecting files for Danganronpa V3 for PC.
Stars: ✭ 13 (-95.99%)
Mutual labels:  game, reverse-engineering
Halomd
New demo version of Halo for the Mac.
Stars: ✭ 36 (-88.89%)
Mutual labels:  game, reverse-engineering
Dll hook Rs
Rust code to show how hooking in rust with a dll works.
Stars: ✭ 57 (-82.41%)
Mutual labels:  game, reverse-engineering
Textractor
Extracts text from video games and visual novels. Highly extensible.
Stars: ✭ 656 (+102.47%)
Mutual labels:  game, reverse-engineering
Openxcom
Open-source clone of the original X-Com 👽
Stars: ✭ 1,302 (+301.85%)
Mutual labels:  game, video-game
Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+533.95%)
Mutual labels:  game, video-game
Gm Games
Single-player 🏀, 🏈, and 🏒 management simulation games, made entirely in client-side JavaScript.
Stars: ✭ 120 (-62.96%)
Mutual labels:  game, video-game
Xoreos
A reimplementation of BioWare's Aurora engine (and derivatives). Pre-pre-alpha :P
Stars: ✭ 856 (+164.2%)
Mutual labels:  game, reverse-engineering
Godot Make Pro 2d Games
A-RPG demo made with Godot, MIT-licensed, from our Godot course
Stars: ✭ 674 (+108.02%)
Mutual labels:  game, video-game
Pince
A reverse engineering tool that'll supply the place of Cheat Engine for linux
Stars: ✭ 987 (+204.63%)
Mutual labels:  game, reverse-engineering
Allsketchs
Processing sketches, in which I have worked in the last years; images, videos, prototypes, experiments, tools, works, concepts... Everything is unfinished, some may not work, When I had no ideas, I would open one to see what it was...
Stars: ✭ 666 (+105.56%)
Mutual labels:  game, video-game
Starflight Reverse
Reversed engineered game Starflight (1986)
Stars: ✭ 56 (-82.72%)
Mutual labels:  game, reverse-engineering
Pokemon Font
GAME BOY font from Pokémon R/G/B/Y/G/S/C, Unicode extended.
Stars: ✭ 437 (+34.88%)
Mutual labels:  game, video-game
Vgmstream
vgmstream - A library for playback of various streamed audio formats used in video games.
Stars: ✭ 524 (+61.73%)
Mutual labels:  game, video-game
D2s Format
Diablo II Save File Format (.d2s format)
Stars: ✭ 71 (-78.09%)
Mutual labels:  game, reverse-engineering
Lambda Lantern
🧙 ‎‎ A 3D game about functional programming patterns. Uses PureScript Native, C++, and Panda3D.
Stars: ✭ 122 (-62.35%)
Mutual labels:  game, video-game

Pikachu Volleyball

English | Korean(한국어)

Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) is an old Windows game which was developed by "(C) SACHI SOFT / SAWAYAKAN Programmers" and "(C) Satoshi Takenouchi" in 1997. The source code on this repository is gained by reverse engineering the core part of the machine code — including the physics engine and the AI — of the original game and implementing it into JavaScript.

You can play this game on the website: https://gorisanson.github.io/pikachu-volleyball/en/

Pikachu Volleyball game screenshot

Game structure

  • Physics Engine: The physics engine, which calculates the position of the ball and the players (Pikachus), is contained in the file src/resources/js/physics.js. (This file also containes the AI which determines the keyboard input of the computer when you are playing against your computer.) This source code file is gained by reverse engineering the function at the address 00403dd0 of the machine code of the original game.

  • Rendering: PixiJS library is used for rendering the game.

Refer comments on src/resources/js/main.js for other details.

Reverse Engineering Method

The main tools used for reverse engineering are following.

Ghidra is used for decompiling the machine code to C code. At first look, the decompiled C code looked incomprehensible. One of the reason was that the variable names (iVar1, iVar2, ...) and function names (FUN_00402dc0, FUN_00403070, ...) in the decompiled C code are meaningless. But, with the aid of Cheat Engine, I could find the location of some significant variables — x, y coordinate of the ball and the players. And reading from the location of the variables, the decompiled C code was comprehensible! OllyDbg was used for altering a specific part of the machine code. For example, to make slower version of the game so that it would be easier to count the number of frames of "Ready?" message on the start of new round in the game. Resource Hacker was used for extract the assets (sprites and sounds) of the game.

An intended deviation from the original game

If there is no keyboard input, AI vs AI match is started after a while. In the original game, the match lasts only for about 40 seconds. But in this JavaScript version, there's no time limit to the AI vs AI match so you can watch it as long as you want.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].