Coder Social home page Coder Social logo

magia's Introduction

Magia

Go Report Card GitHub stars GitHub license

Magia is GBA emulator written in golang.

Warning: This emulator is WIP, so many ROMs don't work correctly now.

exe6g firered

mother12 dqm

Run

Please download latest binary from Release.

$ magia XXXX.gba

Build

# go1.16.x
$ make build
$ ./build/darwin-amd64/magia XXXX.gba

Key

keyboard game pad
← button
↑ button
↓ button
→ button
X A button
Z B button
S R button
A L button
Enter Start button
Backspace Select button

ToDo

  • Window
  • GUI
  • Serial communication
  • GameBoy Compatibility
  • Debug feature
  • Fix some bugs

Game Compatibility List

Game Title Compatibility
バトルネットワーク ロックマンエグゼ2
バトルネットワーク ロックマンエグゼ3 BLACK
ロックマンエグゼ4 トーナメント ブルームーン
ロックマンエグゼ6 電脳獣グレイガ・電脳獣ファルザー
ドラゴンクエストモンスターズ キャラバンハート
MOTHER1+2
ポケットモンスター ファイアレッド

Accuracy

Test Result
Memory tests 1102/1552
I/O read tests 21/123
Timing tests --/1660
Timer count-up tests 326/936
Timer IRQ tests 0/90
Shifter tests 140/140
Carry tests 93/93
Multiply long tests 52/72
BIOS math tests 625/625
DMA tests 964/1256
Misc. edge case tests 5/10

References

magia's People

Contributors

akatsuki105 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magia's Issues

low fps

games dont go above 15 fps is the internally set limit or hardware limitation ?

In both _armSTM() and _armLDM() functions, the handling of the writeBack variable is incorrect.

I have reviewed the issue you pointed out concerning the writeBack mechanism in the title:_armSTM() and _armLDM() functions. Here's a proper analysis and the proposed solution.

In both the title:_armSTM() and _armLDM() functions, the handling of the writeBack variable is incorrect.

The current code updates the value of register rn when the writeBack flag is not set, which is contrary to the expected behavior. The update should occur when the writeBack flag is set.

Suggested Fix
Modify the code so that the update g.R[rn] = rnval only happens if the writeBack flag is set.
Apply the same logic correction to the _armLDM() function as well.

// Correction inside _armSTM()
writeBack := util.Bit(inst, 21)
if writeBack {
	g.R[rn] = rnval
}

// Correction inside _armLDM() (Assuming similar logic applies)
writeBack := util.Bit(inst, 21)
if writeBack {
	g.R[rn] = rnval
}

This correction ensures that the writeBack flag is handled correctly, aligning the function's behavior with the expected theoretical operation. If similar issues are found elsewhere in the code, I recommend applying the same fix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.