100 Commits
Author SHA1 Message Date
Michael Maltese c62d83a34b GCPadEmu: only connected if default device connected
This lets Dolphin know if a configured GameCube Controller should actually
be treated as connected or not.

Talked to @JMC47 a bit about this last night. My use-case is that all of
my controllers are the same hardware (Xbox One controllers) so share the
same configuration (modulo device number). Treating them all as always
connected isn't a problem for most games, but in some (Smash Bros.) it
forces me to go find a keyboard/mouse and unconfigure any controllers
that I don't actually have connected. Hotplugging devices (works on macOS,
at least) + this patch remove my need to ever touch the Controller Config
dialog while in a game.

This patch makes the following changes:

- A new `BooleanSetting` in `GCPadEmu` called "Always Connected", which
  defaults to false.
- `ControllerEmu` tracks whether the default device is connected on every
  call to `UpdateReferences()`.
- `GCPadEmu.GetStatus()` now sets err bit to `PAD_ERR_NO_CONTROLLER` if
  the default device isn't connected.
- `SIDevice_GCController` handles `PAD_ERR_NO_CONTROLLER` by imitating the
  behaviour of `SIDevice_Null` (as far as I can tell, this is the only use
  of the error bit from `GCPadStatus`).

I wanted to add an OSD message akin to the ones when Wiimotes get
connected/disconnected, but I haven't yet found where to put the logic.
2017-11-19 16:07:00 +01:00
Michael Maltese 379e28b58c Add GCPadStatus.isConnected boolean 2017-11-19 16:01:08 +01:00
Michael Maltese bb1c794657 Remove unused GCPadStatus.err 2017-11-19 16:01:07 +01:00
Michael Maltese c520a53b07 CMake: make Qt work when using a manual "-std=c++##" flag
Based on approach in https://gitlab.kitware.com/cmake/cmake/issues/16468
2017-06-03 17:02:54 -07:00
Michael Maltese 14c3d4716f AudioStretcher: split StretchAudio into ProcessSamples / GetStretchedSamples 2017-06-03 16:54:00 -07:00
Michael Maltese 87a467fe42 AudioCommon: extract AudioStretcher class for time-stretching 2017-06-03 16:54:00 -07:00
Michael Maltese a4508e85e8 AudioCommon: move DPL2 decoding into Mixer 2017-06-03 16:53:59 -07:00
Michael Maltese e3531d17d7 Update free DSP ROM and coefficients to support GBA ucode
- coef: Explicitly set 23 different values that are used by GBA UCode,
  and tweaked overall parameters to more closely match those 23 values.
- irom: Moved a few functions to their proper places, updated BootUCode
  to configure DMA transfers using AX registers as well as IX registers
  (the GBA UCode uses this to do two sequential transfers in one call),
  and added partial functions used by GBA UCode.

All functions were reverse-engineered solely based off of observed
effects on the virtual machine: register states before-and-after, dmem
interactions, and DMA transfers. The specific coefficients were observed
being read from dmem, and must be exactly those values to function
properly. I have no knowledge of how the official ROM implements these
functions, or how it is implemented overall.

Tested with The Legend of Zelda: Four Swords Adventures, Final Fantasy
Crystal Chronicles, and Billy Hatcher and the Giant Egg (to download
ChuChu Rocket!).
2017-06-03 15:16:39 -07:00
Michael Maltese 3872437eac Add sample logs for GBA ucode register state/HW interactions 2017-06-03 15:16:39 -07:00
Michael Maltese 2267ddeb17 DSPAssembler: fix handling of P_REG1C
`P_REG1C` had the same value as `P_ACCL`, so was causing spurious errors
when used with ACCM registers. Gcdsptool (which calls this `P_ACCLM`)
gives it the value `P_REG | 0x1c10` instead, and handles errors in the
same block as other REG## enums.
2017-06-03 15:16:39 -07:00
Michael Maltese 7e869070e3 generate_coefs: separate type conversion and packing
This makes it easier to apply patches to the resulting binary before
writing it to a file.
2017-06-03 15:16:38 -07:00
Michael Maltese 040bddafa6 MainWindow: shutdown different input interfaces
`MainWindow` initializes a number of input interfaces but never shuts
them down. This was causing a crash-after-exit on macOS where the
ControllerInterface backend stores a `std::thread` object in a static
variable and only stops it when ControllerInterface::Shutdown is called.
2017-05-31 21:14:55 -07:00
Michael Maltese 8bbe4a0743 DolphinQt2: allow resizing RenderWidget/fix fullscreen 2017-05-31 21:14:41 -07:00
Michael Maltese 87a74ca3ae MappingButton: remove unused includes 2017-05-31 01:17:33 -07:00
Michael Maltese 046c6f468f MappingButton: derive from ElidedButton 2017-05-31 01:17:33 -07:00
Michael Maltese b378ffb4ec MappingButton: don't set text twice in constructor 2017-05-31 01:17:33 -07:00
Michael Maltese 07c90bed08 DolphinQt2: add QtUtils/ElidedButton 2017-05-31 01:17:33 -07:00
Michael Maltese 1a7210aa74 GameListModel: provide Qt::InitialSortOrderRole for sorting
Fixes regression where pixmap columns can't be sorted by default.
2017-05-29 17:32:40 -07:00
Michael Maltese 8bbc31e0a2 GameList: sort case-insensitively 2017-05-29 17:32:40 -07:00
Michael Maltese 051cbf1962 GameListModel: invert role-column choice tree 2017-05-29 17:32:40 -07:00
Michael Maltese 0cc88342d6 DolphinQt2: add indentation back to ControllerWindow 2017-05-29 17:29:04 -07:00
Michael Maltese cb235cf142 DolphinQt2: use GridLayout for ControllersWindow
FormLayout is not intended for this sort of dialog:

> QFormLayout is a convenience layout class that lays out its children
> in a two-column form. The left column consists of labels and the right
> column consists of "field" widgets (line editors, spin boxes, etc.).
2017-05-29 17:29:03 -07:00
Michael Maltese d416cbd9ed Add CubebUtils namespace and hook up cubeb logging 2017-05-27 18:28:57 -07:00
Michael Maltese 34ad1eb547 Externals: remove PortAudio 2017-05-27 18:28:57 -07:00
Michael Maltese 48d6168c99 EXI_DeviceMic: use Cubeb instead of PortAudio 2017-05-27 18:28:56 -07:00
Michael Maltese f6e1da0dc0 AudioCommon: add Cubeb backend 2017-05-27 18:28:56 -07:00
Michael Maltese 17f4413143 Externals/cubeb: add Visual Studio build files 2017-05-27 18:28:56 -07:00
Michael Maltese 812520cc65 Add cubeb@62871b2 to Externals/
Includes submodule sanitizers-cmake@f09151b
2017-05-27 18:28:56 -07:00
Michael Maltese c004b59100 DolphinQt2: replace icons with labels in controllers dialog
Icons without labels are bad for usability, so bring this back in line
with how DolphinWX does it.

Some reading:

- https://www.nngroup.com/articles/icon-usability/
  > Summary: A user’s understanding of an icon is based on previous
  > experience. Due to the absence of a standard usage for most icons,
  > text labels are necessary to communicate the meaning and reduce
  > ambiguity.
- http://uxmyths.com/post/715009009/myth-icons-enhance-usability
- http://edwardsanchez.me/blog/13589712
- https://uxdesign.cc/do-icons-need-labels-6cb4f4282c00
2017-05-26 20:09:51 -07:00
Michael Maltese a936afed9d DolphinQt2: hide GameList vertical header (the one on the left) 2017-05-26 17:43:57 -07:00
Michael Maltese 4e14a6bc96 DolphinQt2: reorder list columns to match DolphinWX 2017-05-26 17:41:35 -07:00
Michael Maltese c01c66ad4b DolphinQt2: remove unused GameList::TableDelegate 2017-05-26 17:40:51 -07:00
Michael Maltese e76f5d85b2 DolphinQt2: don't use custom delegate for GameList 2017-05-26 17:40:51 -07:00
Michael Maltese abaec0be8f Remove reference to d3dx12 license 2017-05-26 01:16:04 -07:00
Michael Maltese 00761a39c4 Remove Externals/d3dx12 2017-05-26 01:16:04 -07:00
Michael Maltese e041602416 CMake: remove references to D3D12
It's gone!
2017-05-26 01:16:04 -07:00
Michael Maltese 07a23f6924 Update ext-win-qt submodule for Qt 5.8
Accompanying PR for https://github.com/dolphin-emu/ext-win-qt/pull/3
2017-05-26 01:00:15 -07:00
Michael Maltese 3ca03373ae MSVC: define HAVE_FFMPEG 2017-05-26 00:53:58 -07:00
Michael Maltese 53acd25de4 Rename define HAVE_LIBAV->HAVE_FFMPEG 2017-05-26 00:53:58 -07:00
Michael Maltese 9dfd8bbf38 CMake: fix FindFFmpeg when ffmpeg isn't found 2017-05-26 00:53:58 -07:00
Michael Maltese d951d2e4c4 CMake: libav/ffmpeg cleanups
Use @Orphis's FindFFmpeg module from ppsspp:
https://github.com/hrydgard/ppsspp/commit/2149d3db7fb960d140bdee31a9f0f4837934127b

From that commit:

> This new module should be able to handle both libraries in the regular
> paths and fallback to pkg-config.
> It is also able to find dynamic libraries, not just static libraries.
> It will generate imported targets with the name FFmpeg::<lib> that you
> can use in your scripts.
2017-05-26 00:53:58 -07:00
Michael Maltese 974ada25e4 CMake: use RUNTIME_OUTPUT_DIRECTORY rather than setting OUTPUT_NAME each time 2017-05-22 00:19:14 -07:00
Michael Maltese 6d403d9ad4 CMake: specify unittests libs directly in target_link_libraries 2017-05-22 00:19:14 -07:00
Michael Maltese 8e57a0ff14 CMake: remove explicit platform libraries from UnitTests
They're not used directly, and any libraries that need them will pull
them in transitively.
2017-05-22 00:19:14 -07:00
Michael Maltese be2f4466e3 CMake: move unittests target to UnitTests 2017-05-22 00:19:14 -07:00
Michael Maltese ea35549e00 CMake: don't explictly create Tests/ directory 2017-05-22 00:19:13 -07:00
Michael Maltese 41fb6db6e3 CMake: remove extraneous TestUtils directory 2017-05-22 00:19:13 -07:00
Michael Maltese 87d64afe19 CMake: pass all srcs to add_test in ARGN 2017-05-22 00:19:13 -07:00
Michael Maltese 9d130b52f7 CMake: use unittests_stubhost object library 2017-05-22 00:19:13 -07:00
Michael Maltese a78ca46d9e CMake: use implicit target location in add_test 2017-05-22 00:19:13 -07:00
Michael Maltese 942cbd3c8d CMake: don't prefix test targets with Test_
The current prefixing makes it harder to build test executables directly
from the command line, since the target name breaks CMake convention and
doesn't match the name passed to `add_dolphin_test`. They all have "Test"
somewhere in the name anyways.
2017-05-22 00:19:13 -07:00
Michael Maltese a182c7f2a5 dsp_rom.ds: use org directive to pad out to correct size 2017-05-19 19:53:38 -07:00
Michael Maltese 8905b363cf dsp_rom.ds: use org directive instead of nops 2017-05-19 19:53:38 -07:00
Michael Maltese d9bffee73d dsp_rom.ds: fix trailing whitespace and line endings 2017-05-19 19:53:38 -07:00
Michael Maltese 1683c69fb7 DSPAssembler: add WARNPC directive from xkas (technically, from asar)
This adds the WARNPC directive from xkas/asar to complement the existing ORG
directive. A common useful idiom is "WARNPC 0xXXXX\nORG 0xXXXX," which only
seeks forward and raises an error if you've already written to that part
of the file.
2017-05-19 19:53:38 -07:00
Michael Maltese a4cb691058 DSPAssembler: make ORG directive correctly seek forward
The xkas assembler says about org: "You can seek forward and backward
into a file."
2017-05-19 19:53:38 -07:00
Michael Maltese f3c8291c26 DSPAssembler: remove temporary file 2017-05-19 19:53:38 -07:00
Michael Maltese b25babfbf3 GameSettings: Star Wars: The Clone Wars no longer requires DSP-LLE 2017-05-19 19:04:06 -07:00
Michael Maltese 2fad33cafe DSP-HLE: cleanup PushMail argument names 2017-05-19 19:04:06 -07:00
Michael Maltese 43c09c63d8 AX-HLE: delay sending interrupt when done processing command list
Fixes https://bugs.dolphin-emu.org/issues/10265 (Star Wars: The Clone
Wars hangs on loading screen with DSP-HLE and JIT Recompiler).

The Clone Wars hangs upon initial boot if this interrupt happens too
quickly after submitting a command list. When played in DSP-LLE, the
interrupt lags by about 160,000 cycles, though any value greater than or
equal to 814 will work. In other games, the lag can be as small as 50,000
cycles (in Metroid Prime) and as large as 718,092 cycles (in Tales of
Symphonia!).

All credit to @hthh, who put in a heroic(!) amount of detective work and
discovered that The Clone Wars tracks a "AXCommandListCycles" variable
which matches the aforementioned 160,000 cycles. It's initialized to ~2500
cycles for a minimal, empty command list, so that should be a safe number
for pretty much anything a game does (*crosses fingers*).
2017-05-19 19:04:06 -07:00
Michael Maltese 930c165c4e DSPHWInterface: cleanup gdsp_idma_in 2017-05-15 20:33:42 -07:00
Michael Maltese 5f68a0dcdd DSP: cleanup DumpDSPCode and remove temp file write 2017-05-15 15:11:09 -07:00
Michael Maltese 59c863329d DSP-LLE: calculate code CRC _before_ swapping endianness
- Makes DSP-LLE code checksums the same as those from DSP-HLE. I'm
  assuming DSP-HLE was doing it correctly, since there are numerous
  references to these pre-endian-swapped checksums (including in
  DSPHost.cpp itself).
- Fixes disassembly when dumping code from DSP-LLE, which was using the
  wrong endianness and giving totally bogus output.
- Reveals error messages of the format, "Bah! ReadAnnotatedAssembly
  couldn't find the file ../../docs/DSP/DSP_UC_AX_07F88145.txt," which
  seems to be intended behavior that was previously hidden.
2017-05-15 14:27:39 -07:00
Michael Maltese c67bae5491 DSP-HLE: use DumpDSPCode to de-duplicate logic (and gain disassembly)
This change centralizes all of the path handling and file writing logic
in DumpDSPCode. DSP-HLE also gains the feature of DSP-LLE to
automatically disassemble dumped code and write it to an accompanying
text file.
2017-05-15 02:38:51 -07:00
Michael Maltese f985e0faac DSP: remove unused DSPLLETools
With the relocation of DumpDSPCode to DSPCodeUtils, the only remaining
function in DSPLLETools is DumpCWCode. This function 1) is not used
anywhere (not even in DSPTool), 2) doesn't seem to really do anything,
and 3) has a single comment saying "TODO make this useful :p"
2017-05-15 02:35:56 -07:00
Michael Maltese e4c779de0b DSP: move DumpDSPCode from DSPLLETools to DSPCodeUtil
This code is useful outside of DSP-LLE, and I plan to modify DSP-HLE to
use it in a future commit.
2017-05-15 02:34:43 -07:00
Michael Maltese edb16cd399 DSP-LLE: dump code if m_DumpUCode instead of DEBUG
This change makes the behavior consistent with that of DSP-HLE.
2017-05-15 02:33:50 -07:00
Michael Maltese b14466b7e3 Zelda-HLE: set state to waiting when replacing ucode
Part 2/2 of a fix for using multiple GBAs in Four Swords Adventures.
2017-05-05 02:25:42 -07:00
Michael Maltese 01cc36693a Zelda-HLE: run pending commands when replacing ucode
Part 1/2 of a fix for using multiple GBAs in Four Swords Adventures.
2017-05-05 02:24:53 -07:00
Michael Maltese cd7af32e0b CMake: gtest already propagates include directories 2017-05-03 16:22:14 -07:00
Michael Maltese 9ac94d0135 CMake: don't look for shared Google Test
Google Test recommends not using a pre-compiled system copy[1] and
Debian and Ubuntu no longer distribute compiled packages.

This removes an unhelpful line from the CMake log: "Could NOT find GTest
(missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)."

[1]: https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#why-is-it-not-recommended-to-install-a-pre-compiled-copy-of-google-test-for-example-into-usrlocal
2017-05-03 15:29:29 -07:00
Michael Maltese 5230a8c996 CMake: only look for Bluez on Linux
Stops CMake from saying "BlueZ NOT found, disabling bluetooth support"
on other OSes. Windows, macOS, and Android support Bluetooth using other
libraries. I'm not sure if non-Linux, non-Android Unices (like FreeBSD)
need another message?
2017-05-03 15:15:47 -07:00
Michael Maltese 89eb019788 SignatureDB: fix prevented copy elision
Clang warning:

```
Source/Core/Core/PowerPC/SignatureDB/SignatureDB.cpp:22:17: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
    : m_handler(std::move(CreateFormatHandler(handler)))
                ^
Source/Core/Core/PowerPC/SignatureDB/SignatureDB.cpp:22:17: note: remove std::move call here
    : m_handler(std::move(CreateFormatHandler(handler)))
                ^~~~~~~~~~                            ~
```
2017-05-02 20:01:32 -07:00
Michael Maltese f04747e910 NANDImporter: fix printf warning
Fixes warning:

```
Source/Core/DiscIO/NANDImporter.cpp:55:17: warning: format specifies type 'unsigned long' but the argument has type 'u64' (aka 'unsigned long long') [-Wformat]
                file.GetSize(), NAND_BIN_SIZE);
                ^~~~~~~~~~~~~~
1 warning generated.

```
2017-05-02 15:13:46 -07:00
Michael Maltese b5223fb15f Jit64: fix braces warning in Jit_Integer
Fixes a warning:

```
Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp:54:45: warning: suggest braces around initialization of subobject [-Wmissing-braces]
  static const std::array<u8, 4> ovtable = {0, 0, XER_SO_MASK, XER_SO_MASK};
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                            {                             }
```
2017-05-02 14:30:28 -07:00
Michael Maltese 537fbf33a7 Remove HIDAPI Autotools build system and unused files 2017-04-27 02:41:00 -07:00
Michael Maltese 655ab9b4e2 CMake: clean up HIDAPI build 2017-04-27 02:41:00 -07:00
Michael Maltese 82d0f6edb2 FifoDataFile: static_assert that structs are right size 2017-04-25 17:43:37 -07:00
Michael Maltese 6a6bfa0dbb FifoPlayer: subsume FifoFileStruct.h into FifoDataFile.cpp
There's no reason for it to be in its own file, and it's confusing.
2017-04-25 17:36:36 -07:00
Michael Maltese f9a67fbf6f FifoFileStruct: replace unions with explicit padding 2017-04-25 17:36:30 -07:00
Michael Maltese b955805b2b CMake: remove DolphinWX $DOLPHIN_EXE abstraction 2017-04-25 17:18:21 -07:00
Michael Maltese bd4ffb680c CMake: don't make DolphinWX link to dl 2017-04-25 17:18:21 -07:00
Michael Maltese c214c29b01 CMake: DolphinWX cleanup 2017-04-25 17:18:20 -07:00
Michael Maltese 6e1940c404 CMake: don't globally include wxWidgets headers 2017-04-25 17:18:20 -07:00
Michael Maltese f4c0723387 CMake: move wxWidgets check_lib code into wxWidgets 2017-04-25 17:18:20 -07:00
Michael Maltese 6197d9622f CMake: move GTK+ check into wxWidgets 2017-04-25 17:18:20 -07:00
Michael Maltese 8e7648f42a CMake: modern-ize wxWidgets 2017-04-25 17:18:18 -07:00
Michael Maltese f7892faa80 CMake: remove artisanal wxWidgets version check 2017-04-25 09:35:42 -07:00
Michael Maltese 3158a5bc35 RenderBase: clean up UpdateDrawRectangle 2017-04-24 00:39:25 -07:00
Michael Maltese 4c5e283e75 WiimoteReal: init and destroy ScannerBackends in same thread
This fixes an error condition on macOS when HIDAPI calls
IOHIDManagerCreate and IOHIDManagerClose on different threads. The
error behavior is non-deterministic, but can cause EXC_BAD_ACCES and
kill the program.
2017-04-23 17:11:27 -07:00
Michael Maltese c538cdcd47 AudioCommon: set volume _after_ starting stream
Fixes an error with the CoreAudio backend, which apparently doesn't
allow you to set the volume before starting the stream:

```
59:31:087 AudioCommon/CoreAudioSoundStream.cpp:97 E[Audio]: error setting volume
```

This shouldn't cause any problems with other backends, since the mixer
starts with silence anyways.
2017-04-20 02:06:42 -07:00
Michael Maltese c6a90c95be Make EXIDEVICE_MEMORYCARDFOLDER the default for slot A
The average user doesn't care, and for users who mix NTSC and PAL games
it avoids the "Memory Card is formatted for another market" message. For
non-average users, it's probably fine to have save data as separate
files anyways.

Might need some interface/string changes to explain what GCI Folder is
and why it's the default?
2017-04-19 19:18:53 -07:00
Michael Maltese c63925dc21 AGL: small style fixes 2017-04-15 20:54:19 -07:00
Michael Maltese 4770e66811 AGL: refactor some functions 2017-04-15 20:53:47 -07:00
Michael Maltese 5298328cb1 Add headless support on macOS 2017-04-15 19:34:42 -07:00
Michael Maltese 05b4d14bf0 TextureConversionShader: fix syntax error
Fixes a situation where the following invalid GLSL code is generated:

```glsl
float3 texSample0 = texture(samp0, float3(uv0 + float2(0, 0) * sample_offset, 0.0)).rgb;
float3 texSample0 = floor(float3 texSample0 * 63.0) / 63.0;
float3 texSample1 = texture(samp0, float3(uv0 + float2(1, 0) * sample_offset, 0.0)).rgb;
float3 texSample1 = floor(float3 texSample1 * 63.0) / 63.0;
```
2017-04-12 14:23:25 -07:00
Michael Maltese 5b829163a3 CMake: turn on -fdiagnostics-color for Ninja builds
This PR attempts to turn on `-fdiagnostics-color` by default when using
the CMake Ninja generator.

Ninja effectively turns off colored messages by not running subcommands
in a pseudo-terminal. The Ninja maintainers have decided that using
pseudo-terminals has more downsides than upsides, but have helpfully
taught Ninja itself how to parse and remove color codes if its parent
isn't a (pseudo-)terminal.

Colored messages make it easier to read warnings and error messages in a
large build log, and are pretty.
2017-04-11 18:00:46 -07:00
Michael Maltese 1bd87f5a79 CachedInterpreter: fix HLEFunction argument 2017-04-07 17:54:59 -07:00
Michael Maltese cef5bd4a09 TextureCacheBase: remove duplicated variable
Fixes warning:

```
Source/Core/VideoCommon/TextureCacheBase.cpp:869:17: warning: declaration shadows a local variable [-Wshadow]
      const u8* tlut = &texMem[tlutaddr];
                ^
Source/Core/VideoCommon/TextureCacheBase.cpp:784:13: note: previous declaration is here
  const u8* tlut = &texMem[tlutaddr];
            ^
```
2017-04-06 13:52:42 -07:00
Michael Maltese d10d09ccc1 VideoCommon: rework anamorphic widescreen heuristic
Some widescreen hacks (see below) properly force anamorphic output, but
don't make the last projection in a frame 16:9, so Dolphin doesn't
display it correctly.

This changes the heuristic code to assume a frame is anamorphic based on
the total number of vertex flushes in 4:3 and 16:9 projections that
frame. It also adds a bit of "aspect ratio inertia" by making it harder
to switch aspect ratios, which takes care of aspect ratio flickering
that some games / widescreen hacks would be susceptible with the new
logic.

I've tested this on SSX Tricky's native anamorphic support, Tom Clancy's
Splinter Cell (it stayed in 4:3 the whole time), and on the following
widescreen hacks for which the heuristic doesn't currently work:

Paper Mario: The Thousand-Year Door (Gecko widescreen code from Nintendont)
C202F310 00000003
3DC08042 3DE03FD8
91EEF6D8 4E800020
60000000 00000000
04199598 4E800020
C200F500 00000004
3DE08082 3DC0402B
61CE12A2 91CFA1BC
60000000 387D015C
60000000 00000000
C200F508 00000004
3DE08082 3DC04063
61CEE8D3 91CFA1BC
60000000 7FC3F378
60000000 00000000

The Simpsons: Hit & Run (AR widescreen code from the wiki)
04004600 C002A604
04004604 C09F0014
04004608 FC002040
0400460C 4082000C
04004610 C002A608
04004614 EC630032
04004618 48220508
04041A5C 38600001
04224344 C002A60C
04224B1C 4BDDFAE4
044786B0 3FAAAAAB
04479F28 3FA33333
2017-04-05 17:23:16 -07:00