All this is a homebrew development with reverse engineering, non official technical documentation and a lot of personal time.
Twitter : https://twitter.com/vicboma1
- CreateProcess and OpenProcess
- CreateRemoteThread and LoadLibrary
- Portable Execute
- Hook Injection
- Virtual Method Table
- Vectored Exception Handling
- Trampoline/Columpio
- DetourFunction
- Api Windows
- Api Native NTxxx
- Api Native ZWxxx
- D3D8
- D3D8Device
- DSound8
- DSoundBuffer
- D3D9
- D3D9ex
- D3D9Device
- Addressing
```
Year : 2005
CPU : Celeron - Pentium 4
Chipset: Intel 865G
GPU: ATI Radeon 9600SE/9600XT(128 MB) / X700PRO (256 MB), Bahia AGP 2.0/3.0 Soporte 1x/4x/8x
SO: Windows XP Embedded
```
Year : 2005
CPU : Intel Core 2 Duo E6400/Pentium 4 651/Celeron D 352
Chipset: Intel Q965 + ICH8
GPU: ATI RADEON X1600Pro/X1300LE o nVIDIA GeForce 7900GS/7600GS/7300GS
SO: Microsoft Windows XP Embedded SP2
Arcade System Board
Run w/ Taito Type X, X2, X Zero, X3 and X4
Loader | Based on Injection's
public interface ILoaderProcessNative
{
Boolean isLoaded { get; }
Boolean isActive();
int Open(String name);
Task OpenAsync(String name);
Kernel32Native.PROCESS_INFORMATION Create(String name, uint securityAttr);
Boolean Attach(String name);
Boolean InjectDLL(String name);
List<IntPtr> SuspendAllThreads();
Boolean ReadMemory(IntPtr processID, IntPtr address, int numOfBytes, byte[] buffer, out int bytesRead);
Boolean WriteMemory(IntPtr hProc, IntPtr address, byte [] buffer, out int bytesWrited);
List<IntPtr> ResumeAllThreads();
Boolean Terminate();
}
Example | File.properties
- Player 1
P1_SERVICE = 3
P1_START = 1
P1_COIN = 5
P1_UP = UP
P1_DOWN = DOWN
P1_LEFT = LEFT
P1_RIGHT = ALT
P1_BUTTON_1 = SPACE
P1_BUTTON_2 = CTRL
P1_BUTTON_3 = C
P1_BUTTON_4 = A
P1_BUTTON_5 = V
P1_BUTTON_6 = B
- Player 2
P2_SERVICE = 4
P2_START = 2
P2_COIN = 6
P2_UP = R
P2_DOWN = F
P2_LEFT = G
P2_RIGHT = D
P2_BUTTON_1 = A
P2_BUTTON_2 = S
P2_BUTTON_3 = E
P2_BUTTON_4 = Q
P2_BUTTON_5 = W
P2_BUTTON_6 = E
- Board
TEST_TILT1 = 3
TEST_TILT2 = 7
TEST_TILT3 = 8
TEST_MODE = T
EXIT_CODE = ESC
- Manual
Need for the taito type x game to read the keyboard input
ENUM = Ascii code keyboard
Direct Input | Based on Hook's | DIKCodes
- Player 1
[Display address] [Value] [Byte] [Key]
0000000000000000 00 . Start
0000000000000004 00 . Coin
0000000000000008 00 . Service
000000000000000C 00 . Up
0000000000000010 00 . Down
0000000000000014 00 . Left
0000000000000018 00 . Right
000000000000001C 00 . Btn 1
0000000000000020 00 . Btn 2
0000000000000024 00 . Btn 3
0000000000000028 00 . Btn 4
000000000000002C 00 . Btn 5
0000000000000030 00 . Btn 6
- Player 2
[Display address] [Value] [Byte] [Key]
0000000000000034 00 . Start
0000000000000038 00 . Coin
000000000000003C 00 . Service
0000000000000040 00 . Up
0000000000000044 00 . Down
0000000000000048 00 . Left
000000000000004C 00 . Right
0000000000000050 00 . Btn 1
0000000000000054 00 . Btn 2
0000000000000058 00 . Btn 3
000000000000005C 00 . Btn 4
0000000000000060 00 . Btn 5
0000000000000064 00 . Btn 6
- Board
[Display address] [Value] [Byte] [Key]
0000000000000068 00 . Test Mode
000000000000006C 00 . Exit
- Manual
Need for the taito type x game to read the keyboard input
Keyboard - 256 (short)
0x000000XX XX
Joystick - X[1|2] - Axis[+|-][X|Y|Z] - 256 (btn)
0xZXYA0CMN ZY - YA - 0CMN
Example
[Display address] [Hexa Code] [Hexa Code] [Ascii Code]
0000000000000000 02 00 00 00 06 00 00 00 06 00 00 00 C8 00 00 00 ................
0000000000000010 D0 00 00 00 CB 00 00 00 CD 00 00 00 02 00 00 00 ................
0000000000000020 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 ................
0000000000000030 07 00 00 00 32 00 00 00 31 00 00 00 30 00 00 00 ....2...1...0...
0000000000000040 2F 00 00 00 2E 00 00 00 01 00 00 X1 03 00 00 X1 /...............
0000000000000050 02 00 00 X1 25 00 00 00 24 00 00 00 23 00 00 00 ........$...#...
0000000000000060 22 00 00 00 21 00 00 00 14 00 00 00 01 00 00 00 "...!...........
Inicializando
Logger: 2019-06-07_00-48-04-LoggerJvs.log
Escribo 6 bytes... -> [ E0 FF 03 F0 D9 CB ] 0xE0FF03F0D9CB
[E0] = SYNC_CODE OK
[FF] = BROADCAST A TODOS LOS NODOS
[03] =
[F0] = RESET ALL NODES
[D9]
[CB] =
Envío 0 bytes... -> [ ]
............................
Escribo 6 bytes... -> [ E0 FF 03 F1 01 F4 ] 0xE0FF03F101F4
[E0] = SYNC_CODE OK
[FF] = BROADCAST A TODOS LOS NODOS
[03] =
[F1] = Set Address
[01]
[F4] =
Envío 6 bytes... -> [ XXXXXXXXXXX ]
............................
Escribo 5 bytes... -> [ E0 01 02 10 13 ] 0xE001021013
[E0] = SYNC_CODE OK
[01] = ESCLAVO
[02] =
[10] = I/O IDENTIFICADOR
[13] =
Envío 58 bytes... -> [ XXXXXXXXXXX ]
............................
Escribo 5 bytes... -> [ E0 01 02 11 14 ] 0xE001021114
[E0] = SYNC_CODE OK
[01] = ESCLAVO
[02] =
[11] = COMANDO REVISION FORMATO
[14] =
Envío 7 bytes... -> [ XXXXXXXXXXX ]
...
............................
Escribo 5 bytes... -> [ E0 00 02 00 02 ]
[E0] = SYNC_CODE OK
[00] = MAESTRO
[02] =
[00] = RESETEANDO MAQUINA (Exit Game)
[02] =
Envío 6 bytes... -> [ XXXXXXXXXXX ]
- Color Inverting per-stage texture processing
- No filter stretch
- Fetch stream vertex
- Primitives to render
- Rendered entities without alpha
- Filters in runtime
- Reverse pixel mode in runtime / Nearest-Point
- Diffuse CyberPunk Lights
- Spot Light Type
- Anisotropic Filter
- Sound Create
- Sound Capture
- Sound Full Duplex
- Sound Full Duplex Create
- Sound EnumerateA
- Sound EnumerateW
- Sound Buffer
- Dynamic virtual Hard Disk (VHD)
- Substitute a drive letter for local path
- Save/Config0000.bin
- setting.dat
- hiscore.dat
- game.dat
- Windowed
- Windowed Center
- Fullscreen (Windowed Magnifier)
- Fullscreen Native
- 0°
- 90°
- 180°
- 270°
- Show
- Hidden
- Animation
- Cosplay 3D Mahjong - 706 - Working Video | Inputs (WIP)
- Cosplay 3D Mahjong - 401300 - Video (WIP)
- Rastan Saga - 401500 - Inputs (WIP)
- Puzzle Bobble - 301200 - Inputs (WIP)
- Giga wing Generation (翼神ギガウイング ジェネレーションズ) Arcade (2004) - Taito Type X | Longplay GameHacking
- Giga wing Generation (翼神ギガウイング ジェネレーションズ) Arcade (2004) - Taito Type X | Bad Stencil Graphic
- Giga wing Generation (翼神ギガウイング ジェネレーションズ) Arcade (2004) - Taito Type X | Windowed Mode
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Working 100% Stage 3-4
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Working 100% Stage 1-2
- Raiden IV (雷電IV Raiden Fō) Arcade 2007 Taito Type X | Anisotropico Filter
- Raiden IV (雷電IV Raiden Fō) Arcade 2007 Taito Type X | Invert Colors
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Anisotropico Filter
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Invert Color
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Improving 60FPS
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Fullscreen
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Windowed HD
- Chaos Breaker (カオスブレイカー) Arcade (2004) - Taito Type X | Windowed Mode
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Intro Gameplay Fixed
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Intro Gameplay Fixed
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 2 Invert color texture
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 1 Invert color texture
- Homura (ほむら) Arcade (2005) - Taito Type x | Fixing game exit
- Homura (ほむら) Arcade (2005) - Taito Type x | Fixing Back buffer
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 4
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 3
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 2
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 2 Hack Stretch Rendered
- Homura (ほむら) Arcade (2005) - Taito Type x | Level 1
- Homura (ほむら) Arcade (2005) - Taito Type x | Fullscreen Rotation 90° - 60 FPS
- Homura (ほむら) Arcade (2005) - Taito Type x | Fullscreen Rotation 90° - Bad FPS...
- Homura (ほむら) Arcade (2005) - Taito Type x | Windowed
- Homura (ほむら) Arcade (2005) - Taito Type x | Hooking Video
- Launcher Sync vs Async
- Launcher Async + Destroyer Process + Modularity addons
- Loader & Demon - Capture Process w ThreadKernel
- VHD vs SUBST to mount a drive letter
- Substitute a drive letter for local path
- Hooking - Capturing pop-up window when mounting a VHD in runtime
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Alpha Blending Longplay
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Level-5
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Level-4
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Level-3
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Level-2
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Level-1
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Alpha Blending Longplay
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Fullscreen 60 fps
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Working 100% | 60 fps
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Demostration gamePlay
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Automatic virtual disk
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Partition disk D
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Fullscreen & Rotation Display
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Windowed
- Raiden IV (雷電IV Raiden Fō) Arcade (2007) - Taito Type X | Error Direct3Dバックバッファ取得失敗
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Spot Light Type
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Diffuse CyberPunk Lights
- Trouble Witches AC (トラブル☆ウィッチーズAC) - Taito Type x2 | Texture Filtering in runtime | Nearest-Point
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Reverse pixel mode in runtime
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Filters in runtime
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Working 100%
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Rendered entities without alpha
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Rotation Native Screen 90º
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Proof of concept screen rotation 0 - 90 - 180 - 270
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Working 100%
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Primitives to render
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Fetch stream vertex
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Utils bad text rendering
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | No filter stretch
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Hidden background
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | JVS working
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | Hooking Display
- Raiden III (雷電III, Raiden Surī) Arcade (2005) - Taito Type x | I/O Error PC
- Trouble Witches AC (トラブル☆ウィッチーズAC) - Taito Type x2 | JVS I/O Coin Error overflow w/ +40000 credits
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Test Mode input mapping w/JVS I/O
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Mapping input async
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | JVS I/O Error
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Speed video
- Trouble Witches AC (トラブル☆ウィッチーズAC) Arcade (2008) - Taito Type x2 | Solved JVS I/O ERROR (00)
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Windowed size Optimization
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | icon set hwnd
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Windowed screen
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Hook input keyboard
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Directx vertical hooking
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Directx size hooking
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Directx Display hooking II
- Rastan Saga (ラスタンサーガ) Arcade (2014) - Taito Type x | Directx Display hooking I
- Inject Dll - Remote thread
- Api Hook - MessageBox | 32bits
- Api Hook - Keyboard Async GUI | 32bits
- Inject Dll - Interoperabilidad entre C# y C Nativo (APIENTRY DllMain)
- Inject Dll - Suspend & Resume
- Inject Dll - Suspend Process
- Inject Dll - Capture Handlers
- Launcher Process Async
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
XML 142 173 345 286219
C/C++ Header 795 38483 84272 147221
C++ 114 4477 4607 16206
C 14 747 711 10235
C# 118 1478 3894 9043
MSBuild script 18 0 49 1653
Markdown 3 4 0 46
DOS Batch 8 1 0 27
XAML 2 1 0 15
JSON 5 0 0 5
Bourne Shell 2 7 22 4
Assembly 1 1 2 1
-------------------------------------------------------------------------------
SUM: 1222 45372 93902 470675
-------------------------------------------------------------------------------
- JVS vs JAMMA
- JVS conversion
- JVS protocols
- Jamma Video Standard
- Naomi I/O Board
- Manual Programmer NV API
- JVS
- JVS Original
- I/O Board
- Input Keys
- Cloc
- Use DLL Native with C/C++ in C# Project
- Function Pointers
- Windows Native API - Roger Orr [ACCU 2019]
- Previous Mode
- Kernel Native
Loader Dump Arcade is programmed by vicboma1, all this is a homebrew development with reverse engineering, non official technical documentation and a lot of personal time.
Twitter : https://twitter.com/vicboma1.
This software is provided as-is, and is licensed under the MIT License.
MIT License
Copyright (c) 2019 Victor Bolinches
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.