Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Latest Threads
Can't get Lua example scr...
Last Post: Fleshborne
02-27-2025, 11:20 PM
mGBA load states wiped
Last Post: FROGGIO
02-19-2025, 12:49 AM
2.5x integer scaling of G...
Last Post: pbalogh77
02-16-2025, 01:42 PM
Library Directory?
Last Post: UnlivableKastel
02-16-2025, 04:55 AM
Help
Last Post: aviator
01-15-2025, 02:11 AM
How to use cheats?
Last Post: pizzaman11
01-12-2025, 06:25 AM
What Are Your Favorite GB...
Last Post: patriciahorne
01-08-2025, 08:34 PM
Can I import save files o...
Last Post: Stocazzo
01-01-2025, 10:13 AM
controllers/cheats
Last Post: wisp404_
12-31-2024, 09:05 PM
Where can i find my games...
Last Post: endrift
12-31-2024, 04:00 AM

Forum Statistics
» Members: 1,662,   » Latest member: Xotiicmist,   » Forum threads: 644,   » Forum posts: 2,385,  
Full Statistics

  [New Feature] Add network multiplayer
Posted by: n1zzo - 07-11-2016, 12:21 PM - Forum: Development - Replies (3)

I'd like to implement multiplayer communication over IP,
could this be feasible?

Should it be server based with a central server that broadcasts the frames to every client,
or just point to point?

The current local SIO emulation is somehow limited with respect to the possibilities of multiplayer over internet.

Print this item

  Controls?
Posted by: megamazeman - 07-05-2016, 11:10 PM - Forum: General - Replies (1)

Hi, I'm kind of new to mGBA, and I was wondering if there was any way I could change the controls? I'm used to a different control scheme and I use other emulators besides mGBA, so it's weird going from one control scheme to another (for example on mGBA I press the speed up button listed under "Emulation" and on OpenEmu and VBA-M I press sapce). Thanks!

-mega

Print this item

  Cheats wont work
Posted by: JNC1228 - 06-28-2016, 03:36 AM - Forum: General - Replies (2)

playing pokemon light platinum and no cheats are working and i know they work because i tried them on the VBA emulator
i already added a new set and i also tried gameshark, pro action replay and codebreaker nothing works. Is there a fix for this?

Print this item

  Can't get any cheats to work.
Posted by: I.S.T. - 06-23-2016, 05:54 AM - Forum: General - Replies (7)

I'm playing FF5 Advance U.S. version using 0.4.0. http://gamehacking.org/game/4579?hacker=MadCatz is the codes list. I'm specifically trying the always must be on and earn 1000 ABP Alt code. It just doesn't seem to work. I make a new code set for each code and yet nothing happens when the system registers and accepts the codes.

Print this item

  [Android] Should there be open betas?
Posted by: ds84182 - 06-01-2016, 05:39 PM - Forum: Development - Replies (3)

There are a lot of different versions of Android in existence right now. Since the current SDK min version is API 16 we support 95.7% of all the devices that use the Google Play store. There are 6 different screen densities and 6 different architectures that need to be supported, too. (Hell, even OS modifications (Samsung, <insert Android roms from XDA here>) can break apps) The fact is I don't have enough devices to properly test on.

Beta releases will be release builds signed with a debug key. Proguard will also obfuscate and remove unused code and resources.

Print this item

  [Wii] Stretch video does not fully stretch
Posted by: fox_whisper85 - 05-30-2016, 04:57 PM - Forum: General - Replies (9)

Made a GitHub report here https://github.com/mgba-emu/mgba/issues/267 as the stretch video option is broken in nightly builds since 0.40 at the very least. I hate to bring it up, and I'm unsure why no one else but me and ShadowOne333 have reported it, but the issue at hand is that there are still borders on the screen despite turning on stretched video mode.

https://cloud.githubusercontent.com/asse...51a35b.png

https://cloud.githubusercontent.com/asse...56b0e3.png

I recall older versions completely filling out the screen with minimal black borders, do you want me to post more screenshots to show more
examples of what's going on? I don't know where video stretching stopped working properly, obviously before 0.40, what other info
should I provide?

Screenshots from my monitor via HDMI
http://i.imgur.com/FSuayAL.jpg
http://i.imgur.com/r6L30jK.jpg
http://i.imgur.com/36jJ3A3.jpg


Well I'm a freaking idiot, I figured it was intentional and please go ahead and close this -_-

Print this item

  [SOLVED] Big Mutha Truckers crash
Posted by: TasGema - 05-28-2016, 02:43 PM - Forum: General - Replies (2)

I switched to mGBA after hearing that it's a more accurate emulator than VBA, however one of the game's i'm playing (Big Mutha Truckers ) crashes. This happens in both in the latest standalone version and the RetroArch mGBA core. Is that a known issue?

It works fine with VBA.

Print this item

  Changing the save/save state directory
Posted by: fox_whisper85 - 05-27-2016, 07:05 PM - Forum: General - Replies (16)

I apologize if this has been asked before (and for the life of me, I can't locate or recall where the post was made), but is it possible to specify a save directory for the save and save states since mGBA doesn't support file type filtering? It would make loading games a lot easier to navigate through, thank you for your hard work Big Grin

Print this item

  [Android] GameList: Grid vs List
Posted by: ds84182 - 05-26-2016, 10:14 PM - Forum: Development - Replies (3)

First, here are images of grids and lists from the Material Design Guidelines

List:
[Image: components_lists_keylines6.png]

Grid:
[Image: components_grids_specs12.png]

Grids are primarily for consuming audio visual content (eg. Videos Games, Movies, Music), while a list would work for textual content (eg. Settings, Messaging). Grid items focus on images while list items focus on text. Grids also allow more items on the screen, since in portrait you can have 2 items side by side, and in landscape you could have 3 or more items side by side (In landscape, on my phone, I can see 6 games at a time vs 2 games at a time (with a lot of wasted whitespace)).

So, to conclude, here's a list of pros and cons (and potential mitigations):

Grid:

Pros:

  • Save images are treated as a first class citizen so users can see what they were doing last and also identify the game without reading the title
  • A lot more games can fit on the screen at the same time

Cons:
  • Game titles get truncated (Mitigation: Long press a game to view its title in a Toast (This is also implemented by Netflix))

List:

Pros:
  • Users can see the title and any extra information that may be available (possibly publisher or last play date...)

Cons:
  • Uses up a lot of room on the screen, shows a lot of whitespace.
  • Save images are swept off to the side. Users can still get context but it isn't the main focus.
  • Only 3-5 games can be shown on a screen in portrait at a time vs 6-15 with a grid.

Print this item

  [Android] rxJava vs Agera
Posted by: ds84182 - 05-17-2016, 09:58 PM - Forum: Development - Replies (3)

So a long long looooooong time ago, some person thought "What if we could respond to things changing directly after they change instead of constantly polling?" Thus, Reactive programming was formed.

rxJava

Now, even though rxJava stands for "reactive extensions for Java," rxJava is more functional programming than reactive.

rxJava focuses on event driven data flow using dynamically built observables. rxJava observables can send a total of 3 events: Data, Error, and Done. rxJava has flow control operators too, like filter, reduce, map, etc. Flow control operators basically act like a subscription that sends data to another subscription in a chain. This can be extremely inefficient because of all the object allocation that goes on. It also has a rather confusing threading model, since rxJava was made to use in desktop Java applications.

Agera

While Agera is rather new, it gives reactive programming crafted explicitly for Android. At the core of Agera, you have these interfaces: Observable, Updatable, Receiver, Result, and Supplier. Unlike rxJava, reacting comes first and data flow second. And inside of Agera's implementations it uses Android primitives, like Loopers and Handlers, to communicate and automatically debounce duplicate updates to updatables (this also ensures that the thread you used to subscribe on is the one responsible for handling the updates).

Agera also has results. Results represent the actual data, and they have 3 different states: Present, Failed, and Absent. This allows the program to optionally synchronously handle data if it has already been loaded.

An example

Lets say we're loading a list of games from multiple directories on the filesystem. For each game we must ensure that it's valid and create a new Game object from the file.

rxJava:

Loader implementation:

Code:
Observable.from(directories) // Each of these steps cause some sort of allocation!!
   // Missed implementation detail: ReplaySubject madness that would allow for caching.
   .subscribeOn(Schedulers.io()) // Or maybe it's observeOn... I don't know. rxJava is kinda ambiguous here...
   .map(File::listFiles)
   .flatMap(Observable::from)
   .map((file) -> {
       if (Game.isValidGame(file)) {
           return Game.from(file);
       }
       return null;
   })
   .filter((game) -> game != null)
   .toList();

Using the loader:
Code:
loadGameLater() // Not seen: The method and the class that returns the above observable
   .observeOn(AndroidSchedulers.mainThread()) // Same comment from above...
   .subscribe(list -> {
       // Do something with the list here...
   });

Agera:

Loader implementation:
Code:
public class GameList extends BaseObservable implements Supplier<Result<List<Game>>> {
   private Result<List<Game>> result = Result.absent(); // Returns a reference to a static and immutable object
   // Also, as a consequence, we get caching!

   @NonNull
   @Override
   public Result<List<Game>> get() {
       return result;
   }

   @Override
   protected void observableActivated() {
       // Called when the GameList goes from 0 subscribers to 1 or more
       loadDataIfAbsent();
   }

   private void loadDataIfAbsent() {
       if (result.isAbsent() || result.failed()) {
           executor.execute(() -> { // Not seen: Java thread executor that runs this on another thread
               try {
                   List<Game> games = new ArrayList<>();
                   // Essentially the raw logic from rxJava
                   for (File directory : directories) {
                       for (File file : directory.listFiles()) {
                           if (Game.isValidGame(file)) {
                               games.add(Game.from(file));
                           }
                   }
                   result = Result.present(ImmutableList.copyOf(games));
               } catch (Exception ex) {
                   result = Result.failure(ex);
               }

               dispatchUpdate();
           });
       }
   }
}

Using the loader:
Code:
// Not seen: The class that has these methods and fields
private GameList gameList = new GameList(); // This would be a singleton somewhere and injected by Dagger
private boolean observing = false;
private void startObserving() {
   if (!observing) {
       gameList.addUpdatable(onGameListChanged);
       // Advantage: If a piece of code clears the cache (say a new library directory) we get notified!
       onGameListChanged.update(); // We have to call this after registering so previously cached data can be loaded
       observing = true;
   }
}

private Updatable onGameListChanged = () -> {
   Result<List<Game>> result = gameList.get();
   if (result.isPresent()) {
       List<Game> list = result.get();
       // Do something with the list...
   }
};

private void stopObserving() {
   if (observing) {
       gameList.removeUpdatable(onGameListChanged);
       observing = false;
   }
}

As you can see the rxJava implementation is shorter than the Agera implementation... However, the Agera implementation has caching and proper reactivity. In rxJava caching means taking extra care to make sure that multiple threads don't request something at the same time, which causes the data to load multiple times (!!!) before caching. Furthermore, Agera deals with all the threading madness and DOESN'T create multiple objects just to do something simple.

Who is using rxJava?

There are 8,156 projects that use rxAndroid and rxJava on Github.

Who is using Agera?

There are 42 projects that use Agera on Github (due to the age of the library). Google uses Agera inside of their Google Play Movies app (which is where the code was extracted from).

Because Google made Agera, they may soon make it a recommended library. It's also made for Android instead of generic Java applications.

Print this item


Online Users
There are currently 116 online users. » 0 Member(s) | 116 Guest(s)

Powered By MyBB, © 2002-2025 Melroy van den Berg.